@lion/ui 0.19.1 → 0.20.0-menu-system.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 (348) hide show
  1. package/collapsible.js +1 -0
  2. package/components/button/src/LionButton.js +4 -0
  3. package/components/button/test-suites/LionButton.suite.js +1 -0
  4. package/components/calendar/src/LionCalendar.js +3 -1
  5. package/components/calendar/test/lion-calendar.test.js +47 -67
  6. package/components/collapsible/src/DisclosureMixin.js +313 -0
  7. package/components/collapsible/test-suites/DisclosureMixin.suite.js +30 -0
  8. package/components/collapsible/types/DisclosureMixinTypes.ts +48 -0
  9. package/components/combobox/test/lion-combobox.test.js +1 -0
  10. package/components/form-core/src/form-group/FormGroupMixin.js +7 -0
  11. package/components/form-core/src/registration/FormRegistrarMixin.js +11 -0
  12. package/components/form-core/test/FormControlMixin.test.js +1 -0
  13. package/components/form-core/test/validate/Validator.test.js +2 -0
  14. package/components/form-core/test-suites/ValidateMixin.suite.js +2 -0
  15. package/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.js +1 -0
  16. package/components/input-datepicker/src/localizeNamespaceLoader.js +1 -0
  17. package/components/input-datepicker/test/lion-input-datepicker.test.js +9 -19
  18. package/components/input-email/src/LionInputEmail.js +0 -2
  19. package/components/input-email/test/lion-input-email.test.js +0 -6
  20. package/components/input-file/src/validators.js +1 -31
  21. package/components/input-file/test/FileValidators.test.js +0 -31
  22. package/components/input-file/translations/bg.js +0 -1
  23. package/components/input-file/translations/cs.js +0 -1
  24. package/components/input-file/translations/de.js +0 -2
  25. package/components/input-file/translations/en.js +0 -1
  26. package/components/input-file/translations/es.js +0 -1
  27. package/components/input-file/translations/fr.js +0 -1
  28. package/components/input-file/translations/hu.js +0 -1
  29. package/components/input-file/translations/id.js +0 -1
  30. package/components/input-file/translations/it.js +0 -1
  31. package/components/input-file/translations/nl.js +0 -1
  32. package/components/input-file/translations/pl.js +0 -1
  33. package/components/input-file/translations/ro.js +0 -1
  34. package/components/input-file/translations/ru.js +0 -1
  35. package/components/input-file/translations/sk.js +0 -1
  36. package/components/input-file/translations/uk.js +0 -1
  37. package/components/input-file/translations/zh.js +0 -1
  38. package/components/input-tel/src/LionInputTel.js +1 -1
  39. package/components/input-tel/test-suites/LionInputTel.suite.js +0 -7
  40. package/components/localize/test/date/formatDate.test.js +1 -0
  41. package/components/menu/CHANGELOG.md +37 -0
  42. package/components/menu/README.md +335 -0
  43. package/components/menu/index.js +2 -0
  44. package/components/menu/lion-menu-overlay.js +3 -0
  45. package/components/menu/lion-menu.js +3 -0
  46. package/components/menu/lion-spinbutton.js +3 -0
  47. package/components/menu/lion-toolbar.js +3 -0
  48. package/components/menu/lion-tree.js +3 -0
  49. package/components/menu/package.json +46 -0
  50. package/components/menu/requirements.temp.md +12 -0
  51. package/components/menu/src/InteractiveListMixin.js +840 -0
  52. package/components/menu/src/LionMenu.js +250 -0
  53. package/components/menu/src/LionMenuHybrid.js +46 -0
  54. package/components/menu/src/LionMenuOverlay.js +155 -0
  55. package/components/menu/src/LionSpinbutton.js +213 -0
  56. package/components/menu/src/LionToolbar.js +94 -0
  57. package/components/menu/src/LionTree.js +52 -0
  58. package/components/menu/src/MoreButtonMenuMixin.js +278 -0
  59. package/components/menu/src/MultiLevelListMixin.js +311 -0
  60. package/components/menu/src/utils/isInView.js +26 -0
  61. package/components/menu/src/utils/listItemInteractions.js +124 -0
  62. package/components/menu/test/InteractiveListMixin.test.js +3 -0
  63. package/components/menu/test/MoreButtonMenuMixin.test.js +4 -0
  64. package/components/menu/test/MultiLevelListMixin.test.js +3 -0
  65. package/components/menu/test/lion-menu-hybrid.test.js +3 -0
  66. package/components/menu/test/lion-menu.test.js +11 -0
  67. package/components/menu/test/lion-toolbar.test.js +8 -0
  68. package/components/menu/test/lion-tree.test.js +7 -0
  69. package/components/menu/test-helpers/mimicKeyPress.js +9 -0
  70. package/components/menu/test-suites/InteractiveListMixin.suite.js +454 -0
  71. package/components/menu/test-suites/LionMenu.suite.js +113 -0
  72. package/components/menu/test-suites/LionMenuHybrid.suite.js +583 -0
  73. package/components/menu/test-suites/MoreButtonMenuMixin.suite.js +372 -0
  74. package/components/menu/test-suites/MultiLevelListMixin.suite.js +303 -0
  75. package/components/menu/types/InteractiveListMixinTypes.d.ts +84 -0
  76. package/components/navigation-bar/README.md +1 -0
  77. package/components/navigation-bar/src/LionNavigationBar.js +439 -0
  78. package/components/navigation-bar/src/types.js +41 -0
  79. package/components/overlays/NEXT.md +49 -0
  80. package/components/overlays/src/OverlayController.js +278 -110
  81. package/components/overlays/src/OverlayMixin.js +58 -11
  82. package/components/overlays/src/OverlaysManager.js +2 -2
  83. package/components/overlays/src/configurations/visibility-trigger-partials/withHoverInteraction.js +9 -41
  84. package/components/overlays/src/utils/adopt-styles.js +3 -2
  85. package/components/overlays/src/utils/get-focusable-elements.js +4 -0
  86. package/components/overlays/src/utils/is-equal-config.js +10 -6
  87. package/components/overlays/test/OverlayController.test.js +127 -14
  88. package/components/overlays/test/utils-tests/is-equal-config.test.js +1 -1
  89. package/components/overlays/test/withHoverInteraction.test.js +0 -28
  90. package/components/overlays/test-suites/OverlayMixin.suite.js +8 -8
  91. package/components/overlays/types/ArrowMixinTypes.ts +3 -1
  92. package/components/overlays/types/OverlayConfig.ts +20 -5
  93. package/components/overlays/types/OverlayMixinTypes.ts +2 -0
  94. package/components/select-rich/test/lion-select-rich.test.js +3 -0
  95. package/custom-elements.json +30458 -17734
  96. package/dist-types/components/button/src/LionButton.d.ts +1 -0
  97. package/dist-types/components/button/src/LionButton.d.ts.map +1 -1
  98. package/dist-types/components/button/test-suites/LionButton.suite.d.ts.map +1 -1
  99. package/dist-types/components/calendar/src/LionCalendar.d.ts.map +1 -1
  100. package/dist-types/components/calendar/test/lion-calendar.test.d.ts.map +1 -1
  101. package/dist-types/components/collapsible/src/DisclosureMixin.d.ts +3 -0
  102. package/dist-types/components/collapsible/src/DisclosureMixin.d.ts.map +1 -0
  103. package/dist-types/components/collapsible/test-suites/DisclosureMixin.suite.d.ts +2 -0
  104. package/dist-types/components/collapsible/test-suites/DisclosureMixin.suite.d.ts.map +1 -0
  105. package/dist-types/components/collapsible/types/DisclosureMixinTypes.d.ts +24 -0
  106. package/dist-types/components/collapsible/types/DisclosureMixinTypes.d.ts.map +1 -0
  107. package/dist-types/components/combobox/src/LionCombobox.d.ts +1 -1
  108. package/dist-types/components/dialog/src/LionDialog.d.ts +6 -2
  109. package/dist-types/components/dialog/src/LionDialog.d.ts.map +1 -1
  110. package/dist-types/components/form-core/src/form-group/FormGroupMixin.d.ts.map +1 -1
  111. package/dist-types/components/form-core/src/registration/FormRegistrarMixin.d.ts.map +1 -1
  112. package/dist-types/components/form-core/test-suites/ValidateMixin.suite.d.ts.map +1 -1
  113. package/dist-types/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.d.ts.map +1 -1
  114. package/dist-types/components/input-datepicker/src/LionInputDatepicker.d.ts +1 -1
  115. package/dist-types/components/input-datepicker/src/localizeNamespaceLoader.d.ts.map +1 -1
  116. package/dist-types/components/input-datepicker/test/lion-input-datepicker.test.d.ts.map +1 -1
  117. package/dist-types/components/input-email/src/LionInputEmail.d.ts.map +1 -1
  118. package/dist-types/components/input-file/src/validators.d.ts +0 -11
  119. package/dist-types/components/input-file/src/validators.d.ts.map +1 -1
  120. package/dist-types/components/input-file/translations/bg-BG.d.ts +0 -1
  121. package/dist-types/components/input-file/translations/bg.d.ts +0 -1
  122. package/dist-types/components/input-file/translations/cs-CZ.d.ts +0 -1
  123. package/dist-types/components/input-file/translations/cs.d.ts +0 -1
  124. package/dist-types/components/input-file/translations/de-DE.d.ts +0 -1
  125. package/dist-types/components/input-file/translations/de.d.ts +0 -1
  126. package/dist-types/components/input-file/translations/en-AU.d.ts +0 -1
  127. package/dist-types/components/input-file/translations/en-GB.d.ts +0 -1
  128. package/dist-types/components/input-file/translations/en-PH.d.ts +0 -1
  129. package/dist-types/components/input-file/translations/en-US.d.ts +0 -1
  130. package/dist-types/components/input-file/translations/en.d.ts +0 -1
  131. package/dist-types/components/input-file/translations/es-ES.d.ts +0 -1
  132. package/dist-types/components/input-file/translations/es.d.ts +0 -1
  133. package/dist-types/components/input-file/translations/fr-BE.d.ts +0 -1
  134. package/dist-types/components/input-file/translations/fr-FR.d.ts +0 -1
  135. package/dist-types/components/input-file/translations/fr.d.ts +0 -1
  136. package/dist-types/components/input-file/translations/hu-HU.d.ts +0 -1
  137. package/dist-types/components/input-file/translations/hu.d.ts +0 -1
  138. package/dist-types/components/input-file/translations/id-ID.d.ts +0 -1
  139. package/dist-types/components/input-file/translations/id.d.ts +0 -1
  140. package/dist-types/components/input-file/translations/it-IT.d.ts +0 -1
  141. package/dist-types/components/input-file/translations/it.d.ts +0 -1
  142. package/dist-types/components/input-file/translations/nl-BE.d.ts +0 -1
  143. package/dist-types/components/input-file/translations/nl-NL.d.ts +0 -1
  144. package/dist-types/components/input-file/translations/nl.d.ts +0 -1
  145. package/dist-types/components/input-file/translations/pl-PL.d.ts +0 -1
  146. package/dist-types/components/input-file/translations/pl.d.ts +0 -1
  147. package/dist-types/components/input-file/translations/ro-RO.d.ts +0 -1
  148. package/dist-types/components/input-file/translations/ro.d.ts +0 -1
  149. package/dist-types/components/input-file/translations/ru-RU.d.ts +0 -1
  150. package/dist-types/components/input-file/translations/ru.d.ts +0 -1
  151. package/dist-types/components/input-file/translations/sk-SK.d.ts +0 -1
  152. package/dist-types/components/input-file/translations/sk.d.ts +0 -1
  153. package/dist-types/components/input-file/translations/uk-UA.d.ts +0 -1
  154. package/dist-types/components/input-file/translations/uk.d.ts +0 -1
  155. package/dist-types/components/input-file/translations/zh-CN.d.ts +0 -1
  156. package/dist-types/components/input-file/translations/zh.d.ts +0 -1
  157. package/dist-types/components/input-tel/src/LionInputTel.d.ts.map +1 -1
  158. package/dist-types/components/input-tel/test-suites/LionInputTel.suite.d.ts.map +1 -1
  159. package/dist-types/components/menu/index.d.ts +3 -0
  160. package/dist-types/components/menu/index.d.ts.map +1 -0
  161. package/dist-types/components/menu/lion-menu-overlay.d.ts +2 -0
  162. package/dist-types/components/menu/lion-menu-overlay.d.ts.map +1 -0
  163. package/dist-types/components/menu/lion-menu.d.ts +2 -0
  164. package/dist-types/components/menu/lion-menu.d.ts.map +1 -0
  165. package/dist-types/components/menu/lion-spinbutton.d.ts +2 -0
  166. package/dist-types/components/menu/lion-spinbutton.d.ts.map +1 -0
  167. package/dist-types/components/menu/lion-toolbar.d.ts +2 -0
  168. package/dist-types/components/menu/lion-toolbar.d.ts.map +1 -0
  169. package/dist-types/components/menu/lion-tree.d.ts +2 -0
  170. package/dist-types/components/menu/lion-tree.d.ts.map +1 -0
  171. package/dist-types/components/menu/src/InteractiveListMixin.d.ts +617 -0
  172. package/dist-types/components/menu/src/InteractiveListMixin.d.ts.map +1 -0
  173. package/dist-types/components/menu/src/LionMenu.d.ts +635 -0
  174. package/dist-types/components/menu/src/LionMenu.d.ts.map +1 -0
  175. package/dist-types/components/menu/src/LionMenuHybrid.d.ts +19 -0
  176. package/dist-types/components/menu/src/LionMenuHybrid.d.ts.map +1 -0
  177. package/dist-types/components/menu/src/LionMenuOverlay.d.ts +1015 -0
  178. package/dist-types/components/menu/src/LionMenuOverlay.d.ts.map +1 -0
  179. package/dist-types/components/menu/src/LionSpinbutton.d.ts +58 -0
  180. package/dist-types/components/menu/src/LionSpinbutton.d.ts.map +1 -0
  181. package/dist-types/components/menu/src/LionToolbar.d.ts +8 -0
  182. package/dist-types/components/menu/src/LionToolbar.d.ts.map +1 -0
  183. package/dist-types/components/menu/src/LionTree.d.ts +447 -0
  184. package/dist-types/components/menu/src/LionTree.d.ts.map +1 -0
  185. package/dist-types/components/menu/src/MoreButtonMenuMixin.d.ts +39 -0
  186. package/dist-types/components/menu/src/MoreButtonMenuMixin.d.ts.map +1 -0
  187. package/dist-types/components/menu/src/MultiLevelListMixin.d.ts +503 -0
  188. package/dist-types/components/menu/src/MultiLevelListMixin.d.ts.map +1 -0
  189. package/dist-types/components/menu/src/utils/isInView.d.ts +9 -0
  190. package/dist-types/components/menu/src/utils/isInView.d.ts.map +1 -0
  191. package/dist-types/components/menu/src/utils/listItemInteractions.d.ts +48 -0
  192. package/dist-types/components/menu/src/utils/listItemInteractions.d.ts.map +1 -0
  193. package/dist-types/components/menu/test/InteractiveListMixin.test.d.ts +2 -0
  194. package/dist-types/components/menu/test/InteractiveListMixin.test.d.ts.map +1 -0
  195. package/dist-types/components/menu/test/MoreButtonMenuMixin.test.d.ts +2 -0
  196. package/dist-types/components/menu/test/MoreButtonMenuMixin.test.d.ts.map +1 -0
  197. package/dist-types/components/menu/test/MultiLevelListMixin.test.d.ts +2 -0
  198. package/dist-types/components/menu/test/MultiLevelListMixin.test.d.ts.map +1 -0
  199. package/dist-types/components/menu/test/lion-menu-hybrid.test.d.ts +2 -0
  200. package/dist-types/components/menu/test/lion-menu-hybrid.test.d.ts.map +1 -0
  201. package/dist-types/components/menu/test/lion-menu.test.d.ts +2 -0
  202. package/dist-types/components/menu/test/lion-menu.test.d.ts.map +1 -0
  203. package/dist-types/components/menu/test/lion-toolbar.test.d.ts +2 -0
  204. package/dist-types/components/menu/test/lion-toolbar.test.d.ts.map +1 -0
  205. package/dist-types/components/menu/test/lion-tree.test.d.ts +2 -0
  206. package/dist-types/components/menu/test/lion-tree.test.d.ts.map +1 -0
  207. package/dist-types/components/menu/test-helpers/mimicKeyPress.d.ts +7 -0
  208. package/dist-types/components/menu/test-helpers/mimicKeyPress.d.ts.map +1 -0
  209. package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts +14 -0
  210. package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts.map +1 -0
  211. package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts +9 -0
  212. package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts.map +1 -0
  213. package/dist-types/components/menu/test-suites/LionMenuHybrid.suite.d.ts +5 -0
  214. package/dist-types/components/menu/test-suites/LionMenuHybrid.suite.d.ts.map +1 -0
  215. package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts +14 -0
  216. package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts.map +1 -0
  217. package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts +11 -0
  218. package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts.map +1 -0
  219. package/dist-types/components/navigation-bar/src/LionNavigationBar.d.ts +238 -0
  220. package/dist-types/components/navigation-bar/src/LionNavigationBar.d.ts.map +1 -0
  221. package/dist-types/components/navigation-bar/src/types.d.ts +85 -0
  222. package/dist-types/components/navigation-bar/src/types.d.ts.map +1 -0
  223. package/dist-types/components/overlays/src/OverlayController.d.ts +24 -12
  224. package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
  225. package/dist-types/components/overlays/src/OverlayMixin.d.ts.map +1 -1
  226. package/dist-types/components/overlays/src/configurations/visibility-trigger-partials/withHoverInteraction.d.ts.map +1 -1
  227. package/dist-types/components/overlays/src/utils/get-focusable-elements.d.ts.map +1 -1
  228. package/dist-types/components/overlays/src/utils/is-equal-config.d.ts.map +1 -1
  229. package/dist-types/components/overlays/types/ArrowMixinTypes.d.ts.map +1 -1
  230. package/dist-types/components/overlays/types/OverlayConfig.d.ts +12 -2
  231. package/dist-types/components/overlays/types/OverlayConfig.d.ts.map +1 -1
  232. package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts +1 -0
  233. package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts.map +1 -1
  234. package/dist-types/components/select-rich/src/LionSelectRich.d.ts +11 -3
  235. package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
  236. package/dist-types/components/tooltip/src/LionTooltip.d.ts +1 -1
  237. package/dist-types/exports/define/lion-item.d.ts +2 -0
  238. package/dist-types/exports/define/lion-item.d.ts.map +1 -0
  239. package/dist-types/exports/define/lion-menu-overlay.d.ts +2 -0
  240. package/dist-types/exports/define/lion-menu-overlay.d.ts.map +1 -0
  241. package/dist-types/exports/define/lion-menu.d.ts +2 -0
  242. package/dist-types/exports/define/lion-menu.d.ts.map +1 -0
  243. package/dist-types/exports/define/lion-navigation-bar.d.ts +2 -0
  244. package/dist-types/exports/define/lion-navigation-bar.d.ts.map +1 -0
  245. package/dist-types/exports/define/lion-toolbar.d.ts +2 -0
  246. package/dist-types/exports/define/lion-toolbar.d.ts.map +1 -0
  247. package/dist-types/exports/define/lion-tree.d.ts +2 -0
  248. package/dist-types/exports/define/lion-tree.d.ts.map +1 -0
  249. package/dist-types/exports/input-file.d.ts +1 -1
  250. package/dist-types/exports/menu-test-suites.d.ts +4 -0
  251. package/dist-types/exports/menu-test-suites.d.ts.map +1 -0
  252. package/dist-types/exports/menu.d.ts +7 -0
  253. package/dist-types/exports/menu.d.ts.map +1 -0
  254. package/dist-types/exports/navigation-bar.d.ts +2 -0
  255. package/dist-types/exports/navigation-bar.d.ts.map +1 -0
  256. package/dist-types/exports/overlays.d.ts +3 -0
  257. package/dist-types/exports/overlays.d.ts.map +1 -1
  258. package/dist-types/tsconfig.tsbuildinfo +1 -1
  259. package/docs/components/checkbox-group/overview.md +2 -2
  260. package/docs/components/collapsible/overview.md +1 -1
  261. package/docs/components/combobox/api-table.md +21 -8
  262. package/docs/components/combobox/overview.md +1 -1
  263. package/docs/components/combobox/use-cases.md +1 -1
  264. package/docs/components/dialog/api-table.md +31 -6
  265. package/docs/components/dialog/overview.md +1 -1
  266. package/docs/components/fieldset/overview.md +5 -5
  267. package/docs/components/form/overview.md +3 -3
  268. package/docs/components/form/use-cases.md +2 -2
  269. package/docs/components/icon/use-cases.md +1 -1
  270. package/docs/components/input/overview.md +1 -1
  271. package/docs/components/input-amount/overview.md +3 -3
  272. package/docs/components/input-date/overview.md +3 -3
  273. package/docs/components/input-datepicker/api-table.md +21 -4
  274. package/docs/components/input-datepicker/overview.md +5 -5
  275. package/docs/components/input-email/api-table.md +1 -1
  276. package/docs/components/input-email/overview.md +2 -2
  277. package/docs/components/input-file/overview.md +1 -1
  278. package/docs/components/input-file/use-cases.md +0 -18
  279. package/docs/components/input-iban/overview.md +2 -2
  280. package/docs/components/input-range/overview.md +2 -2
  281. package/docs/components/input-stepper/overview.md +1 -1
  282. package/docs/components/input-tel/api-table.md +1 -1
  283. package/docs/components/input-tel/overview.md +1 -1
  284. package/docs/components/input-tel/use-cases.md +6 -6
  285. package/docs/components/input-tel-dropdown/api-table.md +1 -1
  286. package/docs/components/input-tel-dropdown/overview.md +1 -1
  287. package/docs/components/listbox/use-cases.md +1 -1
  288. package/docs/components/menu/api-table.md +460 -0
  289. package/docs/components/menu/applyMenuDemoStyles.js +173 -0
  290. package/docs/components/menu/extensions.md +262 -0
  291. package/docs/components/menu/index.md +13 -0
  292. package/docs/components/menu/overview.md +422 -0
  293. package/docs/components/menu/use-cases.md +77 -0
  294. package/docs/components/radio-group/overview.md +3 -3
  295. package/docs/components/select/use-cases.md +1 -1
  296. package/docs/components/select-rich/api-table.md +21 -5
  297. package/docs/components/select-rich/use-cases.md +2 -2
  298. package/docs/components/tabs/examples.md +1 -1
  299. package/docs/components/tooltip/api-table.md +36 -11
  300. package/docs/components/tooltip/use-cases.md +1 -34
  301. package/docs/fundamentals/index.md +4 -4
  302. package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
  303. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
  304. package/docs/fundamentals/rationales/accessibility.md +1 -1
  305. package/docs/fundamentals/systems/core/SlotMixin.md +1 -1
  306. package/docs/fundamentals/systems/core/overview.md +1 -1
  307. package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
  308. package/docs/fundamentals/systems/form/model-value.md +1 -1
  309. package/docs/fundamentals/systems/form/overview.md +28 -28
  310. package/docs/fundamentals/systems/form/validate.md +2 -2
  311. package/docs/fundamentals/systems/localize/overview.md +4 -4
  312. package/docs/fundamentals/systems/overlays/api-table.md +36 -34
  313. package/docs/fundamentals/systems/overlays/configuration.md +2 -2
  314. package/docs/fundamentals/systems/overlays/overview.md +5 -5
  315. package/docs/fundamentals/systems/overlays/use-cases.md +2 -2
  316. package/docs/fundamentals/tools/helpers/overview.md +1 -1
  317. package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
  318. package/docs/guides/how-to/create-a-custom-field.md +5 -5
  319. package/docs/guides/how-to/create-a-form.md +4 -4
  320. package/docs/guides/how-to/extend-a-native-input.md +2 -2
  321. package/docs/guides/how-to/index.md +1 -1
  322. package/docs/guides/index.md +8 -8
  323. package/docs/guides/principles/index.md +5 -5
  324. package/docs/guides/principles/styling.md +1 -1
  325. package/exports/collapsible.js +1 -0
  326. package/exports/define/lion-item.js +3 -0
  327. package/exports/define/lion-menu-overlay.js +3 -0
  328. package/exports/define/lion-menu.js +3 -0
  329. package/exports/define/lion-navigation-bar.js +3 -0
  330. package/exports/define/lion-toolbar.js +3 -0
  331. package/exports/define/lion-tree.js +3 -0
  332. package/exports/input-file.js +1 -5
  333. package/exports/menu-test-suites.js +4 -0
  334. package/exports/menu.js +7 -0
  335. package/exports/navigation-bar.js +1 -0
  336. package/exports/overlays.js +6 -0
  337. package/input-file.js +1 -5
  338. package/menu-test-suites.js +4 -0
  339. package/menu.js +7 -0
  340. package/navigation-bar.js +1 -0
  341. package/overlays.js +6 -0
  342. package/package.json +2 -2
  343. package/components/calendar/test-suites/LionCalendar.suite.js +0 -79
  344. package/components/input-datepicker/test-suites/LionInputDatepicker.suite.js +0 -35
  345. package/dist-types/components/calendar/test-suites/LionCalendar.suite.d.ts +0 -5
  346. package/dist-types/components/calendar/test-suites/LionCalendar.suite.d.ts.map +0 -1
  347. package/dist-types/components/input-datepicker/test-suites/LionInputDatepicker.suite.d.ts +0 -7
  348. package/dist-types/components/input-datepicker/test-suites/LionInputDatepicker.suite.d.ts.map +0 -1
