@xplortech/apollo-core 2.9.0 → 2.11.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 (331) hide show
  1. package/.typings/apollo-components.html-data.json +55 -14
  2. package/build/style.css +2338 -1902
  3. package/dist/apollo-core/apollo-core.css +26 -24
  4. package/dist/apollo-core/apollo-core.esm.js +1 -1
  5. package/dist/apollo-core/{p-6a15f1e0.entry.js → p-048fdde0.entry.js} +1 -1
  6. package/dist/apollo-core/{p-34438721.entry.js → p-0abc496e.entry.js} +1 -1
  7. package/dist/apollo-core/p-1442c052.entry.js +1 -0
  8. package/dist/apollo-core/{p-3bb14840.entry.js → p-1e498763.entry.js} +1 -1
  9. package/dist/apollo-core/p-26c3a508.entry.js +1 -0
  10. package/dist/apollo-core/{p-36ba29da.entry.js → p-3b8639b7.entry.js} +1 -1
  11. package/dist/apollo-core/p-4ce52107.entry.js +1 -0
  12. package/dist/apollo-core/p-6710fb29.entry.js +1 -0
  13. package/dist/apollo-core/p-7e622809.entry.js +1 -0
  14. package/dist/apollo-core/p-87068144.entry.js +1 -0
  15. package/dist/apollo-core/p-BUgtURvw.js +1 -0
  16. package/dist/apollo-core/p-CK3_k8jD.js +1 -0
  17. package/dist/apollo-core/p-CXkZUm1c.js +2 -0
  18. package/dist/apollo-core/p-a3b4820a.entry.js +1 -0
  19. package/dist/apollo-core/p-b2d6dd0e.entry.js +1 -0
  20. package/dist/apollo-core/{p-ca127ee8.entry.js → p-bd2249ef.entry.js} +1 -1
  21. package/dist/apollo-core/p-c96b7957.entry.js +1 -0
  22. package/dist/apollo-core/p-d6be63cd.entry.js +1 -0
  23. package/dist/apollo-core/{p-b61d7952.entry.js → p-ddf76cee.entry.js} +1 -1
  24. package/dist/apollo-core/p-f0554edd.entry.js +1 -0
  25. package/dist/cjs/apollo-core.cjs.js +3 -3
  26. package/dist/cjs/{index-BQ97-AWw.js → index-BaXVr8ux.js} +40 -9
  27. package/dist/cjs/lifecycle-Bf3QwiVa.js +70 -0
  28. package/dist/cjs/loader.cjs.js +2 -2
  29. package/dist/cjs/package.json +3 -0
  30. package/dist/cjs/v4-_2BfiRUa.js +52 -0
  31. package/dist/cjs/xpl-accordion.cjs.entry.js +3 -3
  32. package/dist/cjs/xpl-application-shell.cjs.entry.js +2 -2
  33. package/dist/cjs/xpl-avatar_54.cjs.entry.js +879 -306
  34. package/dist/cjs/xpl-button-row.cjs.entry.js +2 -2
  35. package/dist/cjs/xpl-calendar.cjs.entry.js +3 -3
  36. package/dist/cjs/xpl-dynamic-table-cell.cjs.entry.js +3 -3
  37. package/dist/cjs/xpl-dynamic-table-row.cjs.entry.js +3 -3
  38. package/dist/cjs/xpl-dynamic-table.cjs.entry.js +2 -2
  39. package/dist/cjs/xpl-grid-item.cjs.entry.js +2 -2
  40. package/dist/cjs/xpl-grid.cjs.entry.js +2 -2
  41. package/dist/cjs/xpl-large-card.cjs.entry.js +2 -2
  42. package/dist/cjs/xpl-main-nav.cjs.entry.js +2 -2
  43. package/dist/cjs/xpl-table-header-cell.cjs.entry.js +1 -1
  44. package/dist/cjs/xpl-table-header.cjs.entry.js +2 -2
  45. package/dist/cjs/xpl-toggle.cjs.entry.js +5 -5
  46. package/dist/cjs/xpl-toolbar.cjs.entry.js +3 -3
  47. package/dist/cjs/xpl-top-nav-menu.cjs.entry.js +97 -0
  48. package/dist/collection/collection-manifest.json +7 -6
  49. package/dist/collection/components/xpl-accordion/xpl-accordion.js +2 -2
  50. package/dist/collection/components/xpl-application-shell/xpl-application-shell.js +1 -1
  51. package/dist/collection/components/xpl-backdrop/xpl-backdrop.js +1 -1
  52. package/dist/collection/components/xpl-badge/xpl-badge.js +1 -1
  53. package/dist/collection/components/xpl-banner/banner.stories.js +5 -0
  54. package/dist/collection/components/xpl-banner/xpl-banner.js +2 -2
  55. package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumb-item/xpl-breadcrumb-item.js +1 -1
  56. package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumbs/xpl-breadcrumbs.js +1 -1
  57. package/dist/collection/components/xpl-button/button.stories.js +5 -0
  58. package/dist/collection/components/xpl-button/xpl-button.js +1 -1
  59. package/dist/collection/components/xpl-button-row/button-row.stories.js +1 -11
  60. package/dist/collection/components/xpl-button-row/xpl-button-row.js +1 -1
  61. package/dist/collection/components/xpl-calendar/xpl-calendar.js +1 -1
  62. package/dist/collection/components/xpl-checkbox/xpl-checkbox.js +4 -4
  63. package/dist/collection/components/xpl-choicelist/xpl-choicelist.js +1 -1
  64. package/dist/collection/components/xpl-content-area/xpl-content-area.js +1 -1
  65. package/dist/collection/components/xpl-dashboard/xpl-dashboard.js +1 -1
  66. package/dist/collection/components/xpl-data-card/xpl-data-card.js +2 -2
  67. package/dist/collection/components/xpl-divider/xpl-divider.js +1 -1
  68. package/dist/collection/components/xpl-dropdown/xpl-dropdown-group/xpl-dropdown-group.js +1 -1
  69. package/dist/collection/components/xpl-dropdown/xpl-dropdown-heading/xpl-dropdown-heading.js +1 -1
  70. package/dist/collection/components/xpl-dropdown/xpl-dropdown-option/xpl-dropdown-option.js +2 -2
  71. package/dist/collection/components/xpl-dropdown/xpl-dropdown.js +208 -31
  72. package/dist/collection/components/xpl-dynamic-table/xpl-dynamic-table.js +1 -1
  73. package/dist/collection/components/xpl-dynamic-table-cell/xpl-dynamic-table-cell.js +2 -2
  74. package/dist/collection/components/xpl-dynamic-table-row/xpl-dynamic-table-row.js +2 -2
  75. package/dist/collection/components/xpl-grid/xpl-grid.js +1 -1
  76. package/dist/collection/components/xpl-grid-item/xpl-grid-item.js +1 -1
  77. package/dist/collection/components/xpl-header-accordion/xpl-header-accordion.js +1 -1
  78. package/dist/collection/components/xpl-icon/xpl-icon.js +2 -2
  79. package/dist/collection/components/xpl-input/input.stories.js +1 -1
  80. package/dist/collection/components/xpl-input/xpl-input-color/xpl-input-color.js +8 -8
  81. package/dist/collection/components/xpl-input/xpl-input-date/xpl-input-date.js +3 -3
  82. package/dist/collection/components/xpl-input/xpl-input-file/xpl-input-file.js +4 -4
  83. package/dist/collection/components/xpl-input/xpl-input-phone/xpl-input-phone.js +25 -6
  84. package/dist/collection/components/xpl-input/xpl-input-search/xpl-input-search.js +1 -1
  85. package/dist/collection/components/xpl-input/xpl-input-time/xpl-input-time.js +2 -2
  86. package/dist/collection/components/xpl-input/xpl-input.js +3 -3
  87. package/dist/collection/components/xpl-large-card/xpl-large-card.js +1 -1
  88. package/dist/collection/components/xpl-list/xpl-list.js +2 -2
  89. package/dist/collection/components/xpl-main-nav/xpl-main-nav.js +1 -1
  90. package/dist/collection/components/xpl-modal/xpl-modal.js +4 -1
  91. package/dist/collection/components/xpl-nav-item/xpl-nav-item.js +2 -2
  92. package/dist/collection/components/xpl-pagination/xpl-pagination.js +26 -8
  93. package/dist/collection/components/xpl-panel/xpl-panel.js +2 -2
  94. package/dist/collection/components/xpl-popover/popover.stories.js +3 -7
  95. package/dist/collection/components/xpl-popover/xpl-popover.js +4 -4
  96. package/dist/collection/components/xpl-progress-bar/xpl-progress-bar.js +2 -2
  97. package/dist/collection/components/xpl-progress-indicator/xpl-progress-indicator.js +1 -1
  98. package/dist/collection/components/xpl-radio/radio.stories.js +19 -17
  99. package/dist/collection/components/xpl-radio/xpl-radio.js +3 -3
  100. package/dist/collection/components/xpl-secondary-nav/xpl-secondary-nav.js +1 -1
  101. package/dist/collection/components/xpl-select/xpl-select.js +16 -11
  102. package/dist/collection/components/xpl-side-nav/side-nav-constants.js +2 -0
  103. package/dist/collection/components/xpl-side-nav/side-nav.stories.js +301 -186
  104. package/dist/collection/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.js +80 -14
  105. package/dist/collection/components/xpl-side-nav/xpl-side-nav.js +284 -3
  106. package/dist/collection/components/xpl-skeleton/xpl-skeleton.js +1 -1
  107. package/dist/collection/components/xpl-slideout/xpl-slideout.js +1 -1
  108. package/dist/collection/components/xpl-spotlight/xpl-spotlight.js +14 -4
  109. package/dist/collection/components/xpl-tab-panel/xpl-tab-panel.js +2 -2
  110. package/dist/collection/components/xpl-table/xpl-table.js +13 -22
  111. package/dist/collection/components/xpl-table-header/xpl-table-header.js +1 -1
  112. package/dist/collection/components/xpl-tabs/xpl-tabs.js +5 -5
  113. package/dist/collection/components/xpl-tag/xpl-tag.js +2 -2
  114. package/dist/collection/components/xpl-toast/xpl-toast.js +2 -2
  115. package/dist/collection/components/xpl-toggle/xpl-toggle.js +3 -3
  116. package/dist/collection/components/xpl-toolbar/xpl-toolbar.js +2 -2
  117. package/dist/collection/components/xpl-tooltip/tooltip-arrow.js +1 -1
  118. package/dist/collection/components/xpl-tooltip/tooltip.stories.js +6 -37
  119. package/dist/collection/components/xpl-tooltip/xpl-tooltip.js +1 -1
  120. package/dist/collection/components/xpl-top-nav/top-nav-constants.js +1 -0
  121. package/dist/collection/components/xpl-top-nav/top-nav.stories.js +131 -11
  122. package/dist/collection/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.js +2 -2
  123. package/dist/collection/components/xpl-top-nav/xpl-top-nav-item/top-nav-item-constants.js +2 -0
  124. package/dist/collection/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.js +305 -85
  125. package/dist/collection/components/xpl-top-nav/xpl-top-nav-menu/xpl-top-nav-menu.js +119 -0
  126. package/dist/collection/components/xpl-top-nav/xpl-top-nav.js +11 -5
  127. package/dist/collection/components/xpl-utility-bar/xpl-utility-bar.js +1 -1
  128. package/dist/collection/utils/lifecycle.js +18 -0
  129. package/dist/components/index.d.ts +143 -12
  130. package/dist/components/index.js +1 -1
  131. package/dist/components/p-2xGSxBGa.js +1 -0
  132. package/dist/components/p-B8RYNiz-.js +1 -0
  133. package/dist/components/p-BDWXBWGE.js +1 -0
  134. package/dist/components/p-BJqNuBZr.js +1 -0
  135. package/dist/components/p-BT_Lq3Vd.js +1 -0
  136. package/dist/components/p-BUgtURvw.js +1 -0
  137. package/dist/components/{xpl-input-search2.js → p-B_sq_SAX.js} +1 -1
  138. package/dist/components/p-Bsy-VVS5.js +1 -0
  139. package/dist/components/p-BxHFEnPN.js +1 -0
  140. package/dist/components/p-ByJRw26d.js +1 -0
  141. package/dist/components/p-C5_Yo0ZP.js +1 -0
  142. package/dist/components/p-C8rmEAx6.js +1 -0
  143. package/dist/components/p-CF_YTx16.js +1 -0
  144. package/dist/components/{floating-ui.dom.js → p-CFpsSZyr.js} +1 -1
  145. package/dist/components/p-CK3_k8jD.js +1 -0
  146. package/dist/components/p-CUYkG-PB.js +1 -0
  147. package/dist/components/p-CaW0fL0P.js +1 -0
  148. package/dist/components/p-CuisR8WP.js +1 -0
  149. package/dist/components/p-CzwViN3U.js +1 -0
  150. package/dist/components/p-D2SFagIb.js +1 -0
  151. package/dist/components/p-DKUNbsb0.js +1 -0
  152. package/dist/components/p-DcXL24UI.js +1 -0
  153. package/dist/components/p-Dp3H99Yc.js +1 -0
  154. package/dist/components/p-M900WO1C.js +1 -0
  155. package/dist/components/{xpl-tag2.js → p-ZTFt9sBy.js} +1 -1
  156. package/dist/components/p-gfb3l9Pr.js +1 -0
  157. package/dist/components/{xpl-input-file2.js → p-h1Gbk5lO.js} +1 -1
  158. package/dist/components/xpl-accordion.js +1 -1
  159. package/dist/components/xpl-application-shell.js +1 -1
  160. package/dist/components/xpl-avatar.js +1 -1
  161. package/dist/components/xpl-backdrop.js +1 -1
  162. package/dist/components/xpl-badge.js +1 -1
  163. package/dist/components/xpl-banner.js +1 -1
  164. package/dist/components/xpl-breadcrumb-item.js +1 -1
  165. package/dist/components/xpl-breadcrumbs.js +1 -1
  166. package/dist/components/xpl-button-row.js +1 -1
  167. package/dist/components/xpl-button.js +1 -1
  168. package/dist/components/xpl-calendar.js +1 -1
  169. package/dist/components/xpl-checkbox.js +1 -1
  170. package/dist/components/xpl-choicelist.js +1 -1
  171. package/dist/components/xpl-content-area.js +1 -1
  172. package/dist/components/xpl-dashboard.js +1 -1
  173. package/dist/components/xpl-data-card.js +1 -1
  174. package/dist/components/xpl-divider.js +1 -1
  175. package/dist/components/xpl-dropdown-group.js +1 -1
  176. package/dist/components/xpl-dropdown-heading.js +1 -1
  177. package/dist/components/xpl-dropdown-option.js +1 -1
  178. package/dist/components/xpl-dropdown.js +1 -1
  179. package/dist/components/xpl-dynamic-table-cell.js +1 -1
  180. package/dist/components/xpl-dynamic-table-row.js +1 -1
  181. package/dist/components/xpl-dynamic-table.js +1 -1
  182. package/dist/components/xpl-grid-item.js +1 -1
  183. package/dist/components/xpl-grid.js +1 -1
  184. package/dist/components/xpl-header-accordion.js +1 -1
  185. package/dist/components/xpl-icon.js +1 -1
  186. package/dist/components/xpl-input-color.js +1 -1
  187. package/dist/components/xpl-input-date.js +1 -1
  188. package/dist/components/xpl-input-file.js +1 -1
  189. package/dist/components/xpl-input-phone.js +1 -1
  190. package/dist/components/xpl-input-search.js +1 -1
  191. package/dist/components/xpl-input-time.js +1 -1
  192. package/dist/components/xpl-input.js +1 -1
  193. package/dist/components/xpl-large-card.js +1 -1
  194. package/dist/components/xpl-list-item.js +1 -1
  195. package/dist/components/xpl-list.js +1 -1
  196. package/dist/components/xpl-main-nav.js +1 -1
  197. package/dist/components/xpl-modal.js +1 -1
  198. package/dist/components/xpl-nav-header-menu.js +1 -1
  199. package/dist/components/xpl-nav-item.js +1 -1
  200. package/dist/components/xpl-pagination.js +1 -1
  201. package/dist/components/xpl-panel.js +1 -1
  202. package/dist/components/xpl-popover.js +1 -1
  203. package/dist/components/xpl-progress-bar.js +1 -1
  204. package/dist/components/xpl-progress-indicator.js +1 -1
  205. package/dist/components/xpl-radio.js +1 -1
  206. package/dist/components/xpl-secondary-nav.js +1 -1
  207. package/dist/components/xpl-select.js +1 -1
  208. package/dist/components/xpl-side-nav-item.js +1 -1
  209. package/dist/components/xpl-side-nav.js +1 -1
  210. package/dist/components/xpl-skeleton.js +1 -1
  211. package/dist/components/xpl-slideout.js +1 -1
  212. package/dist/components/xpl-spotlight.js +1 -1
  213. package/dist/components/xpl-tab-panel.js +1 -1
  214. package/dist/components/xpl-tab.js +1 -1
  215. package/dist/components/xpl-table-header-cell.js +1 -1
  216. package/dist/components/xpl-table-header.js +1 -1
  217. package/dist/components/xpl-table.js +1 -1
  218. package/dist/components/xpl-tabs.js +1 -1
  219. package/dist/components/xpl-tag.js +1 -1
  220. package/dist/components/xpl-toast.js +1 -1
  221. package/dist/components/xpl-toggle.js +1 -1
  222. package/dist/components/xpl-toolbar.js +1 -1
  223. package/dist/components/xpl-tooltip.js +1 -1
  224. package/dist/components/xpl-top-nav-item.js +1 -1
  225. package/dist/components/xpl-top-nav-menu.d.ts +11 -0
  226. package/dist/components/xpl-top-nav-menu.js +1 -0
  227. package/dist/components/xpl-top-nav.js +1 -1
  228. package/dist/components/xpl-utility-bar.js +1 -1
  229. package/dist/docs/xpl-backdrop/readme.md +2 -0
  230. package/dist/docs/xpl-badge/readme.md +34 -0
  231. package/dist/docs/xpl-button/readme.md +2 -0
  232. package/dist/docs/xpl-button-row/readme.md +13 -0
  233. package/dist/docs/xpl-checkbox/readme.md +23 -1
  234. package/dist/docs/xpl-divider/readme.md +22 -4
  235. package/dist/docs/xpl-icon/readme.md +2 -0
  236. package/dist/docs/xpl-input/readme.md +51 -0
  237. package/dist/docs/xpl-input/xpl-input-date/readme.md +7 -0
  238. package/dist/docs/xpl-input/xpl-input-phone/readme.md +21 -0
  239. package/dist/docs/xpl-popover/readme.md +24 -0
  240. package/dist/docs/xpl-radio/readme.md +21 -4
  241. package/dist/docs/xpl-side-nav/readme.md +153 -5
  242. package/dist/docs/xpl-side-nav/xpl-side-nav-item/readme.md +165 -32
  243. package/dist/docs/xpl-table/readme.md +2 -0
  244. package/dist/docs/xpl-tooltip/readme.md +29 -1
  245. package/dist/docs/xpl-top-nav/readme.md +3 -0
  246. package/dist/docs/xpl-top-nav/xpl-top-nav-item/readme.md +79 -20
  247. package/dist/docs/xpl-top-nav/xpl-top-nav-menu/readme.md +96 -0
  248. package/dist/esm/apollo-core.js +4 -4
  249. package/dist/esm/{index-C7bgJs6C.js → index-CXkZUm1c.js} +40 -9
  250. package/dist/esm/lifecycle-BUgtURvw.js +68 -0
  251. package/dist/esm/loader.js +3 -3
  252. package/dist/esm/v4-CK3_k8jD.js +50 -0
  253. package/dist/esm/xpl-accordion.entry.js +3 -3
  254. package/dist/esm/xpl-application-shell.entry.js +2 -2
  255. package/dist/esm/xpl-avatar_54.entry.js +878 -305
  256. package/dist/esm/xpl-button-row.entry.js +2 -2
  257. package/dist/esm/xpl-calendar.entry.js +3 -3
  258. package/dist/esm/xpl-dynamic-table-cell.entry.js +3 -3
  259. package/dist/esm/xpl-dynamic-table-row.entry.js +3 -3
  260. package/dist/esm/xpl-dynamic-table.entry.js +2 -2
  261. package/dist/esm/xpl-grid-item.entry.js +2 -2
  262. package/dist/esm/xpl-grid.entry.js +2 -2
  263. package/dist/esm/xpl-large-card.entry.js +2 -2
  264. package/dist/esm/xpl-main-nav.entry.js +2 -2
  265. package/dist/esm/xpl-table-header-cell.entry.js +1 -1
  266. package/dist/esm/xpl-table-header.entry.js +2 -2
  267. package/dist/esm/xpl-toggle.entry.js +5 -5
  268. package/dist/esm/xpl-toolbar.entry.js +3 -3
  269. package/dist/esm/xpl-top-nav-menu.entry.js +95 -0
  270. package/dist/types/components/xpl-banner/banner.stories.d.ts +2 -0
  271. package/dist/types/components/xpl-button/button.stories.d.ts +2 -0
  272. package/dist/types/components/xpl-dropdown/xpl-dropdown.d.ts +16 -0
  273. package/dist/types/components/xpl-input/xpl-input-phone/xpl-input-phone.d.ts +1 -0
  274. package/dist/types/components/xpl-pagination/xpl-pagination.d.ts +4 -0
  275. package/dist/types/components/xpl-radio/radio.stories.d.ts +11 -10
  276. package/dist/types/components/xpl-side-nav/side-nav-constants.d.ts +2 -0
  277. package/dist/types/components/xpl-side-nav/side-nav.stories.d.ts +53 -32
  278. package/dist/types/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.d.ts +10 -0
  279. package/dist/types/components/xpl-side-nav/xpl-side-nav.d.ts +31 -0
  280. package/dist/types/components/xpl-spotlight/xpl-spotlight.d.ts +1 -0
  281. package/dist/types/components/xpl-top-nav/top-nav-constants.d.ts +1 -0
  282. package/dist/types/components/xpl-top-nav/top-nav.stories.d.ts +70 -1
  283. package/dist/types/components/xpl-top-nav/xpl-top-nav-item/top-nav-item-constants.d.ts +2 -0
  284. package/dist/types/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.d.ts +23 -4
  285. package/dist/types/components/xpl-top-nav/xpl-top-nav-menu/xpl-top-nav-menu.d.ts +18 -0
  286. package/dist/types/components/xpl-top-nav/xpl-top-nav.d.ts +1 -0
  287. package/dist/types/components.d.ts +402 -39
  288. package/dist/types/stencil-public-runtime.d.ts +1 -0
  289. package/dist/types/utils/lifecycle.d.ts +3 -0
  290. package/package.json +53 -34
  291. package/dist/apollo-core/p-0bf50890.entry.js +0 -1
  292. package/dist/apollo-core/p-1947e7a8.entry.js +0 -1
  293. package/dist/apollo-core/p-27928cb0.entry.js +0 -1
  294. package/dist/apollo-core/p-35c2f72d.entry.js +0 -1
  295. package/dist/apollo-core/p-368c81f1.entry.js +0 -1
  296. package/dist/apollo-core/p-406b27a8.entry.js +0 -1
  297. package/dist/apollo-core/p-5d63b4ce.entry.js +0 -1
  298. package/dist/apollo-core/p-8d692d05.entry.js +0 -1
  299. package/dist/apollo-core/p-C7bgJs6C.js +0 -2
  300. package/dist/apollo-core/p-Cqlsd6nf.js +0 -1
  301. package/dist/apollo-core/p-cd56a3d5.entry.js +0 -1
  302. package/dist/apollo-core/p-dc205893.entry.js +0 -1
  303. package/dist/cjs/v4-D4KzFnn8.js +0 -67
  304. package/dist/components/index3.js +0 -1
  305. package/dist/components/v4.js +0 -1
  306. package/dist/components/xpl-avatar2.js +0 -1
  307. package/dist/components/xpl-backdrop2.js +0 -1
  308. package/dist/components/xpl-badge2.js +0 -1
  309. package/dist/components/xpl-button2.js +0 -1
  310. package/dist/components/xpl-checkbox2.js +0 -1
  311. package/dist/components/xpl-divider2.js +0 -1
  312. package/dist/components/xpl-dropdown-group2.js +0 -1
  313. package/dist/components/xpl-dropdown-heading2.js +0 -1
  314. package/dist/components/xpl-dropdown-option2.js +0 -1
  315. package/dist/components/xpl-dropdown2.js +0 -1
  316. package/dist/components/xpl-icon2.js +0 -1
  317. package/dist/components/xpl-input-date2.js +0 -1
  318. package/dist/components/xpl-input2.js +0 -1
  319. package/dist/components/xpl-list-item2.js +0 -1
  320. package/dist/components/xpl-popover2.js +0 -1
  321. package/dist/components/xpl-radio2.js +0 -1
  322. package/dist/components/xpl-select2.js +0 -1
  323. package/dist/components/xpl-tooltip2.js +0 -1
  324. package/dist/components/xpl-top-nav-item2.js +0 -1
  325. package/dist/esm/v4-Cqlsd6nf.js +0 -65
  326. /package/dist/components/{_commonjsHelpers.js → p-BFTU3MAI.js} +0 -0
  327. /package/dist/components/{index2.js → p-CH4yJ6Qx.js} +0 -0
  328. /package/dist/components/{tab-a11y-ids.js → p-Yj_QFaRn.js} +0 -0
  329. /package/dist/{index.cjs.js → index.cjs} +0 -0
  330. /package/loader/{cdn.js → cdn.cjs} +0 -0
  331. /package/loader/{index.cjs.js → index.cjs} +0 -0