package/collapsible.js CHANGED
@@ -1 +1,2 @@
1
1
  export { LionCollapsible } from './components/collapsible/src/LionCollapsible.js';
2
+ // export { DisclosureMixin } from '../components/collapsible/src/DisclosureMixin.js';
@@ -220,4 +220,8 @@ export class LionButton extends DisabledWithTabIndexMixin(LitElement) {
220
220
  this.click();
221
221
  }
222
222
  }
223
+
224
+ // we want to be able to identify LionButtons w/o instanceof (for perf (loose dep) and dual version support),
225
+ // so we use a static property for that that doesn't get renamed by minifiers
226
+ static ['_$isLionButton$'] = true;
223
227
  }
@@ -279,6 +279,7 @@ export function LionButtonSuite({ klass = LionButton } = {}) {
279
279
 
280
280
  sameProperties.forEach(property => {
281
281
  it(`has same value of the property "${property}" as in native button event`, () => {
282
+ // @ts-ignore - dynamic property access
282
283
  expect(lionButtonEvent[property]).to.equal(nativeButtonEvent[property]);
283
284
  });
284
285
  });
@@ -298,7 +298,7 @@ export class LionCalendar extends LocalizeMixin(LitElement) {
298
298
  this.__contentWrapperElement.addEventListener('click', this.__boundClickDateDelegation);
299
299
  this.__contentWrapperElement.addEventListener('focus', this.__boundFocusDateDelegation);
300
300
  this.__contentWrapperElement.addEventListener('blur', this.__boundBlurDateDelegation);
301
- this.__contentWrapperElement.addEventListener('keyup', this.__boundKeyboardNavigationEvent);
301
+ this.__contentWrapperElement.addEventListener('keydown', this.__boundKeyboardNavigationEvent);
302
302
  this.__eventsAdded = true;
303
303
  }
304
304
  }
@@ -928,6 +928,7 @@ export class LionCalendar extends LocalizeMixin(LitElement) {
928
928
  if (type !== 'Date') {
929
929
  tmpDate.setDate(1);
930
930
  }
931
+ // @ts-ignore - dynamic method access
931
932
  tmpDate[`set${type}`](tmpDate[`get${type}`]() + modify);
932
933
  // if we've reset the day count,
933
934
  // restore day count as best we can
@@ -935,6 +936,7 @@ export class LionCalendar extends LocalizeMixin(LitElement) {
935
936
  const maxDays = new Date(tmpDate.getFullYear(), tmpDate.getMonth() + 1, 0).getDate();
936
937
  tmpDate.setDate(Math.min(this.centralDate.getDate(), maxDays));
937
938
  }
939
+ // @ts-ignore - dynamic property access
938
940
  this[dateType] = tmpDate;
939
941
  }
940
942
 
@@ -4,10 +4,8 @@ import { localizeTearDown } from '@lion/ui/localize-test-helpers.js';
4
4
  import { expect, fixture as _fixture } from '@open-wc/testing';
5
5
  import sinon from 'sinon';
6
6
  import '@lion/ui/define/lion-calendar.js';
7
- import { sendKeys } from '@web/test-runner-commands';
8
7
  import { isSameDate } from '@lion/ui/calendar.js';