@@ -1,36 +1,54 @@
1
1
  import { Host, h, } from "@stencil/core";
2
+ import { TimerManager } from "../../../utils/lifecycle";
3
+ import { TOP_NAV_ITEM_HOVER_CLOSE_DELAY_MS, TOP_NAV_ITEM_HOVER_OPEN_MQ, } from "./top-nav-item-constants";
4
+ const TIMER = {
5
+ hasDropdownSync: 'hasDropdownSync',
6
+ postRender: 'postRender',
7
+ focusTriggerAfterEscape: 'focusTriggerAfterEscape',
8
+ hoverClose: 'hoverClose',
9
+ };
2
10
  export class TopNavItem {
3
11
  constructor() {
12
+ this.dropdownPanelId = `xpl-top-nav-item-dropdown-${Math.random().toString(36).slice(2, 11)}`;
13
+ this.hoverOpened = false;
14
+ this.timers = new TimerManager();
15
+ this.hasActiveDescendant = false;
4
16
  this.hasDropdown = false;
17
+ this.isLeadingIconSlotPresent = false;
5
18
  this.hostListitemRole = false;
6
- this.open = false;
19
+ this.isTrailingIconSlotPresent = false;
7
20
  this.active = false;
8
21
  this.icon = '';
22
+ this.open = false;
23
+ this.openMode = 'click';
9
24
  this.selected = false;
10
25
  this.onDocClickCapture = (e) => {
11
- if (!this.hasDropdown || !this.open) {
26
+ if (!this.hasDropdown || !this.open)
12
27
  return;
13
- }
14
28
  const target = e.target;
15
29
  if (target && !this.el.contains(target)) {
16
30
  this.open = false;
17
31
  }
18
32
  };
19
33
  this.onDocKeyDownCapture = (e) => {
20
- if (!this.hasDropdown || !this.open) {
34
+ if (!this.hasDropdown || !this.open)
21
35
  return;
22
- }
23
36
  if (e.key === 'Escape') {
24
37
  e.preventDefault();
25
38
  e.stopPropagation();
26
39
  this.open = false;
40
+ this.focusTriggerAfterEscape();
27
41
  }
28
42
  };
29
43
  this.handleClick = (e) => {
30
44
  if (this.hasDropdown) {
31
45
  e.preventDefault();
32
46
  e.stopPropagation();
33
- this.broadcastCloseOtherDropdownHosts();
47
+ this.timers.clearCoalesced(TIMER.hoverClose);
48
+ if (this.open && this.hoverOpened && this.hoverModeActive() && e.detail > 0) {
49
+ return;
50
+ }
51
+ this.hoverOpened = false;
34
52
  this.open = !this.open;
35
53
  return;
36
54
  }
@@ -38,44 +56,58 @@ export class TopNavItem {
38
56
  };
39
57
  this.handleKeyDown = (e) => {
40
58
  const isLinkMode = this.href != null && !this.hasDropdown;
41
- if (isLinkMode) {
42
- if (e.key === 'Enter') {
43
- return;
44
- }
45
- if (e.key === ' ') {
46
- e.preventDefault();
47
- const anchor = this.el.querySelector('.xpl-top-nav-item__inner');
48
- anchor === null || anchor === void 0 ? void 0 : anchor.click();
49
- return;
50
- }
59
+ if (isLinkMode && e.key === ' ') {
60
+ e.preventDefault();
61
+ const anchor = this.el.querySelector('.xpl-top-nav-item__inner');
62
+ anchor === null || anchor === void 0 ? void 0 : anchor.click();
63
+ }
64
+ };
65
+ this.handleMouseEnter = () => {
66
+ if (!this.hasDropdown || !this.hoverModeActive()) {
67
+ return;
68
+ }
69
+ this.timers.clearCoalesced(TIMER.hoverClose);
70
+ if (!this.open) {
71
+ this.hoverOpened = true;
72
+ this.open = true;
51
73
  }
52
- if (e.key !== 'Enter' && e.key !== ' ')
74
+ };
75
+ this.handleMouseLeave = () => {
76
+ if (!this.hasDropdown || !this.open || !this.hoverOpened) {
53
77
  return;
54
- e.preventDefault();
55
- this.handleClick(this.syntheticActivationClickFromKeyboard(e));
78
+ }
79
+ this.timers.scheduleCoalesced(TIMER.hoverClose, () => {
80
+ if (!this.hoverOpened || this.el.contains(this.el.ownerDocument.activeElement)) {
81
+ return;
82
+ }
83
+ this.open = false;
84
+ }, TOP_NAV_ITEM_HOVER_CLOSE_DELAY_MS);
56
85
  };
57
86
  }
58
87
  onHasDropdownChanged() {
59
- if (!this.hasDropdown) {
88
+ if (!this.hasDropdown)
60
89
  this.open = false;
61
- }
62
90
  this.syncDropdownDocListeners();
63
91
  }
92
+ onOpenChanged(next) {
93
+ this.openChange.emit(next);
94
+ if (!next)
95
+ this.hoverOpened = false;
96
+ if (next && this.hasDropdown)
97
+ this.broadcastCloseOtherDropdownHosts();
98
+ }
64
99
  connectedCallback() {
100
+ if (typeof window !== 'undefined' && typeof window.matchMedia === 'function') {
101
+ this.hoverOpenMq = window.matchMedia(TOP_NAV_ITEM_HOVER_OPEN_MQ);
102
+ }
65
103
  this.syncHostListitemRole();
66
104
  this.syncHasDropdownFromDom();
67
105
  this.syncDropdownDocListeners();
68
106
  this.connectDropdownSlotObserver();
69
107
  }
70
108
  disconnectedCallback() {
71
- if (this.deferredHasDropdownObserverSyncTimeoutId !== undefined) {
72
- clearTimeout(this.deferredHasDropdownObserverSyncTimeoutId);
73
- this.deferredHasDropdownObserverSyncTimeoutId = undefined;
74
- }
75
- if (this.deferredPostRenderTopNavItemTimeoutId !== undefined) {
76
- clearTimeout(this.deferredPostRenderTopNavItemTimeoutId);
77
- this.deferredPostRenderTopNavItemTimeoutId = undefined;
78
- }
109
+ this.timers.dispose();
110
+ this.hoverOpenMq = undefined;
79
111
  this.disconnectDropdownSlotObserver();
80
112
  this.disconnectListitemContextObservers();
81
113
  const doc = this.el.ownerDocument;
@@ -99,23 +131,35 @@ export class TopNavItem {
99
131
  this.open = false;
100
132
  }
101
133
  }
134
+ async closeMenu() {
135
+ if (!this.hasDropdown)
136
+ return;
137
+ this.open = false;
138
+ }
139
+ async openMenu() {
140
+ if (!this.hasDropdown)
141
+ return;
142
+ this.timers.clearCoalesced(TIMER.hoverClose);
143
+ this.hoverOpened = false;
144
+ this.open = true;
145
+ }
146
+ async toggleMenu() {
147
+ if (!this.hasDropdown)
148
+ return;
149
+ this.open = !this.open;
150
+ }
102
151
  scheduleHasDropdownSyncFromObserver() {
103
- if (this.deferredHasDropdownObserverSyncTimeoutId !== undefined) {
104
- clearTimeout(this.deferredHasDropdownObserverSyncTimeoutId);
105
- }
106
- this.deferredHasDropdownObserverSyncTimeoutId = setTimeout(() => {
107
- this.deferredHasDropdownObserverSyncTimeoutId = undefined;
152
+ this.timers.scheduleCoalesced(TIMER.hasDropdownSync, () => {
108
153
  if (!this.el.isConnected) {
109
154
  return;
110
155
  }
111
156
  this.syncHasDropdownFromDom();
112
- }, 0);
157
+ });
113
158
  }
114
159
  connectDropdownSlotObserver() {
115
160
  this.disconnectDropdownSlotObserver();
116
- if (typeof MutationObserver === 'undefined') {
161
+ if (typeof MutationObserver === 'undefined')
117
162
  return;
118
- }
119
163
  this.dropdownSlotObserver = new MutationObserver(() => {
120
164
  this.scheduleHasDropdownSyncFromObserver();
121
165
  });
@@ -169,18 +213,15 @@ export class TopNavItem {
169
213
  }
170
214
  }
171
215
  schedulePostRenderTopNavItemWork() {
172
- if (this.deferredPostRenderTopNavItemTimeoutId !== undefined) {
173
- clearTimeout(this.deferredPostRenderTopNavItemTimeoutId);
174
- }
175
- this.deferredPostRenderTopNavItemTimeoutId = setTimeout(() => {
176
- this.deferredPostRenderTopNavItemTimeoutId = undefined;
216
+ this.timers.scheduleCoalesced(TIMER.postRender, () => {
177
217
  if (!this.el.isConnected) {
178
218
  return;
179
219
  }
180
220
  this.syncHostListitemRole();
221
+ this.syncHasDropdownFromDom();
181
222
  this.connectListitemContextObservers();
182
223
  this.connectDropdownSlotObserver();
183
- }, 0);
224
+ });
184
225
  }
185
226
  syncDropdownDocListeners() {
186
227
  const doc = this.el.ownerDocument;
@@ -192,35 +233,54 @@ export class TopNavItem {
192
233
  doc.addEventListener('click', this.onDocClickCapture, true);
193
234
  doc.addEventListener('keydown', this.onDocKeyDownCapture, true);
194
235
  }
236
+ hasSlottedChildOwnedByThisHost(slotName) {
237
+ return Array.from(this.el.querySelectorAll(`[slot="${slotName}"]`)).some((node) => node.closest('xpl-top-nav-item') === this.el);
238
+ }
195
239
  syncHasDropdownFromDom() {
196
- this.hasDropdown = !!this.el.querySelector('[slot="dropdown"]');
240
+ const nextHasDropdown = this.el.querySelector('[slot="dropdown"]') != null;
241
+ if (nextHasDropdown !== this.hasDropdown) {
242
+ this.hasDropdown = nextHasDropdown;
243
+ }
244
+ const nextLeading = this.hasSlottedChildOwnedByThisHost('leading-icon');
245
+ if (nextLeading !== this.isLeadingIconSlotPresent) {
246
+ this.isLeadingIconSlotPresent = nextLeading;
247
+ }
248
+ const nextTrailing = this.hasSlottedChildOwnedByThisHost('trailing-icon');
249
+ if (nextTrailing !== this.isTrailingIconSlotPresent) {
250
+ this.isTrailingIconSlotPresent = nextTrailing;
251
+ }
252
+ const nextActiveDescendant = nextHasDropdown
253
+ ? this.el.querySelector('[slot="dropdown"] .xpl-top-nav-item--active') !== null ||
254
+ this.el.querySelector('[slot="dropdown"] .xpl-top-nav-item--selected') !== null
255
+ : false;
256
+ if (nextActiveDescendant !== this.hasActiveDescendant) {
257
+ this.hasActiveDescendant = nextActiveDescendant;
258
+ }
197
259
  }
198
260
  getNavDropdownBroadcastRoot() {
199
- var _a, _b;
200
- return ((_b = (_a = this.el.closest('xpl-top-nav')) !== null && _a !== void 0 ? _a : this.el.closest('xpl-nav-header-menu')) !== null && _b !== void 0 ? _b : this.el.ownerDocument);
261
+ var _a, _b, _c;
262
+ return ((_c = (_b = (_a = this.el.closest('xpl-top-nav-menu')) !== null && _a !== void 0 ? _a : this.el.closest('xpl-nav-header-menu')) !== null && _b !== void 0 ? _b : this.el.closest('xpl-top-nav')) !== null && _c !== void 0 ? _c : this.el.ownerDocument);
201
263
  }
202
264
  broadcastCloseOtherDropdownHosts() {
203
265
  const root = this.getNavDropdownBroadcastRoot();
204
266
  root.querySelectorAll('xpl-top-nav-item').forEach((host) => {
205
- if (host === this.el) {
267
+ if (host === this.el || host.parentElement !== this.el.parentElement) {
206
268
  return;
207
269
  }
208
270
  host.dispatchEvent(new CustomEvent('_xplCloseNavDropdown', { bubbles: false }));
209
271
  });
210
272
  }
211
- syntheticActivationClickFromKeyboard(e) {
212
- var _a;
213
- const inner = this.el.querySelector('.xpl-top-nav-item__inner');
214
- const rect = inner === null || inner === void 0 ? void 0 : inner.getBoundingClientRect();
215
- const cx = rect ? rect.left + rect.width / 2 : 0;
216
- const cy = rect ? rect.top + rect.height / 2 : 0;
217
- return new MouseEvent('click', {
218
- bubbles: true,
219
- cancelable: true,
220
- button: 0,
221
- clientX: cx,
222
- clientY: cy,
223
- view: (_a = e.view) !== null && _a !== void 0 ? _a : undefined,
273
+ hoverModeActive() {
274
+ var _a, _b;
275
+ return this.openMode === 'hover' && ((_b = (_a = this.hoverOpenMq) === null || _a === void 0 ? void 0 : _a.matches) !== null && _b !== void 0 ? _b : false);
276
+ }
277
+ focusTriggerAfterEscape() {
278
+ this.timers.scheduleCoalesced(TIMER.focusTriggerAfterEscape, () => {
279
+ var _a;
280
+ if (!this.el.isConnected) {
281
+ return;
282
+ }
283
+ (_a = this.el.querySelector('.xpl-top-nav-item__inner')) === null || _a === void 0 ? void 0 : _a.focus();
224
284
  });
225
285
  }
226
286
  static isInternalRenderedHostChild(el) {
@@ -238,43 +298,40 @@ export class TopNavItem {
238
298
  if (TopNavItem.isInternalRenderedHostChild(child)) {
239
299
  return false;
240
300
  }
241
- return child.getAttribute('slot') !== 'dropdown';
301
+ const slotName = child.getAttribute('slot');
302
+ return slotName == null || slotName === '';
242
303
  }
243
304
  return false;
244
305
  });
245
306
  }
246
307
  getInnerAriaLabel() {
247
308
  var _a, _b, _c;
248
- if ((_a = this.label) === null || _a === void 0 ? void 0 : _a.trim()) {
309
+ if ((_a = this.label) === null || _a === void 0 ? void 0 : _a.trim())
249
310
  return undefined;
250
- }
251
- if (this.hasNonDropdownLightDomChild()) {
311
+ if (this.hasNonDropdownLightDomChild())
252
312
  return undefined;
253
- }
254
313
  const custom = (_b = this.itemAriaLabel) === null || _b === void 0 ? void 0 : _b.trim();
255
- if (custom) {
314
+ if (custom)
256
315
  return custom;
257
- }
258
- if ((_c = this.icon) === null || _c === void 0 ? void 0 : _c.trim()) {
316
+ if (((_c = this.icon) === null || _c === void 0 ? void 0 : _c.trim()) || this.isLeadingIconSlotPresent)
259
317
  return 'Navigation item';
260
- }
261
318
  return undefined;
262
319
  }
263
320
  computeHostListitemRole() {
264
321
  const { el } = this;
265
- if (el.classList.contains('xpl-top-nav__brand')) {
322
+ if (el.classList.contains('xpl-top-nav__brand'))
266
323
  return false;
267
- }
268
- if (el.getAttribute('slot') === 'right-aside-mobile') {
324
+ if (el.getAttribute('slot') === 'right-aside-mobile')
269
325
  return false;
270
- }
271
326
  const parent = el.parentElement;
272
- if ((parent === null || parent === void 0 ? void 0 : parent.getAttribute('role')) === 'list') {
327
+ if ((parent === null || parent === void 0 ? void 0 : parent.getAttribute('role')) === 'list')
273
328
  return true;
274
- }
275
329
  if (parent != null && parent.tagName.toLowerCase() === 'xpl-nav-header-menu') {
276
330
  return true;
277
331
  }
332
+ if (parent != null && parent.tagName.toLowerCase() === 'xpl-top-nav-menu') {
333
+ return true;
334
+ }
278
335
  if (el.getAttribute('slot') === 'left-aside' &&
279
336
  (parent === null || parent === void 0 ? void 0 : parent.tagName.toLowerCase()) === 'xpl-top-nav' &&
280
337
  parent.querySelector('.xpl-top-nav__left-primary[role="list"]') != null) {
@@ -284,31 +341,60 @@ export class TopNavItem {
284
341
  }
285
342
  syncHostListitemRole() {
286
343
  const next = this.computeHostListitemRole();
287
- if (this.hostListitemRole !== next) {
344
+ if (this.hostListitemRole !== next)
288
345
  this.hostListitemRole = next;
346
+ }
347
+ renderLabelContent() {
348
+ var _a;
349
+ if (!this.label) {
350
+ return h("slot", null);
289
351
  }
352
+ const description = (_a = this.description) === null || _a === void 0 ? void 0 : _a.trim();
353
+ if (!description) {
354
+ return (h("span", { class: "xpl-top-nav-item__label", title: this.label }, this.label));
355
+ }
356
+ return (h("span", { class: "xpl-top-nav-item__label-group" }, h("span", { class: "xpl-top-nav-item__label", title: this.label }, this.label), h("span", { class: "xpl-top-nav-item__description" }, description)));
357
+ }
358
+ renderLeading() {
359
+ if (this.isLeadingIconSlotPresent) {
360
+ return (h("span", { class: "xpl-top-nav-item__leading" }, h("slot", { name: "leading-icon" })));
361
+ }
362
+ if (this.icon) {
363
+ return (h("span", { class: "xpl-top-nav-item__leading" }, h("xpl-icon", { size: 16, icon: this.icon })));
364
+ }
365
+ return null;
366
+ }
367
+ renderTrailing() {
368
+ if (this.isTrailingIconSlotPresent) {
369
+ return (h("span", { class: "xpl-top-nav-item__trailing" }, h("slot", { name: "trailing-icon" })));
370
+ }
371
+ if (this.hasDropdown) {
372
+ return (h("span", { class: "xpl-top-nav-item__trailing" }, h("xpl-icon", { icon: "chevron-down" })));
373
+ }
374
+ return null;
290
375
  }
291
376
  renderInner() {
292
377
  const tabIndex = 0;
293
378
  const ariaCurrent = this.selected ? 'page' : undefined;
294
379
  const ariaExpanded = this.hasDropdown ? (this.open ? 'true' : 'false') : undefined;
295
380
  const ariaLabel = this.getInnerAriaLabel();
296
- const shared = Object.assign(Object.assign({ class: 'xpl-top-nav-item__inner', tabIndex, 'aria-current': ariaCurrent, 'aria-expanded': ariaExpanded }, (ariaLabel ? { 'aria-label': ariaLabel } : {})), { onClick: this.handleClick, onKeyDown: this.handleKeyDown });
381
+ const shared = Object.assign(Object.assign({ class: 'xpl-top-nav-item__inner', tabIndex, 'aria-current': ariaCurrent, 'aria-expanded': ariaExpanded, 'aria-haspopup': this.hasDropdown ? 'true' : undefined, 'aria-controls': this.hasDropdown ? this.dropdownPanelId : undefined }, (ariaLabel ? { 'aria-label': ariaLabel } : {})), { onClick: this.handleClick, onKeyDown: this.handleKeyDown });
297
382
  const useAnchor = this.href != null && !this.hasDropdown;
298
383
  if (useAnchor) {
299
- return (h("a", Object.assign({}, shared, { href: this.href }), this.icon && h("xpl-icon", { size: 16, icon: this.icon }), this.label ? (h("span", { class: "xpl-top-nav-item__label", title: this.label }, this.label)) : (h("slot", null))));
384
+ return (h("a", Object.assign({}, shared, { href: this.href }), this.renderLeading(), this.renderLabelContent(), this.renderTrailing()));
300
385
  }
301
- return (h("div", Object.assign({}, shared, { role: "button" }), this.icon && h("xpl-icon", { size: 16, icon: this.icon }), this.label ? (h("span", { class: "xpl-top-nav-item__label", title: this.label }, this.label)) : (h("slot", null)), this.hasDropdown && h("xpl-icon", { icon: "chevron-down" })));
386
+ return (h("button", Object.assign({}, shared, { type: "button" }), this.renderLeading(), this.renderLabelContent(), this.renderTrailing()));
302
387
  }
303
388
  render() {
304
- return (h(Host, Object.assign({ key: '4758b54726318591f140bcfea8d4db22c70c96ff', class: {
389
+ return (h(Host, Object.assign({ key: '5de7a361dd1f3e0aaa3f98ebb8013118cb5c1a22', class: {
305
390
  'xpl-top-nav-item': true,
306
391
  'xpl-top-nav-item--active': this.active,
307
- 'xpl-top-nav-item--dropdown-open': this.open,
392
+ 'xpl-top-nav-item--dropdown-open': this.hasDropdown && this.open,
393
+ 'xpl-top-nav-item--has-active-descendant': this.hasActiveDescendant,
308
394
  'xpl-top-nav-item--has-dropdown': this.hasDropdown,
309
395
  'xpl-top-nav-item--selected': this.selected,
310
396
  dark: true,
311
- } }, (this.hostListitemRole ? { role: 'listitem' } : {})), this.renderInner(), this.hasDropdown && (h("div", { key: '65f53889e4815fb974d7abe12d13dd8be19c1943', class: "xpl-top-nav-item__dropdown" }, h("slot", { key: '2f4f164deaec561be73a13e2303cc13e037699bb', name: "dropdown" })))));
397
+ }, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, (this.hostListitemRole ? { role: 'listitem' } : {})), this.renderInner(), this.hasDropdown && (h("div", { key: 'e076a46dab0d877fdac2eadf09c1fa1bdc97b9bd', id: this.dropdownPanelId, class: "xpl-top-nav-item__dropdown" }, h("slot", { key: '3a6c88fe606672b09b45bb5d8a22d05b26e84e30', name: "dropdown" })))));
312
398
  }
313
399
  static get is() { return "xpl-top-nav-item"; }
314
400
  static get properties() {
@@ -333,6 +419,25 @@ export class TopNavItem {
333
419
  "attribute": "active",
334
420
  "defaultValue": "false"
335
421
  },
422
+ "description": {
423
+ "type": "string",
424
+ "mutable": false,
425
+ "complexType": {
426
+ "original": "string",
427
+ "resolved": "string",
428
+ "references": {}
429
+ },
430
+ "required": false,
431
+ "optional": true,
432
+ "docs": {
433
+ "tags": [],
434
+ "text": "Optional description line shown below **`label`** (row context only, e.g. inside **`xpl-nav-header-menu`** /\n**`xpl-top-nav-menu`**). Ignored when **`label`** is not set."
435
+ },
436
+ "getter": false,
437
+ "setter": false,
438
+ "reflect": false,
439
+ "attribute": "description"
440
+ },
336
441
  "href": {
337
442
  "type": "string",
338
443
  "mutable": false,
@@ -364,7 +469,7 @@ export class TopNavItem {
364
469
  "optional": false,
365
470
  "docs": {
366
471
  "tags": [],
367
- "text": "Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set)."
472
+ "text": "Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set). Ignored when\n**`slot=\"leading-icon\"`** content is present."
368
473
  },
369
474
  "getter": false,
370
475
  "setter": false,
@@ -410,6 +515,46 @@ export class TopNavItem {
410
515
  "reflect": false,
411
516
  "attribute": "label"
412
517
  },
518
+ "open": {
519
+ "type": "boolean",
520
+ "mutable": true,
521
+ "complexType": {
522
+ "original": "boolean",
523
+ "resolved": "boolean",
524
+ "references": {}
525
+ },
526
+ "required": false,
527
+ "optional": false,
528
+ "docs": {
529
+ "tags": [],
530
+ "text": "Whether the **`slot=\"dropdown\"`** panel is open. Reflected to the **`open`** attribute so consumers can drive it\n(controlled) or read it back (uncontrolled, toggled internally on click / hover / keyboard activation). Prefer\n**`openMenu()`** / **`closeMenu()`** / **`toggleMenu()`** over setting this directly from event handlers."
531
+ },
532
+ "getter": false,
533
+ "setter": false,
534
+ "reflect": true,
535
+ "attribute": "open",
536
+ "defaultValue": "false"
537
+ },
538
+ "openMode": {
539
+ "type": "string",
540
+ "mutable": false,
541
+ "complexType": {
542
+ "original": "'click' | 'hover'",
543
+ "resolved": "\"click\" | \"hover\"",
544
+ "references": {}
545
+ },
546
+ "required": false,
547
+ "optional": false,
548
+ "docs": {
549
+ "tags": [],
550
+ "text": "How the **`slot=\"dropdown\"`** panel opens. **`hover`** is gated on **`TOP_NAV_ITEM_HOVER_OPEN_MQ`**\n(hover-capable, fine pointer, **`md`** and up) \u2014 below that, or on touch / coarse-pointer devices, **`hover`**\nfalls back to click/tap. Keyboard activation (Enter / Space) always toggles regardless of **`openMode`**."
551
+ },
552
+ "getter": false,
553
+ "setter": false,
554
+ "reflect": true,
555
+ "attribute": "open-mode",
556
+ "defaultValue": "'click'"
557
+ },
413
558
  "selected": {
414
559
  "type": "boolean",
415
560
  "mutable": false,
@@ -434,9 +579,11 @@ export class TopNavItem {
434
579
  }
435
580
  static get states() {
436
581
  return {
582
+ "hasActiveDescendant": {},
437
583
  "hasDropdown": {},
584
+ "isLeadingIconSlotPresent": {},
438
585
  "hostListitemRole": {},
439
- "open": {}
586
+ "isTrailingIconSlotPresent": {}
440
587
  };
441
588
  }
442
589
  static get events() {
@@ -448,7 +595,7 @@ export class TopNavItem {
448
595
  "composed": true,
449
596
  "docs": {
450
597
  "tags": [],
451
- "text": "Emitted for plain items (button or link) on pointer **click**, or when keyboard activation produces a **`click`**\n(native for **Enter** on **`<a href>`**, or programmatic **`.click()`** for **Space** on links). **`detail`** is the\n**`MouseEvent`** from that activation (synthetic only for **`<div role=\"button\">`** via **Enter** / **Space**).\nNot emitted when **`slot=\"dropdown\"`** is used."
598
+ "text": "Emitted for plain items (button or link) on pointer **click**, or when keyboard activation produces a **`click`**:\nthe native **`<button>`** fires a real **`click`** on **Enter** / **Space**, a native **`<a href>`** on **Enter**,\nand **Space** on a link maps to a programmatic **`.click()`**. **`detail`** is always the real **`MouseEvent`** from\nthat activation (keyboard-driven clicks have **`detail === 0`**). Not emitted when **`slot=\"dropdown\"`** is used."
452
599
  },
453
600
  "complexType": {
454
601
  "original": "MouseEvent",
@@ -460,13 +607,86 @@ export class TopNavItem {
460
607
  }
461
608
  }
462
609
  }
610
+ }, {
611
+ "method": "openChange",
612
+ "name": "openChange",
613
+ "bubbles": true,
614
+ "cancelable": true,
615
+ "composed": true,
616
+ "docs": {
617
+ "tags": [],
618
+ "text": "Emitted whenever **`open`** changes (click, hover, keyboard, Escape, outside click, or programmatic)."
619
+ },
620
+ "complexType": {
621
+ "original": "boolean",
622
+ "resolved": "boolean",
623
+ "references": {}
624
+ }
463
625
  }];
464
626
  }
627
+ static get methods() {
628
+ return {
629
+ "closeMenu": {
630
+ "complexType": {
631
+ "signature": "() => Promise<void>",
632
+ "parameters": [],
633
+ "references": {
634
+ "Promise": {
635
+ "location": "global",
636
+ "id": "global::Promise"
637
+ }
638
+ },
639
+ "return": "Promise<void>"
640
+ },
641
+ "docs": {
642
+ "text": "No-op when there is no **`slot=\"dropdown\"`** panel to open.",
643
+ "tags": []
644
+ }
645
+ },
646
+ "openMenu": {
647
+ "complexType": {
648
+ "signature": "() => Promise<void>",
649
+ "parameters": [],
650
+ "references": {
651
+ "Promise": {
652
+ "location": "global",
653
+ "id": "global::Promise"
654
+ }
655
+ },
656
+ "return": "Promise<void>"
657
+ },
658
+ "docs": {
659
+ "text": "No-op when there is no **`slot=\"dropdown\"`** panel to open.",
660
+ "tags": []
661
+ }
662
+ },
663
+ "toggleMenu": {
664
+ "complexType": {
665
+ "signature": "() => Promise<void>",
666
+ "parameters": [],
667
+ "references": {
668
+ "Promise": {
669
+ "location": "global",
670
+ "id": "global::Promise"
671
+ }
672
+ },
673
+ "return": "Promise<void>"
674
+ },
675
+ "docs": {
676
+ "text": "No-op when there is no **`slot=\"dropdown\"`** panel to open.",
677
+ "tags": []
678
+ }
679
+ }
680
+ };
681
+ }
465
682
  static get elementRef() { return "el"; }
466
683
  static get watchers() {
467
684
  return [{
468
685
  "propName": "hasDropdown",
469
686
  "methodName": "onHasDropdownChanged"
687
+ }, {
688
+ "propName": "open",
689
+ "methodName": "onOpenChanged"
470
690
  }];
471
691
  }
472
692
  static get listeners() {