9
8
  import { CalendarObject, DayObject } from '@lion/ui/calendar-test-helpers.js';
10
- import { runCalendarSuite } from '../test-suites/LionCalendar.suite.js';
11
9
 
12
10
  /**
13
11
  * @typedef {import('../src/LionCalendar.js').LionCalendar} LionCalendar
@@ -15,16 +13,6 @@ import { runCalendarSuite } from '../test-suites/LionCalendar.suite.js';
15
13
  */
16
14
 
17
15
  const fixture = /** @type {(arg: TemplateResult) => Promise<LionCalendar>} */ (_fixture);
18
- /**
19
- * @param {HTMLElement} el
20
- * @returns {HTMLElement | null | undefined}
21
- */
22
- const getSelectedDateEl = el => el?.shadowRoot?.querySelector('.calendar__day-button[selected]');
23
- /**
24
- * @param {HTMLElement} el
25
- * @returns {void}
26
- */
27
- const focusSelectedDate = el => getSelectedDateEl(el)?.focus();
28
16
 
29
17
  describe('<lion-calendar>', () => {
30
18
  const localizeManager = getLocalizeManager();
@@ -306,14 +294,13 @@ describe('<lion-calendar>', () => {
306
294
  `);
307
295
  const elObj = new CalendarObject(el);
308
296
 
309
- focusSelectedDate(el);
310
- await sendKeys({ press: 'ArrowLeft' });
297
+ el.__contentWrapperElement?.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowLeft' }));
311
298
  await el.updateComplete;
312
299
  expect(elObj.activeMonth).to.equal('October');
313
300
  expect(elObj.activeYear).to.equal('2000');
314
301
  expect(elObj.focusedDayObj?.monthday).to.equal(11);
315
302
 
316
- await sendKeys({ press: 'Enter' });
303
+ el.__contentWrapperElement?.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter' }));
317
304
  await el.updateComplete;
318
305
  expect(isSameDate(/** @type {Date} */ (el.selectedDate), new Date('2000/10/12'))).to.be.true;
319
306
  expect(dateChangedSpy.called).to.equal(false);
@@ -1133,14 +1120,16 @@ describe('<lion-calendar>', () => {
1133
1120
  expect(elObj.activeMonth).to.equal('January');
1134
1121
  expect(elObj.activeYear).to.equal('2001');
1135
1122
 
1136
- focusSelectedDate(el);
1137
- await sendKeys({ press: 'PageUp' });
1138
-
1123
+ el.__contentWrapperElement?.dispatchEvent(
1124
+ new KeyboardEvent('keydown', { key: 'PageUp' }),
1125
+ );
1139
1126
  await el.updateComplete;
1140
1127
  expect(elObj.activeMonth).to.equal('December');
1141
1128
  expect(elObj.activeYear).to.equal('2000');
1142
1129
 
1143
- await sendKeys({ press: 'PageDown' });
1130
+ el.__contentWrapperElement?.dispatchEvent(
1131
+ new KeyboardEvent('keydown', { key: 'PageDown' }),
1132
+ );
1144
1133
  await el.updateComplete;
1145
1134
  expect(elObj.activeMonth).to.equal('January');
1146
1135
  expect(elObj.activeYear).to.equal('2001');
@@ -1150,36 +1139,20 @@ describe('<lion-calendar>', () => {
1150
1139
  const el = await fixture(html`
1151
1140
  <lion-calendar .selectedDate="${new Date('2001/01/02')}"></lion-calendar>
1152
1141
  `);
1153
- focusSelectedDate(el);
1154
-
1155
1142
  const elObj = new CalendarObject(el);
1156
1143
  expect(elObj.activeMonth).to.equal('January');
1157
1144
  expect(elObj.activeYear).to.equal('2001');
1158
1145
 
1159
- await sendKeys({
1160
- down: 'Alt',
1161
- });
1162
- await sendKeys({
1163
- press: 'PageDown',
1164
- });
1165
- await sendKeys({
1166
- up: 'Alt',
1167
- });
1168
-
1146
+ el.__contentWrapperElement?.dispatchEvent(
1147
+ new KeyboardEvent('keydown', { key: 'PageDown', altKey: true }),
1148
+ );
1169
1149
  await el.updateComplete;
1170
- focusSelectedDate(el);
1171
1150
  expect(elObj.activeMonth).to.equal('January');
1172
1151
  expect(elObj.activeYear).to.equal('2002');
1173
1152
 
1174
- await sendKeys({
1175
- down: 'Alt',
1176
- });
1177
- await sendKeys({
1178
- press: 'PageUp',
1179
- });
1180
- await sendKeys({
1181
- up: 'Alt',
1182
- });
1153
+ el.__contentWrapperElement?.dispatchEvent(
1154
+ new KeyboardEvent('keydown', { key: 'PageUp', altKey: true }),
1155
+ );
1183
1156
  await el.updateComplete;
1184
1157
  expect(elObj.activeMonth).to.equal('January');
1185
1158
  expect(elObj.activeYear).to.equal('2001');
@@ -1192,8 +1165,9 @@ describe('<lion-calendar>', () => {
1192
1165
  `);
1193
1166
  const elObj = new CalendarObject(el);
1194
1167
 
1195
- focusSelectedDate(el);
1196
- await sendKeys({ press: 'ArrowDown' });
1168
+ el.__contentWrapperElement?.dispatchEvent(
1169
+ new KeyboardEvent('keydown', { key: 'ArrowDown' }),
1170
+ );
1197
1171
  await el.updateComplete;
1198
1172
  expect(elObj.focusedDayObj?.monthday).to.equal(2 + 7);
1199
1173
  });
@@ -1204,8 +1178,9 @@ describe('<lion-calendar>', () => {
1204
1178
  `);
1205
1179
  const elObj = new CalendarObject(el);
1206
1180
 
1207
- focusSelectedDate(el);
1208
- await sendKeys({ press: 'ArrowUp' });
1181
+ el.__contentWrapperElement?.dispatchEvent(
1182
+ new KeyboardEvent('keydown', { key: 'ArrowUp' }),
1183
+ );
1209
1184
  await el.updateComplete;
1210
1185
  expect(elObj.focusedDayObj?.monthday).to.equal(26); // of month before
1211
1186
  });
@@ -1217,8 +1192,9 @@ describe('<lion-calendar>', () => {
1217
1192
  `);
1218
1193
  const elObj = new CalendarObject(el);
1219
1194
 
1220
- focusSelectedDate(el);
1221
- await sendKeys({ press: 'ArrowLeft' });
1195
+ el.__contentWrapperElement?.dispatchEvent(
1196
+ new KeyboardEvent('keydown', { key: 'ArrowLeft' }),
1197
+ );
1222
1198
  await el.updateComplete;
1223
1199
  expect(elObj.focusedDayObj?.monthday).to.equal(12 - 1);
1224
1200
  });
@@ -1230,8 +1206,9 @@ describe('<lion-calendar>', () => {
1230
1206
  `);
1231
1207
  const elObj = new CalendarObject(el);
1232
1208
 
1233
- focusSelectedDate(el);
1234
- await sendKeys({ press: 'ArrowRight' });
1209
+ el.__contentWrapperElement?.dispatchEvent(
1210
+ new KeyboardEvent('keydown', { key: 'ArrowRight' }),
1211
+ );
1235
1212
  await el.updateComplete;
1236
1213
  expect(elObj.focusedDayObj?.monthday).to.equal(12 + 1);
1237
1214
  });
@@ -1247,8 +1224,9 @@ describe('<lion-calendar>', () => {
1247
1224
  `);
1248
1225
  const elObj = new CalendarObject(el);
1249
1226
 
1250
- focusSelectedDate(el);
1251
- await sendKeys({ press: 'ArrowRight' });
1227
+ el.__contentWrapperElement?.dispatchEvent(
1228
+ new KeyboardEvent('keydown', { key: 'ArrowRight' }),
1229
+ );
1252
1230
  await el.updateComplete;
1253
1231
  expect(elObj.focusedDayObj?.monthday).to.equal(3);
1254
1232
  });
@@ -1260,8 +1238,9 @@ describe('<lion-calendar>', () => {
1260
1238
  const elObj = new CalendarObject(el);
1261
1239
  expect(elObj.centralDayObj?.weekdayNameShort).to.equal('Sat');
1262
1240
 
1263
- focusSelectedDate(el);
1264
- await sendKeys({ press: 'ArrowRight' });
1241
+ el.__contentWrapperElement?.dispatchEvent(
1242
+ new KeyboardEvent('keydown', { key: 'ArrowRight' }),
1243
+ );
1265
1244
  await el.updateComplete;
1266
1245
  expect(elObj.focusedDayObj?.monthday).to.equal(6);
1267
1246
  expect(elObj.focusedDayObj?.weekdayNameShort).to.equal('Sun');
@@ -1274,8 +1253,9 @@ describe('<lion-calendar>', () => {
1274
1253
  const elObj = new CalendarObject(el);
1275
1254
  expect(elObj.centralDayObj?.weekdayNameShort).to.equal('Sun');
1276
1255
 
1277
- focusSelectedDate(el);
1278
- await sendKeys({ press: 'ArrowLeft' });
1256
+ el.__contentWrapperElement?.dispatchEvent(
1257
+ new KeyboardEvent('keydown', { key: 'ArrowLeft' }),
1258
+ );
1279
1259
  await el.updateComplete;
1280
1260
  expect(elObj.focusedDayObj?.monthday).to.equal(5);
1281
1261
  expect(elObj.focusedDayObj?.weekdayNameShort).to.equal('Sat');
@@ -1289,8 +1269,9 @@ describe('<lion-calendar>', () => {
1289
1269
  expect(elObj.activeMonth).to.equal('December');
1290
1270
  expect(elObj.activeYear).to.equal('2000');
1291
1271
 
1292
- focusSelectedDate(el);
1293
- await sendKeys({ press: 'ArrowRight' });
1272
+ el.__contentWrapperElement?.dispatchEvent(
1273
+ new KeyboardEvent('keydown', { key: 'ArrowRight' }),
1274
+ );
1294
1275
  await el.updateComplete;
1295
1276
  expect(elObj.activeMonth).to.equal('January');
1296
1277
  expect(elObj.activeYear).to.equal('2001');
@@ -1305,8 +1286,9 @@ describe('<lion-calendar>', () => {
1305
1286
  expect(elObj.activeMonth).to.equal('January');
1306
1287
  expect(elObj.activeYear).to.equal('2001');
1307
1288
 
1308
- focusSelectedDate(el);
1309
- await sendKeys({ press: 'ArrowLeft' });
1289
+ el.__contentWrapperElement?.dispatchEvent(
1290
+ new KeyboardEvent('keydown', { key: 'ArrowLeft' }),
1291
+ );
1310
1292
  await el.updateComplete;
1311
1293
  expect(elObj.activeMonth).to.equal('December');
1312
1294
  expect(elObj.activeYear).to.equal('2000');
@@ -1321,8 +1303,9 @@ describe('<lion-calendar>', () => {
1321
1303
  expect(elObj.activeMonth).to.equal('December');
1322
1304
  expect(elObj.activeYear).to.equal('2000');
1323
1305
 
1324
- focusSelectedDate(el);
1325
- await sendKeys({ press: 'ArrowDown' });
1306
+ el.__contentWrapperElement?.dispatchEvent(
1307
+ new KeyboardEvent('keydown', { key: 'ArrowDown' }),
1308
+ );
1326
1309
  await el.updateComplete;
1327
1310
  expect(elObj.activeMonth).to.equal('January');
1328
1311
  expect(elObj.activeYear).to.equal('2001');
@@ -1337,8 +1320,9 @@ describe('<lion-calendar>', () => {
1337
1320
  expect(elObj.activeMonth).to.equal('January');
1338
1321
  expect(elObj.activeYear).to.equal('2001');
1339
1322
 
1340
- focusSelectedDate(el);
1341
- await sendKeys({ press: 'ArrowUp' });
1323
+ el.__contentWrapperElement?.dispatchEvent(
1324
+ new KeyboardEvent('keydown', { key: 'ArrowUp' }),
1325
+ );
1342
1326
  await el.updateComplete;
1343
1327
  expect(elObj.activeMonth).to.equal('December');
1344
1328
  expect(elObj.activeYear).to.equal('2000');
@@ -1675,8 +1659,4 @@ describe('<lion-calendar>', () => {
1675
1659
  expect(el).not.to.be.displayed;
1676
1660
  });
1677
1661
  });
1678
-
1679
- describe('Run suite', () => {
1680
- runCalendarSuite();
1681
- });
1682
1662
  });
@@ -0,0 +1,313 @@
1
+ /**
2
+ * @typedef {import('../types/DisclosureMixinTypes.js').DisclosureHost} DisclosureHost
3
+ * @typedef {import('../types/DisclosureMixinTypes.js').DisclosureMixin} DisclosureMixin
4
+ */
5
+
6
+ // /**
7
+ // * @type {DisclosureMixin}
8
+ // */
9
+ // const DisclosureMixinImplementation = superclass =>
10
+ // // @ts-ignore https://github.com/microsoft/TypeScript/issues/36821#issuecomment-588375051
11
+ // class DisclosureMixin extends superclass {
12
+ // /** @type {any} */
13
+ // static get properties() {
14
+ // return {
15
+ // opened: { type: Boolean, reflect: true },
16
+ // handleFocus: { type: Boolean, attribute: 'handle-focus' },
17
+ // invokerInteraction: { type: String, attribute: 'invoker-interaction' },
18
+ // };
19
+ // }
20
+
21
+ // /**
22
+ // * @param {Element} focusableElOrWrapper
23
+ // * @returns {Element|null}
24
+ // */
25
+ // static _getFocusableInvokerEl(focusableElOrWrapper) {
26
+ // // return focusableElOrWrapper;
27
+ // return (
28
+ // focusableElOrWrapper &&
29
+ // (focusableElOrWrapper.hasAttribute('tabindex') || focusableElOrWrapper.tagName === 'BUTTON'
30
+ // ? focusableElOrWrapper
31
+ // : focusableElOrWrapper.querySelector('[role=button], button'))
32
+ // );
33
+ // }
34
+
35
+ // get _invokerNode() {
36
+ // const ctor = this.constructor;
37
+ // if (!this.__invokerNode) {
38
+ // const slottedNode = Array.from(this.children).find(child => child.slot === 'invoker');
39
+ // if (slottedNode) {
40
+ // this.__invokerNode = ctor._getFocusableInvokerEl(slottedNode);
41
+ // } else {
42
+ // this.__invokerNode =
43
+ // this.previousElementSibling?.hasAttribute('data-invoker') &&
44
+ // ctor._getFocusableInvokerEl(this.previousElementSibling);
45
+ // }
46
+ // }
47
+ // return this.__invokerNode;
48
+ // }
49
+
50
+ // get _contentNode() {
51
+ // if (!this._cachedOverlayContentNode) {
52
+ // this._cachedOverlayContentNode = Array.from(this.children).find(
53
+ // child => child.slot === 'content',
54
+ // );
55
+ // }
56
+ // return this._cachedOverlayContentNode;
57
+ // }
58
+
59
+ // constructor() {
60
+ // super();
61
+ // this.opened = false;
62
+ // /**
63
+ // * @type {'click'|'hover'}
64
+ // */
65
+ // this.invokerInteraction = 'click';
66
+ // /**
67
+ // * Puts focus on `_contentNode` on open and on `_invokerNode` on close.
68
+ // * @type {Boolean}
69
+ // */
70
+ // this.handleFocus = false;
71
+ // this.__disclosureNeedsSetup = true;
72
+
73
+ // this.toggle = this.toggle.bind(this);
74
+ // this.open = this.open.bind(this);
75
+ // this.close = this.close.bind(this);
76
+
77
+ // this.__handleAnimateComplete = this.__handleAnimateComplete.bind(this);
78
+
79
+ // this.__onInvokerMouseenter = this.__onInvokerMouseenter.bind(this);
80
+ // this.__onContentMouseenter = this.__onContentMouseenter.bind(this);
81
+ // this.__onInvokerMouseleave = this.__onInvokerMouseleave.bind(this);
82
+ // this.__onContentMouseleave = this.__onContentMouseleave.bind(this);
83
+ // }
84
+
85
+ // connectedCallback() {
86
+ // super.connectedCallback();
87
+ // // we do a setup after every connectedCallback as firstUpdated will only be called once
88
+ // this.__disclosureNeedsSetup = true;
89
+ // this.updateComplete.then(() => {
90
+ // if (this.__disclosureNeedsSetup) {
91
+ // this._setupDisclosure();
92
+ // }
93
+ // this.__disclosureNeedsSetup = false;
94
+ // });
95
+ // this.__setupAnimation();
96
+ // }
97
+
98
+ // disconnectedCallback() {
99
+ // super.disconnectedCallback();
100
+ // this._teardownDisclosure();
101
+ // this.__teardownAnimation();
102
+ // }
103
+
104
+ // /**
105
+ // * @overridable
106
+ // */
107
+ // _setupDisclosure() {
108
+ // console.log('_setupDisclosure', this.level);
109
+
110
+ // this._setupOpenCloseListeners();
111
+ // }
112
+
113
+ // /**
114
+ // * @overridable
115
+ // */
116
+ // _teardownDisclosure() {
117
+ // this._teardownOpenCloseListeners();
118
+ // }
119
+
120
+ // /**
121
+ // * @overridable
122
+ // */
123
+ // _setupOpenCloseListeners() {
124
+ // console.log('setup listeners', this.level);
125
+ // if (!this._invokerNode) {
126
+ // return;
127
+ // }
128
+
129
+ // const interactions = this.invokerInteraction.split(' ');
130
+
131
+ // if (interactions.includes('hover')) {
132
+ // this._invokerNode.addEventListener('mouseenter', this.__onInvokerMouseenter);
133
+ // this._contentNode?.addEventListener('mouseenter', this.__onContentMouseenter);
134
+ // this._invokerNode.addEventListener('mouseleave', this.__onInvokerMouseleave);
135
+ // this._contentNode?.addEventListener('mouseleave', this.__onContentMouseleave);
136
+ // }
137
+ // if (interactions.includes('click')) {
138
+ // this._invokerNode.addEventListener('click', this.toggle);
139
+ // }
140
+ // }
141
+
142
+ // __onInvokerMouseenter() {
143
+ // this.__invokerHover = true;
144
+ // this.open();
145
+ // }
146
+
147
+ // __onContentMouseenter() {
148
+ // this.__contentHover = true;
149
+ // console.log('this.__contentHover', this.__contentHover);
150
+ // this.open();
151
+ // }
152
+
153
+ // __onInvokerMouseleave() {
154
+ // setTimeout(() => {
155
+ // if (!this.__contentHover) {
156
+ // this.close();
157
+ // }
158
+ // });
159
+ // this.__invokerHover = false;
160
+ // }
161
+
162
+ // __onContentMouseleave() {
163
+ // setTimeout(() => {
164
+ // if (!this.__invokerHover) {
165
+ // this.close();
166
+ // }
167
+ // });
168
+ // this.__contentHover = false;
169
+ // }
170
+
171
+ // /**
172
+ // * @overridable
173
+ // */
174
+ // _teardownOpenCloseListeners() {
175
+ // if (!this._invokerNode) {
176
+ // return;
177
+ // }
178
+
179
+ // this._invokerNode.removeEventListener('mouseenter', this.open);
180
+ // this._invokerNode.removeEventListener('mouseleave', this.close);
181
+ // this._contentNode?.removeEventListener('mouseenter', this.open);
182
+ // this._contentNode?.removeEventListener('mouseleave', this.close);
183
+
184
+ // // console.log(this, 'removetCLick');
185
+
186
+ // this._invokerNode.removeEventListener('click', this.toggle);
187
+ // }
188
+
189
+ // // TODO: fire event on updated?
190
+ // /**
191
+ // * @override
192
+ // * @param {string} name
193
+ // * @param {any} oldValue
194
+ // */
195
+ // requestUpdate(name, oldValue) {
196
+ // super.requestUpdate(name, oldValue);
197
+ // if (name === 'opened') {
198
+ // this.dispatchEvent(new Event('opened-changed'));
199
+ // }
200
+ // }
201
+
202
+ // /**
203
+ // * @param {import('lit-element').PropertyValues } changedProperties
204
+ // */
205
+ // updated(changedProperties) {
206
+ // super.updated(changedProperties);
207
+
208
+ // if (changedProperties.has('opened')) {
209
+ // this._onOpenedChanged();
210
+ // }
211
+ // }
212
+
213
+ // /**
214
+ // * @param {import('lit-element').PropertyValues } changedProperties
215
+ // */
216
+ // firstUpdated(changedProperties) {
217
+ // super.firstUpdated(changedProperties);
218
+ // this._onOpenedChanged();
219
+
220
+ // if (this.handleFocus && !this._contentNode?.hasAttribute('tabindex')) {
221
+ // this._contentNode?.setAttribute('tabindex', '-1');
222
+ // }
223
+ // }
224
+
225
+ // /**
226
+ // * @overridable
227
+ // */
228
+ // async _onOpenedChanged() {
229
+ // this._invokerNode.setAttribute('aria-expanded', `${this.opened}`);
230
+
231
+ // if (this.opened) {
232
+ // this._contentNode.style.setProperty('display', '');
233
+ // await this._showAnimation({ contentNode: this._contentNode });
234
+ // this._onDisclosureShow();
235
+ // } else {
236
+ // this._onDisclosureHide();
237
+ // await this._hideAnimation({ contentNode: this._contentNode });
238
+ // this._contentNode.style.setProperty('display', 'none');
239
+ // }
240
+ // }
241
+
242
+ // _onDisclosureShow() {
243
+ // // if (this.checkedIndex != null) {
244
+ // // this.activeIndex = this.checkedIndex;
245
+ // // }
246
+
247
+ // if (this.handleFocus) {
248
+ // this._contentNode.focus();
249
+ // }
250
+ // }
251
+
252
+ // _onDisclosureHide() {
253
+ // if (this.handleFocus) {
254
+ // this._invokerNode.focus();
255
+ // }
256
+ // }
257
+
258
+ // /**
259
+ // * Show animation implementation in sub-classer.
260
+ // * @param {{ contentNode: HTMLElement; }} cfg
261
+ // */
262
+ // // eslint-disable-next-line class-methods-use-this, no-empty-function
263
+ // async _showAnimation(cfg) {
264
+ // this._refreshAnimateCompletePromise();
265
+ // }
266
+
267
+ // /**
268
+ // * Hide animation implementation in sub-classer.
269
+ // * @param {{ contentNode: HTMLElement; }} cfg
270
+ // */
271
+ // // eslint-disable-next-line class-methods-use-this, no-empty-function
272
+ // async _hideAnimation(cfg) {
273
+ // this._refreshAnimateCompletePromise();
274
+ // }
275
+
276
+ // _refreshAnimateCompletePromise() {
277
+ // this._animateComplete = new Promise(resolve => {
278
+ // // Note that when a lib like GSAP is used, neither 'transitionend' or 'animationend' will be called.
279
+ // // In such a case, a subclasser needs to resolve this pending promise by calling this method
280
+ // this._resolveAnimateComplete = resolve;
281
+ // });
282
+ // }
283
+
284
+ // __setupAnimation() {
285
+ // this._contentNode.addEventListener('transitionend', this.__handleAnimateComplete);
286
+ // this._contentNode.addEventListener('animationend', this.__handleAnimateComplete);
287
+ // }
288
+
289
+ // __teardownAnimation() {
290
+ // this._contentNode.removeEventListener('transitionend', this.__handleAnimateComplete);
291
+ // this._contentNode.removeEventListener('animationend', this.__handleAnimateComplete);
292
+ // }
293
+
294
+ // __handleAnimateComplete() {
295
+ // if (typeof this._resolveAnimateComplete === 'function') {
296
+ // this._resolveAnimateComplete();
297
+ // }
298
+ // }
299
+
300
+ // toggle() {
301
+ // // console.log('toggul', this);
302
+ // this.opened = !this.opened;
303
+ // }
304
+
305
+ // open() {
306
+ // this.opened = true;
307
+ // }
308
+
309
+ // close() {
310
+ // this.opened = false;
311
+ // }
312
+ // };
313
+ // export const DisclosureMixin = dedupeMixin(DisclosureMixinImplementation);
@@ -0,0 +1,30 @@
1
+ // import { LitElement } from 'lit';
2
+ // import { expect, html, fixture as _fixture, unsafeStatic, defineCE } from '@open-wc/testing';
3
+ // import { DisclosureMixin } from '../src/DisclosureMixin.js';
4
+
5
+ // import '@lion/ui/define/lion-menu.js';
6
+ // import '@lion/ui/define/lion-item.js';
7
+
8
+ // class DisclosureClass extends DisclosureMixin(LitElement) {}
9
+
10
+ // /**
11
+ // * @typedef {import('lit').TemplateResult} TemplateResult
12
+ // */
13
+
14
+ // const fixture = /** @type {(arg: TemplateResult) => Promise<LionMenu>} */ (_fixture);
15
+
16
+ // /**
17
+ // * @param { {tagString?:string, itemTagString?:string} } [customConfig]
18
+ // */
19
+ // export function runDisclosureMixinSuite(customConfig = {}) {
20
+ // const cfg = {
21
+ // tagString: 'lion-menu',
22
+ // ...customConfig,
23
+ // };
24
+
25
+ // const tagString = cfg.tagString || defineCE(DisclosureClass);
26
+ // const tag = unsafeStatic(tagString);
27
+
28
+ // describe('DisclosureMixin', () => {
29
+ // });
30
+ // }