@carbon/web-components 2.45.0 → 2.46.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 (322) hide show
  1. package/custom-elements.json +919 -101
  2. package/dist/{16-BBj-4U6O.js → 16-BXPirV4t.js} +3 -3
  3. package/dist/16-BiojhJb6.js +28 -0
  4. package/dist/{16-Fw7MQsgz.js → 16-BirbARgt.js} +3 -3
  5. package/dist/{16-CsB-3CrK.js → 16-CNObEOvs.js} +3 -3
  6. package/dist/{16-t_6d5Xg6.js → 16-DThcsE9v.js} +3 -3
  7. package/dist/{16-DOSrxpkh.js → 16-T0hLy__N.js} +3 -3
  8. package/dist/{16-BFG46iFc.js → 16-mUGLFymm.js} +3 -3
  9. package/dist/{20-Dz5R4rWy.js → 20-BSzLZNRY.js} +3 -3
  10. package/dist/accordion.min.js +3 -3
  11. package/dist/ai-label.min.js +3 -3
  12. package/dist/ai-skeleton.min.js +3 -3
  13. package/dist/badge-indicator.min.js +3 -3
  14. package/dist/breadcrumb.min.js +3 -3
  15. package/dist/{button-BINUfYkQ.js → button-3n7S6dfU.js} +5 -5
  16. package/dist/{button-skeleton-Ce4GOnYk.js → button-skeleton-DE9AxBek.js} +4 -4
  17. package/dist/button.min.js +3 -3
  18. package/dist/chat-button.min.js +3 -3
  19. package/dist/{checkbox-YpDgBEVJ.js → checkbox-CFU6bnOa.js} +3 -3
  20. package/dist/checkbox.min.js +6 -6
  21. package/dist/{class-map-DzlEdlET.js → class-map-BLvVLLRH.js} +3 -3
  22. package/dist/code-snippet.min.js +5 -5
  23. package/dist/combo-box.min.js +6 -6
  24. package/dist/combo-button.min.js +3 -3
  25. package/dist/contained-list.min.js +70 -0
  26. package/dist/{content-switcher-item-CTUxWE3X.js → content-switcher-item-CXc-BbRX.js} +3 -3
  27. package/dist/content-switcher.min.js +3 -3
  28. package/dist/copy-button.min.js +3 -3
  29. package/dist/data-table.min.js +5 -5
  30. package/dist/date-picker.min.js +3 -3
  31. package/dist/defs-CcLNpvSO.js +28 -0
  32. package/dist/dropdown-item-CSXYY4Up.js +100 -0
  33. package/dist/dropdown.min.js +5 -5
  34. package/dist/feature-flags.min.js +3 -3
  35. package/dist/file-uploader.min.js +3 -3
  36. package/dist/floating-controller-ClaZwDaj.js +28 -0
  37. package/dist/floating-menu.min.js +3 -3
  38. package/dist/fluid-number-input.min.js +28 -0
  39. package/dist/fluid-search.min.js +3 -3
  40. package/dist/fluid-select.min.js +3 -3
  41. package/dist/fluid-text-input.min.js +3 -3
  42. package/dist/fluid-textarea.min.js +3 -3
  43. package/dist/{focus-4hYY4Dyy.js → focus-DCv16lgz.js} +3 -3
  44. package/dist/{form-Bi7CmOIh.js → form-D0wM2t2A.js} +3 -3
  45. package/dist/form-group.min.js +3 -3
  46. package/dist/form.min.js +3 -3
  47. package/dist/grid.min.js +3 -3
  48. package/dist/heading.min.js +3 -3
  49. package/dist/{host-listener-DvFKBeEg.js → host-listener-maKckXVl.js} +3 -3
  50. package/dist/icon-button.min.js +3 -3
  51. package/dist/icon-indicator.min.js +3 -3
  52. package/dist/{icon-loader-C0ZqVK1W.js → icon-loader-BiaaiIZd.js} +3 -3
  53. package/dist/{icon-loader-utils-BR71i9XR.js → icon-loader-utils-Dw7YsY3n.js} +3 -3
  54. package/dist/icon.min.js +3 -3
  55. package/dist/{if-defined-CcLoN68A.js → if-defined-B342gMhK.js} +3 -3
  56. package/dist/{if-non-empty-B1wddvKZ.js → if-non-empty-BXM4sQkm.js} +3 -3
  57. package/dist/inline-loading.min.js +3 -3
  58. package/dist/layer.min.js +3 -3
  59. package/dist/link.min.js +3 -3
  60. package/dist/list.min.js +3 -3
  61. package/dist/{lit-element-DXoDLiKG.js → lit-element-W7dQy3wx.js} +4 -4
  62. package/dist/{loading-icon-BqRwBxw_.js → loading-icon-9dSwtpx9.js} +3 -3
  63. package/dist/loading.min.js +3 -3
  64. package/dist/menu-button.min.js +6 -6
  65. package/dist/menu.min.js +16 -16
  66. package/dist/modal.min.js +3 -3
  67. package/dist/multi-select.min.js +3 -3
  68. package/dist/notification.min.js +32 -32
  69. package/dist/number-input.min.js +32 -31
  70. package/dist/overflow-menu.min.js +3 -3
  71. package/dist/page-header.min.js +3 -3
  72. package/dist/pagination.min.js +3 -3
  73. package/dist/password-input.min.js +31 -30
  74. package/dist/popover.min.js +3 -3
  75. package/dist/progress-bar.min.js +3 -3
  76. package/dist/progress-indicator.min.js +3 -3
  77. package/dist/{property-uTgGvQPP.js → property-D8KHfsO7.js} +3 -3
  78. package/dist/{query-assigned-elements-DzwbMc--.js → query-assigned-elements-CuK851Xm.js} +3 -3
  79. package/dist/radio-button.min.js +6 -6
  80. package/dist/search-BpfBrZ_q.js +58 -0
  81. package/dist/search.min.js +4 -4
  82. package/dist/{select-DrnoHpZf.js → select-Bu-C3DEh.js} +3 -3
  83. package/dist/{select-item-XCdOkQFq.js → select-item-CY7ZCgDO.js} +3 -3
  84. package/dist/{select-skeleton-D_sk9gT-.js → select-skeleton-Bj1W9rv-.js} +3 -3
  85. package/dist/select.min.js +3 -3
  86. package/dist/shape-indicator.min.js +3 -3
  87. package/dist/side-panel.min.js +8 -8
  88. package/dist/skeleton-icon.min.js +3 -3
  89. package/dist/skeleton-placeholder.min.js +3 -3
  90. package/dist/skeleton-text.min.js +3 -3
  91. package/dist/skip-to-content.min.js +3 -3
  92. package/dist/slider.min.js +186 -100
  93. package/dist/slug.min.js +3 -3
  94. package/dist/stack.min.js +3 -3
  95. package/dist/{state-WaBTtiEK.js → state-DVnprZ3A.js} +3 -3
  96. package/dist/structured-list.min.js +3 -3
  97. package/dist/tabs.min.js +3 -3
  98. package/dist/tag.min.js +3 -3
  99. package/dist/tearsheet.min.js +3 -3
  100. package/dist/text-input-CMLDDQcE.js +95 -0
  101. package/dist/text-input.min.js +4 -4
  102. package/dist/textarea.min.js +6 -6
  103. package/dist/tile.min.js +3 -3
  104. package/dist/time-picker.min.js +3 -3
  105. package/dist/toggle-tip.min.js +3 -3
  106. package/dist/toggle.min.js +3 -3
  107. package/dist/{tooltip-content-qsyHhcSH.js → tooltip-content-eYgOs_c2.js} +3 -3
  108. package/dist/tooltip.min.js +3 -3
  109. package/dist/tree-view.min.js +3 -3
  110. package/dist/ui-shell.min.js +5 -5
  111. package/dist/{unsafe-html-DmB1txAP.js → unsafe-html-SGvBIOsG.js} +3 -3
  112. package/es/components/button/button.scss.js +1 -1
  113. package/es/components/chat-button/chat-button.scss.js +1 -1
  114. package/es/components/code-snippet/code-snippet.scss.js +1 -1
  115. package/es/components/combo-box/combo-box.d.ts +10 -3
  116. package/es/components/combo-box/combo-box.js +58 -7
  117. package/es/components/combo-box/combo-box.js.map +1 -1
  118. package/es/components/combo-box/combo-box.scss.js +1 -1
  119. package/es/components/contained-list/contained-list-description.d.ts +18 -0
  120. package/es/components/contained-list/contained-list-description.js +38 -0
  121. package/es/components/contained-list/contained-list-description.js.map +1 -0
  122. package/es/components/contained-list/contained-list-item.d.ts +43 -0
  123. package/es/components/contained-list/contained-list-item.js +135 -0
  124. package/es/components/contained-list/contained-list-item.js.map +1 -0
  125. package/es/components/contained-list/contained-list.d.ts +37 -0
  126. package/es/components/contained-list/contained-list.js +95 -0
  127. package/es/components/contained-list/contained-list.js.map +1 -0
  128. package/es/components/contained-list/contained-list.scss.js +13 -0
  129. package/es/components/contained-list/contained-list.scss.js.map +1 -0
  130. package/es/components/contained-list/index.d.ts +9 -0
  131. package/es/components/contained-list/index.js +11 -0
  132. package/es/components/contained-list/index.js.map +1 -0
  133. package/es/components/copy-button/copy-button.scss.js +1 -1
  134. package/es/components/data-table/data-table.scss.js +1 -1
  135. package/es/components/dropdown/dropdown.d.ts +25 -1
  136. package/es/components/dropdown/dropdown.js +72 -3
  137. package/es/components/dropdown/dropdown.js.map +1 -1
  138. package/es/components/dropdown/dropdown.scss.js +1 -1
  139. package/es/components/fluid-number-input/fluid-number-input-skeleton.d.ts +17 -0
  140. package/es/components/fluid-number-input/fluid-number-input-skeleton.js +38 -0
  141. package/es/components/fluid-number-input/fluid-number-input-skeleton.js.map +1 -0
  142. package/es/components/fluid-number-input/fluid-number-input.d.ts +19 -0
  143. package/es/components/fluid-number-input/fluid-number-input.js +53 -0
  144. package/es/components/fluid-number-input/fluid-number-input.js.map +1 -0
  145. package/es/components/fluid-number-input/fluid-number-input.scss.js +13 -0
  146. package/es/components/fluid-number-input/fluid-number-input.scss.js.map +1 -0
  147. package/es/components/fluid-number-input/index.d.ts +8 -0
  148. package/es/components/fluid-number-input/index.js +10 -0
  149. package/es/components/fluid-number-input/index.js.map +1 -0
  150. package/es/components/fluid-search/fluid-search.scss.js +1 -1
  151. package/es/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  152. package/es/components/icon-button/icon-button.scss.js +1 -1
  153. package/es/components/menu/menu-item.d.ts +1 -0
  154. package/es/components/menu/menu-item.js +12 -2
  155. package/es/components/menu/menu-item.js.map +1 -1
  156. package/es/components/menu/menu.d.ts +4 -1
  157. package/es/components/menu/menu.js +28 -3
  158. package/es/components/menu/menu.js.map +1 -1
  159. package/es/components/menu/menu.scss.js +1 -1
  160. package/es/components/menu-button/menu-button.d.ts +5 -2
  161. package/es/components/menu-button/menu-button.js +77 -7
  162. package/es/components/menu-button/menu-button.js.map +1 -1
  163. package/es/components/multi-select/multi-select.scss.js +1 -1
  164. package/es/components/notification/callout-notification.d.ts +1 -1
  165. package/es/components/notification/callout-notification.js +8 -9
  166. package/es/components/notification/callout-notification.js.map +1 -1
  167. package/es/components/number-input/number-input.d.ts +4 -0
  168. package/es/components/number-input/number-input.js +28 -12
  169. package/es/components/number-input/number-input.js.map +1 -1
  170. package/es/components/number-input/number-input.scss.js +1 -1
  171. package/es/components/password-input/password-input.d.ts +5 -0
  172. package/es/components/password-input/password-input.js +14 -5
  173. package/es/components/password-input/password-input.js.map +1 -1
  174. package/es/components/password-input/password-input.scss.js +1 -1
  175. package/es/components/popover/popover.js.map +1 -1
  176. package/es/components/search/search.scss.js +1 -1
  177. package/es/components/slider/slider-input.js +14 -18
  178. package/es/components/slider/slider-input.js.map +1 -1
  179. package/es/components/slider/slider.d.ts +7 -0
  180. package/es/components/slider/slider.js +226 -83
  181. package/es/components/slider/slider.js.map +1 -1
  182. package/es/components/slider/slider.scss.js +1 -1
  183. package/es/components/text-input/text-input-skeleton.d.ts +1 -1
  184. package/es/components/text-input/text-input-skeleton.js +4 -3
  185. package/es/components/text-input/text-input-skeleton.js.map +1 -1
  186. package/es/components/text-input/text-input.scss.js +1 -1
  187. package/es/components/textarea/textarea-skeleton.d.ts +5 -1
  188. package/es/components/textarea/textarea-skeleton.js +16 -2
  189. package/es/components/textarea/textarea-skeleton.js.map +1 -1
  190. package/es/components/time-picker/time-picker.scss.js +1 -1
  191. package/es/components/toggle-tip/toggletip.js.map +1 -1
  192. package/es-custom/components/button/button.scss.js +1 -1
  193. package/es-custom/components/chat-button/chat-button.scss.js +1 -1
  194. package/es-custom/components/code-snippet/code-snippet.scss.js +1 -1
  195. package/es-custom/components/combo-box/combo-box.d.ts +10 -3
  196. package/es-custom/components/combo-box/combo-box.js +58 -7
  197. package/es-custom/components/combo-box/combo-box.js.map +1 -1
  198. package/es-custom/components/combo-box/combo-box.scss.js +1 -1
  199. package/es-custom/components/contained-list/contained-list-description.d.ts +18 -0
  200. package/es-custom/components/contained-list/contained-list-description.js +38 -0
  201. package/es-custom/components/contained-list/contained-list-description.js.map +1 -0
  202. package/es-custom/components/contained-list/contained-list-item.d.ts +43 -0
  203. package/es-custom/components/contained-list/contained-list-item.js +135 -0
  204. package/es-custom/components/contained-list/contained-list-item.js.map +1 -0
  205. package/es-custom/components/contained-list/contained-list.d.ts +37 -0
  206. package/es-custom/components/contained-list/contained-list.js +95 -0
  207. package/es-custom/components/contained-list/contained-list.js.map +1 -0
  208. package/es-custom/components/contained-list/contained-list.scss.js +13 -0
  209. package/es-custom/components/contained-list/contained-list.scss.js.map +1 -0
  210. package/es-custom/components/contained-list/index.d.ts +9 -0
  211. package/es-custom/components/contained-list/index.js +11 -0
  212. package/es-custom/components/contained-list/index.js.map +1 -0
  213. package/es-custom/components/copy-button/copy-button.scss.js +1 -1
  214. package/es-custom/components/data-table/data-table.scss.js +1 -1
  215. package/es-custom/components/dropdown/dropdown.d.ts +25 -1
  216. package/es-custom/components/dropdown/dropdown.js +72 -3
  217. package/es-custom/components/dropdown/dropdown.js.map +1 -1
  218. package/es-custom/components/dropdown/dropdown.scss.js +1 -1
  219. package/es-custom/components/fluid-number-input/fluid-number-input-skeleton.d.ts +17 -0
  220. package/es-custom/components/fluid-number-input/fluid-number-input-skeleton.js +38 -0
  221. package/es-custom/components/fluid-number-input/fluid-number-input-skeleton.js.map +1 -0
  222. package/es-custom/components/fluid-number-input/fluid-number-input.d.ts +19 -0
  223. package/es-custom/components/fluid-number-input/fluid-number-input.js +53 -0
  224. package/es-custom/components/fluid-number-input/fluid-number-input.js.map +1 -0
  225. package/es-custom/components/fluid-number-input/fluid-number-input.scss.js +13 -0
  226. package/es-custom/components/fluid-number-input/fluid-number-input.scss.js.map +1 -0
  227. package/es-custom/components/fluid-number-input/index.d.ts +8 -0
  228. package/es-custom/components/fluid-number-input/index.js +10 -0
  229. package/es-custom/components/fluid-number-input/index.js.map +1 -0
  230. package/es-custom/components/fluid-search/fluid-search.scss.js +1 -1
  231. package/es-custom/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  232. package/es-custom/components/icon-button/icon-button.scss.js +1 -1
  233. package/es-custom/components/menu/menu-item.d.ts +1 -0
  234. package/es-custom/components/menu/menu-item.js +12 -2
  235. package/es-custom/components/menu/menu-item.js.map +1 -1
  236. package/es-custom/components/menu/menu.d.ts +4 -1
  237. package/es-custom/components/menu/menu.js +28 -3
  238. package/es-custom/components/menu/menu.js.map +1 -1
  239. package/es-custom/components/menu/menu.scss.js +1 -1
  240. package/es-custom/components/menu-button/menu-button.d.ts +5 -2
  241. package/es-custom/components/menu-button/menu-button.js +77 -7
  242. package/es-custom/components/menu-button/menu-button.js.map +1 -1
  243. package/es-custom/components/multi-select/multi-select.scss.js +1 -1
  244. package/es-custom/components/notification/callout-notification.d.ts +1 -1
  245. package/es-custom/components/notification/callout-notification.js +8 -9
  246. package/es-custom/components/notification/callout-notification.js.map +1 -1
  247. package/es-custom/components/number-input/number-input.d.ts +4 -0
  248. package/es-custom/components/number-input/number-input.js +28 -12
  249. package/es-custom/components/number-input/number-input.js.map +1 -1
  250. package/es-custom/components/number-input/number-input.scss.js +1 -1
  251. package/es-custom/components/password-input/password-input.d.ts +5 -0
  252. package/es-custom/components/password-input/password-input.js +14 -5
  253. package/es-custom/components/password-input/password-input.js.map +1 -1
  254. package/es-custom/components/password-input/password-input.scss.js +1 -1
  255. package/es-custom/components/popover/popover.js.map +1 -1
  256. package/es-custom/components/search/search.scss.js +1 -1
  257. package/es-custom/components/slider/slider-input.js +14 -18
  258. package/es-custom/components/slider/slider-input.js.map +1 -1
  259. package/es-custom/components/slider/slider.d.ts +7 -0
  260. package/es-custom/components/slider/slider.js +226 -83
  261. package/es-custom/components/slider/slider.js.map +1 -1
  262. package/es-custom/components/slider/slider.scss.js +1 -1
  263. package/es-custom/components/text-input/text-input-skeleton.d.ts +1 -1
  264. package/es-custom/components/text-input/text-input-skeleton.js +4 -3
  265. package/es-custom/components/text-input/text-input-skeleton.js.map +1 -1
  266. package/es-custom/components/text-input/text-input.scss.js +1 -1
  267. package/es-custom/components/textarea/textarea-skeleton.d.ts +5 -1
  268. package/es-custom/components/textarea/textarea-skeleton.js +16 -2
  269. package/es-custom/components/textarea/textarea-skeleton.js.map +1 -1
  270. package/es-custom/components/time-picker/time-picker.scss.js +1 -1
  271. package/es-custom/components/toggle-tip/toggletip.js.map +1 -1
  272. package/lib/components/combo-box/combo-box.d.ts +10 -3
  273. package/lib/components/contained-list/contained-list-description.d.ts +18 -0
  274. package/lib/components/contained-list/contained-list-item.d.ts +43 -0
  275. package/lib/components/contained-list/contained-list.d.ts +37 -0
  276. package/lib/components/contained-list/index.d.ts +9 -0
  277. package/lib/components/dropdown/dropdown.d.ts +25 -1
  278. package/lib/components/fluid-number-input/fluid-number-input-skeleton.d.ts +17 -0
  279. package/lib/components/fluid-number-input/fluid-number-input.d.ts +19 -0
  280. package/lib/components/fluid-number-input/index.d.ts +8 -0
  281. package/lib/components/menu/menu-item.d.ts +1 -0
  282. package/lib/components/menu/menu.d.ts +4 -1
  283. package/lib/components/menu-button/menu-button.d.ts +5 -2
  284. package/lib/components/notification/callout-notification.d.ts +1 -1
  285. package/lib/components/number-input/number-input.d.ts +4 -0
  286. package/lib/components/password-input/password-input.d.ts +5 -0
  287. package/lib/components/slider/slider.d.ts +7 -0
  288. package/lib/components/text-input/text-input-skeleton.d.ts +1 -1
  289. package/lib/components/textarea/textarea-skeleton.d.ts +5 -1
  290. package/package.json +5 -6
  291. package/scss/components/combo-box/combo-box.scss +21 -0
  292. package/scss/components/contained-list/contained-list.scss +48 -0
  293. package/scss/components/fluid-number-input/fluid-number-input.scss +27 -0
  294. package/scss/components/menu/menu.scss +2 -0
  295. package/scss/components/number-input/number-input.scss +13 -0
  296. package/scss/components/password-input/password-input.scss +21 -17
  297. package/scss/components/search/search.scss +6 -0
  298. package/scss/components/slider/slider.scss +33 -5
  299. package/scss/components/text-input/text-input.scss +5 -2
  300. package/telemetry.yml +14 -8
  301. package/dist/16-BFl-qNrl.js +0 -28
  302. package/dist/dropdown-item-ALZ34_OA.js +0 -100
  303. package/dist/floating-controller-BO48DFk2.js +0 -28
  304. package/dist/search-DNdS00wP.js +0 -58
  305. package/dist/text-input-B9VDpl4N.js +0 -95
  306. package/dist/{16-Co6aAEol.js → 16-BcPXq4VE.js} +2 -2
  307. package/dist/{16-B7pwVoJF.js → 16-CCrV-EKs.js} +2 -2
  308. package/dist/{16-CGBcKyTF.js → 16-CsHohlYG.js} +2 -2
  309. package/dist/{16-CE0vhrU3.js → 16-D9rqeJJl.js} +2 -2
  310. package/dist/{16-Di-633li.js → 16-DEZ8LNs3.js} +2 -2
  311. package/dist/{20-BkqtasS4.js → 20-ZHgmfbqd.js} +2 -2
  312. package/dist/{carbon-element-C1z5CnbR.js → carbon-element-tFMTVffV.js} +2 -2
  313. package/dist/{collection-helpers-CpMBYTSn.js → collection-helpers-C8K_t6zj.js} +2 -2
  314. package/dist/{consume-CJ68u14F.js → consume-DNv3sWri.js} +2 -2
  315. package/dist/{directive-D38JskT2.js → directive-CwpJ03IP.js} +2 -2
  316. package/dist/{host-listener-C5X2a6BU.js → host-listener-BFnrKETa.js} +2 -2
  317. package/dist/{on-CHmODq20.js → on-Bh72-1o0.js} +2 -2
  318. package/dist/{query-ClymL-mj.js → query-DZZk85FD.js} +2 -2
  319. package/dist/{radio-group-manager-Cd-2cWQY.js → radio-group-manager-BbeUxJeN.js} +2 -2
  320. package/dist/{settings--npNF0B7.js → settings-CVGvqY8T.js} +2 -2
  321. package/dist/{shared-enums-DNTUOzm5.js → shared-enums-D2BNx9-N.js} +2 -2
  322. package/dist/{validity-WwpJqqG9.js → validity-CzCNnEZK.js} +2 -2
@@ -7,6 +7,7 @@
7
7
  import { LitElement, PropertyValues } from 'lit';
8
8
  import { MENU_ITEM_KIND, MENU_SIZE } from './defs';
9
9
  export { MENU_ITEM_KIND, MENU_SIZE };
10
+ export declare const MENU_CLOSE_ROOT_EVENT = "cds-menu-close-root-request";
10
11
  declare const CDSmenuItem_base: {
11
12
  new (...args: any[]): {
12
13
  _handles: Set<import("../../globals/internal/handle").default>;
@@ -27,6 +27,7 @@ import { iconLoader } from '../../globals/internal/icon-loader.js';
27
27
  * This source code is licensed under the Apache-2.0 license found in the
28
28
  * LICENSE file in the root directory of this source tree.
29
29
  */
30
+ const MENU_CLOSE_ROOT_EVENT = `${prefix}-menu-close-root-request`;
30
31
  /**
31
32
  * Menu Item.
32
33
  *
@@ -58,10 +59,19 @@ let CDSmenuItem = class CDSmenuItem extends HostListenerMixin(HostListenerMixin(
58
59
  this._handleClick = (e) => {
59
60
  if (this.hasSubmenu) {
60
61
  this._openSubmenu();
62
+ return;
61
63
  }
62
- else if (e.type === 'keydown') {
64
+ if (e.type === 'keydown') {
63
65
  this.click();
66
+ return;
64
67
  }
68
+ this.dispatchEvent(new CustomEvent(MENU_CLOSE_ROOT_EVENT, {
69
+ bubbles: true,
70
+ composed: true,
71
+ detail: {
72
+ triggerEvent: e,
73
+ },
74
+ }));
65
75
  };
66
76
  this._handleMouseEnter = () => {
67
77
  this.hoverIntentTimeout = setTimeout(() => {
@@ -304,5 +314,5 @@ CDSmenuItem = __decorate([
304
314
  ], CDSmenuItem);
305
315
  var CDSmenuItem$1 = CDSmenuItem;
306
316
 
307
- export { MENU_ITEM_KIND, MENU_SIZE, CDSmenuItem$1 as default };
317
+ export { MENU_CLOSE_ROOT_EVENT, MENU_ITEM_KIND, MENU_SIZE, CDSmenuItem$1 as default };
308
318
  //# sourceMappingURL=menu-item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu-item.js","sources":["../../../src/components/menu/menu-item.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, PropertyValues, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport styles from './menu-item.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { consume } from '@lit/context';\nimport { MenuContext } from './menu-context';\nimport Checkmark16 from '@carbon/icons/es/checkmark/16.js';\nimport CaretLeft16 from '@carbon/icons/es/caret--left/16.js';\nimport CaretRight16 from '@carbon/icons/es/caret--right/16.js';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { MENU_ITEM_KIND, MENU_SIZE } from './defs';\nimport { iconLoader } from '../../globals/internal/icon-loader';\n\nexport { MENU_ITEM_KIND, MENU_SIZE };\n\n/**\n * Menu Item.\n *\n * @element cds-menu-item\n */\n@customElement(`${prefix}-menu-item`)\nclass CDSmenuItem extends HostListenerMixin(HostListenerMixin(LitElement)) {\n @consume({ context: MenuContext })\n context;\n\n readonly hoverIntentDelay = 150; // in ms\n hoverIntentTimeout;\n /**\n * Label for the menu item.\n */\n @property({ type: String })\n label;\n /**\n * Shortcut for the menu item.\n */\n @property({ type: String })\n shortcut;\n /**\n * Disabled property for the menu item.\n */\n @property({ type: Boolean })\n disabled;\n\n /**\n * Whether the menu submen for an item is open or not.\n */\n @property({ type: Boolean })\n submenuOpen = false;\n\n @property()\n kind = MENU_ITEM_KIND.DEFAULT;\n /**\n * Menu boundaries.\n */\n @property()\n boundaries: {\n x: number | [number, number];\n y: number | [number, number];\n } = { x: -1, y: -1 };\n\n @property({ attribute: 'aria-checked' })\n ariaChecked: string | null = this.getAttribute('selected') ?? 'false';\n\n /**\n * Entrypoint.\n */\n @state()\n submenuEntry;\n /**\n * Checks if document direction is rtl.\n */\n @state()\n isRtl = false;\n /**\n * Checks if document direction is rtl.\n */\n @state()\n hasSubmenu = false;\n\n async dispatchIconDetect() {\n const hasRenderIcon = !!this.querySelector('[slot=\"render-icon\"]');\n if (hasRenderIcon) {\n await undefined; // this is used to replace setTimeout with 0 time out, which is much fater.\n this.dispatchEvent(\n new CustomEvent('icon-detect', {\n bubbles: true, // Allows event to bubble up the DOM\n composed: true, // Allows event to cross shadow DOM boundary\n })\n );\n }\n }\n\n private _updateAttributes() {\n if (this.disabled && !this.hasSubmenu) {\n this.setAttribute('aria-disabled', this.disabled);\n this.setAttribute('tabindex', '-1');\n } else {\n this.removeAttribute('aria-disabled');\n this.setAttribute('tabindex', '0');\n }\n if (this.hasSubmenu) {\n this.setAttribute('aria-haspopup', this.hasSubmenu + '');\n } else {\n this.removeAttribute('aria-haspopup');\n }\n if (this.closest(`${prefix}-menu-item-radio-group`)) {\n this.setAttribute('role', 'menuitemradio');\n this.setAttribute('aria-checked', this.ariaChecked + '');\n } else if (!this.getAttribute('role')) {\n this.setAttribute('role', 'menuitem');\n }\n }\n\n firstUpdated() {\n this.hasSubmenu = !!this.querySelector('[slot=\"submenu\"]');\n\n this.dispatchIconDetect();\n this.isRtl = document.dir === 'rtl';\n this._registerSubMenuItems();\n\n this._updateAttributes();\n\n this.addEventListener(`${prefix}-menu-closed`, () => {\n this.focus();\n this._closeSubmenu();\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452\n updated(_changedProperties: PropertyValues): void {\n if (this.hasSubmenu) {\n this.setAttribute('aria-expanded', this.hasSubmenu + '');\n } else {\n this.removeAttribute('aria-expanded');\n }\n if (this.kind === MENU_ITEM_KIND.DANGER)\n this.classList.toggle(`${prefix}--menu-item--danger`);\n }\n\n @HostListener('click', { capture: true })\n handleClick(event: MouseEvent) {\n this._handleClick(event);\n }\n\n @HostListener('mouseenter')\n handleMouseEnter() {\n if (this.hasSubmenu) {\n this._handleMouseEnter();\n }\n }\n\n @HostListener('mouseleave')\n handleMouseLeave() {\n if (this.hasSubmenu) {\n this._handleMouseLeave();\n }\n }\n\n @HostListener('keydown')\n handleKeyDown(event: KeyboardEvent) {\n this._handleKeyDown(event);\n }\n\n render() {\n const { label, shortcut, submenuOpen, boundaries, isRtl } = this;\n\n const menuClassName = this.context?.hasSelectableItems\n ? `${prefix}--menu--with-selectable-items`\n : '';\n\n return html`\n <div class=\"${prefix}--menu-item__selection-icon\">\n ${this.ariaChecked === 'true' ? iconLoader(Checkmark16) : undefined}\n </div>\n\n <div class=\"${prefix}--menu-item__icon\">\n <slot name=\"render-icon\"></slot>\n </div>\n <div class=\"${prefix}--menu-item__label\">${label}</div>\n ${shortcut && !this.hasSubmenu\n ? html` <div class=\"${prefix}--menu-item__shortcut\">${shortcut}</div> `\n : html``}\n ${this.hasSubmenu\n ? html`\n <div class=\"${prefix}--menu-item__shortcut\">\n ${isRtl ? iconLoader(CaretLeft16) : iconLoader(CaretRight16)}\n </div>\n <cds-menu\n className=${menuClassName}\n size=${this.parentElement?.getAttribute('size') ??\n MENU_SIZE.LARGE}\n ?isChild=\"${this.hasSubmenu}\"\n label=\"${label}\"\n .open=\"${submenuOpen}\"\n .x=\"${boundaries.x}\"\n .y=\"${boundaries.y}\">\n <slot name=\"submenu\"></slot>\n </cds-menu>\n `\n : html``}\n `;\n }\n\n _handleClick = (e: MouseEvent | KeyboardEvent): void => {\n if (this.hasSubmenu) {\n this._openSubmenu();\n } else if (e.type === 'keydown') {\n this.click();\n }\n };\n _handleMouseEnter = () => {\n this.hoverIntentTimeout = setTimeout(() => {\n this._openSubmenu();\n }, this.hoverIntentDelay);\n };\n _handleMouseLeave = () => {\n if (this.hoverIntentTimeout) {\n clearTimeout(this.hoverIntentTimeout);\n this._closeSubmenu();\n this.focus();\n }\n };\n _openSubmenu = () => {\n const { x, y, width, height } = this.getBoundingClientRect();\n if (this.isRtl) {\n this.boundaries = {\n x: [-x, x - width],\n y: [y, y + height],\n };\n } else {\n this.boundaries = {\n x: [x, x + width],\n y: [y, y + height],\n };\n }\n this.submenuOpen = true;\n };\n _registerSubMenuItems = () => {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n const submenuSlot = this.shadowRoot?.querySelector(\n 'slot[name=\"submenu\"]'\n ) as HTMLSlotElement;\n\n const item = submenuSlot?.assignedElements?.()?.[0];\n if (item) {\n switch (item.tagName) {\n case 'CDS-MENU-ITEM-RADIO-GROUP':\n this.submenuEntry = item.querySelector(`${prefix}-menu-item`);\n break;\n case 'CDS-MENU-ITEM-GROUP': {\n const slotElements = item.shadowRoot\n ?.querySelector('slot')\n ?.assignedElements();\n const firstElement = slotElements?.length && slotElements[0];\n this.submenuEntry = firstElement;\n break;\n }\n case 'CDS-MENU-ITEM':\n this.submenuEntry = item;\n break;\n }\n }\n }\n }\n });\n observer.observe(this.shadowRoot as Node, {\n childList: true,\n subtree: true,\n });\n };\n _closeSubmenu = () => {\n this.boundaries = {\n x: -1,\n y: -1,\n };\n this.submenuOpen = false;\n (\n this.shadowRoot?.querySelector(`.${prefix}--menu-item`) as HTMLLIElement\n )?.focus();\n };\n _handleKeyDown = (e: KeyboardEvent) => {\n if (this.hasSubmenu && ['ArrowRight', 'Enter', ' '].includes(e.key)) {\n this._openSubmenu();\n setTimeout(() => {\n this.submenuEntry.focus();\n });\n e.stopPropagation();\n } else if (e.key === 'Enter' || e.key === ' ') {\n this._handleClick(e);\n }\n };\n\n static styles = styles;\n}\nexport default CDSmenuItem;\n"],"names":["customElement"],"mappings":"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"}
1
+ {"version":3,"file":"menu-item.js","sources":["../../../src/components/menu/menu-item.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, PropertyValues, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport styles from './menu-item.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { consume } from '@lit/context';\nimport { MenuContext } from './menu-context';\nimport Checkmark16 from '@carbon/icons/es/checkmark/16.js';\nimport CaretLeft16 from '@carbon/icons/es/caret--left/16.js';\nimport CaretRight16 from '@carbon/icons/es/caret--right/16.js';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { MENU_ITEM_KIND, MENU_SIZE } from './defs';\nimport { iconLoader } from '../../globals/internal/icon-loader';\n\nexport { MENU_ITEM_KIND, MENU_SIZE };\nexport const MENU_CLOSE_ROOT_EVENT = `${prefix}-menu-close-root-request`;\n\n/**\n * Menu Item.\n *\n * @element cds-menu-item\n */\n@customElement(`${prefix}-menu-item`)\nclass CDSmenuItem extends HostListenerMixin(HostListenerMixin(LitElement)) {\n @consume({ context: MenuContext })\n context;\n\n readonly hoverIntentDelay = 150; // in ms\n hoverIntentTimeout;\n /**\n * Label for the menu item.\n */\n @property({ type: String })\n label;\n /**\n * Shortcut for the menu item.\n */\n @property({ type: String })\n shortcut;\n /**\n * Disabled property for the menu item.\n */\n @property({ type: Boolean })\n disabled;\n\n /**\n * Whether the menu submen for an item is open or not.\n */\n @property({ type: Boolean })\n submenuOpen = false;\n\n @property()\n kind = MENU_ITEM_KIND.DEFAULT;\n /**\n * Menu boundaries.\n */\n @property()\n boundaries: {\n x: number | [number, number];\n y: number | [number, number];\n } = { x: -1, y: -1 };\n\n @property({ attribute: 'aria-checked' })\n ariaChecked: string | null = this.getAttribute('selected') ?? 'false';\n\n /**\n * Entrypoint.\n */\n @state()\n submenuEntry;\n /**\n * Checks if document direction is rtl.\n */\n @state()\n isRtl = false;\n /**\n * Checks if document direction is rtl.\n */\n @state()\n hasSubmenu = false;\n\n async dispatchIconDetect() {\n const hasRenderIcon = !!this.querySelector('[slot=\"render-icon\"]');\n if (hasRenderIcon) {\n await undefined; // this is used to replace setTimeout with 0 time out, which is much fater.\n this.dispatchEvent(\n new CustomEvent('icon-detect', {\n bubbles: true, // Allows event to bubble up the DOM\n composed: true, // Allows event to cross shadow DOM boundary\n })\n );\n }\n }\n\n private _updateAttributes() {\n if (this.disabled && !this.hasSubmenu) {\n this.setAttribute('aria-disabled', this.disabled);\n this.setAttribute('tabindex', '-1');\n } else {\n this.removeAttribute('aria-disabled');\n this.setAttribute('tabindex', '0');\n }\n if (this.hasSubmenu) {\n this.setAttribute('aria-haspopup', this.hasSubmenu + '');\n } else {\n this.removeAttribute('aria-haspopup');\n }\n if (this.closest(`${prefix}-menu-item-radio-group`)) {\n this.setAttribute('role', 'menuitemradio');\n this.setAttribute('aria-checked', this.ariaChecked + '');\n } else if (!this.getAttribute('role')) {\n this.setAttribute('role', 'menuitem');\n }\n }\n\n firstUpdated() {\n this.hasSubmenu = !!this.querySelector('[slot=\"submenu\"]');\n\n this.dispatchIconDetect();\n this.isRtl = document.dir === 'rtl';\n this._registerSubMenuItems();\n\n this._updateAttributes();\n\n this.addEventListener(`${prefix}-menu-closed`, () => {\n this.focus();\n this._closeSubmenu();\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452\n updated(_changedProperties: PropertyValues): void {\n if (this.hasSubmenu) {\n this.setAttribute('aria-expanded', this.hasSubmenu + '');\n } else {\n this.removeAttribute('aria-expanded');\n }\n if (this.kind === MENU_ITEM_KIND.DANGER)\n this.classList.toggle(`${prefix}--menu-item--danger`);\n }\n\n @HostListener('click', { capture: true })\n handleClick(event: MouseEvent) {\n this._handleClick(event);\n }\n\n @HostListener('mouseenter')\n handleMouseEnter() {\n if (this.hasSubmenu) {\n this._handleMouseEnter();\n }\n }\n\n @HostListener('mouseleave')\n handleMouseLeave() {\n if (this.hasSubmenu) {\n this._handleMouseLeave();\n }\n }\n\n @HostListener('keydown')\n handleKeyDown(event: KeyboardEvent) {\n this._handleKeyDown(event);\n }\n\n render() {\n const { label, shortcut, submenuOpen, boundaries, isRtl } = this;\n\n const menuClassName = this.context?.hasSelectableItems\n ? `${prefix}--menu--with-selectable-items`\n : '';\n\n return html`\n <div class=\"${prefix}--menu-item__selection-icon\">\n ${this.ariaChecked === 'true' ? iconLoader(Checkmark16) : undefined}\n </div>\n\n <div class=\"${prefix}--menu-item__icon\">\n <slot name=\"render-icon\"></slot>\n </div>\n <div class=\"${prefix}--menu-item__label\">${label}</div>\n ${shortcut && !this.hasSubmenu\n ? html` <div class=\"${prefix}--menu-item__shortcut\">${shortcut}</div> `\n : html``}\n ${this.hasSubmenu\n ? html`\n <div class=\"${prefix}--menu-item__shortcut\">\n ${isRtl ? iconLoader(CaretLeft16) : iconLoader(CaretRight16)}\n </div>\n <cds-menu\n className=${menuClassName}\n size=${this.parentElement?.getAttribute('size') ??\n MENU_SIZE.LARGE}\n ?isChild=\"${this.hasSubmenu}\"\n label=\"${label}\"\n .open=\"${submenuOpen}\"\n .x=\"${boundaries.x}\"\n .y=\"${boundaries.y}\">\n <slot name=\"submenu\"></slot>\n </cds-menu>\n `\n : html``}\n `;\n }\n\n _handleClick = (e: MouseEvent | KeyboardEvent): void => {\n if (this.hasSubmenu) {\n this._openSubmenu();\n return;\n }\n\n if (e.type === 'keydown') {\n this.click();\n return;\n }\n\n this.dispatchEvent(\n new CustomEvent(MENU_CLOSE_ROOT_EVENT, {\n bubbles: true,\n composed: true,\n detail: {\n triggerEvent: e,\n },\n })\n );\n };\n _handleMouseEnter = () => {\n this.hoverIntentTimeout = setTimeout(() => {\n this._openSubmenu();\n }, this.hoverIntentDelay);\n };\n _handleMouseLeave = () => {\n if (this.hoverIntentTimeout) {\n clearTimeout(this.hoverIntentTimeout);\n this._closeSubmenu();\n this.focus();\n }\n };\n _openSubmenu = () => {\n const { x, y, width, height } = this.getBoundingClientRect();\n if (this.isRtl) {\n this.boundaries = {\n x: [-x, x - width],\n y: [y, y + height],\n };\n } else {\n this.boundaries = {\n x: [x, x + width],\n y: [y, y + height],\n };\n }\n this.submenuOpen = true;\n };\n _registerSubMenuItems = () => {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n const submenuSlot = this.shadowRoot?.querySelector(\n 'slot[name=\"submenu\"]'\n ) as HTMLSlotElement;\n\n const item = submenuSlot?.assignedElements?.()?.[0];\n if (item) {\n switch (item.tagName) {\n case 'CDS-MENU-ITEM-RADIO-GROUP':\n this.submenuEntry = item.querySelector(`${prefix}-menu-item`);\n break;\n case 'CDS-MENU-ITEM-GROUP': {\n const slotElements = item.shadowRoot\n ?.querySelector('slot')\n ?.assignedElements();\n const firstElement = slotElements?.length && slotElements[0];\n this.submenuEntry = firstElement;\n break;\n }\n case 'CDS-MENU-ITEM':\n this.submenuEntry = item;\n break;\n }\n }\n }\n }\n });\n observer.observe(this.shadowRoot as Node, {\n childList: true,\n subtree: true,\n });\n };\n _closeSubmenu = () => {\n this.boundaries = {\n x: -1,\n y: -1,\n };\n this.submenuOpen = false;\n (\n this.shadowRoot?.querySelector(`.${prefix}--menu-item`) as HTMLLIElement\n )?.focus();\n };\n _handleKeyDown = (e: KeyboardEvent) => {\n if (this.hasSubmenu && ['ArrowRight', 'Enter', ' '].includes(e.key)) {\n this._openSubmenu();\n setTimeout(() => {\n this.submenuEntry.focus();\n });\n e.stopPropagation();\n } else if (e.key === 'Enter' || e.key === ' ') {\n this._handleClick(e);\n }\n };\n\n static styles = styles;\n}\nexport default CDSmenuItem;\n"],"names":["customElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAKG;AAkBI,MAAM,qBAAqB,GAAG,CAAA,EAAG,MAAM;AAE9C;;;;AAIG;AAEH,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAA;AAA1E,IAAA,WAAA,GAAA;;;AAIW,QAAA,IAAA,CAAA,gBAAgB,GAAG,GAAG,CAAC;AAkBhC;;AAEG;QAEH,IAAA,CAAA,WAAW,GAAG,KAAK;AAGnB,QAAA,IAAA,CAAA,IAAI,GAAG,cAAc,CAAC,OAAO;AAC7B;;AAEG;AAEH,QAAA,IAAA,CAAA,UAAU,GAGN,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QAGpB,IAAA,CAAA,WAAW,GAAkB,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,OAAO;AAOrE;;AAEG;QAEH,IAAA,CAAA,KAAK,GAAG,KAAK;AACb;;AAEG;QAEH,IAAA,CAAA,UAAU,GAAG,KAAK;AA8HlB,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,CAA6B,KAAU;AACrD,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,YAAY,EAAE;gBACnB;YACF;AAEA,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE;gBACxB,IAAI,CAAC,KAAK,EAAE;gBACZ;YACF;AAEA,YAAA,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,qBAAqB,EAAE;AACrC,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,MAAM,EAAE;AACN,oBAAA,YAAY,EAAE,CAAC;AAChB,iBAAA;AACF,aAAA,CAAC,CACH;AACH,QAAA,CAAC;QACD,IAAA,CAAA,iBAAiB,GAAG,MAAK;AACvB,YAAA,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,MAAK;gBACxC,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC3B,QAAA,CAAC;QACD,IAAA,CAAA,iBAAiB,GAAG,MAAK;AACvB,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,gBAAA,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBACrC,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,KAAK,EAAE;YACd;AACF,QAAA,CAAC;QACD,IAAA,CAAA,YAAY,GAAG,MAAK;AAClB,YAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAC5D,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,UAAU,GAAG;oBAChB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;AAClB,oBAAA,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;iBACnB;YACH;iBAAO;gBACL,IAAI,CAAC,UAAU,GAAG;AAChB,oBAAA,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;AACjB,oBAAA,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;iBACnB;YACH;AACA,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,QAAA,CAAC;QACD,IAAA,CAAA,qBAAqB,GAAG,MAAK;YAC3B,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,aAAa,KAAI;;AACtD,gBAAA,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;AACpC,oBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;wBACjC,MAAM,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,aAAa,CAChD,sBAAsB,CACJ;AAEpB,wBAAA,MAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,WAAA,CAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAG,CAAC,CAAC;wBACnD,IAAI,IAAI,EAAE;AACR,4BAAA,QAAQ,IAAI,CAAC,OAAO;AAClB,gCAAA,KAAK,2BAA2B;oCAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAA,EAAG,MAAM,CAAA,UAAA,CAAY,CAAC;oCAC7D;gCACF,KAAK,qBAAqB,EAAE;AAC1B,oCAAA,MAAM,YAAY,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAChC,aAAa,CAAC,MAAM,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CACrB,gBAAgB,EAAE;AACtB,oCAAA,MAAM,YAAY,GAAG,CAAA,YAAY,aAAZ,YAAY,KAAA,MAAA,GAAA,MAAA,GAAZ,YAAY,CAAE,MAAM,KAAI,YAAY,CAAC,CAAC,CAAC;AAC5D,oCAAA,IAAI,CAAC,YAAY,GAAG,YAAY;oCAChC;gCACF;AACA,gCAAA,KAAK,eAAe;AAClB,oCAAA,IAAI,CAAC,YAAY,GAAG,IAAI;oCACxB;;wBAEN;oBACF;gBACF;AACF,YAAA,CAAC,CAAC;AACF,YAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAkB,EAAE;AACxC,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,OAAO,EAAE,IAAI;AACd,aAAA,CAAC;AACJ,QAAA,CAAC;QACD,IAAA,CAAA,aAAa,GAAG,MAAK;;YACnB,IAAI,CAAC,UAAU,GAAG;gBAChB,CAAC,EAAE,EAAE;gBACL,CAAC,EAAE,EAAE;aACN;AACD,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,CAAA,EAAA,GACE,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,0CAAE,aAAa,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,WAAA,CAAa,CACvD,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE;AACZ,QAAA,CAAC;AACD,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,CAAgB,KAAI;AACpC,YAAA,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACnE,IAAI,CAAC,YAAY,EAAE;gBACnB,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AAC3B,gBAAA,CAAC,CAAC;gBACF,CAAC,CAAC,eAAe,EAAE;YACrB;AAAO,iBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE;AAC7C,gBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACtB;AACF,QAAA,CAAC;IAGH;AAtOE,IAAA,MAAM,kBAAkB,GAAA;QACtB,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC;QAClE,IAAI,aAAa,EAAE;YACjB,MAAM,SAAS,CAAC;AAChB,YAAA,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,aAAa,EAAE;gBAC7B,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;AACf,aAAA,CAAC,CACH;QACH;IACF;IAEQ,iBAAiB,GAAA;QACvB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACrC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC;AACjD,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;QACrC;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;AACrC,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;QACpC;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAC1D;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;QACvC;QACA,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,CAAA,sBAAA,CAAwB,CAAC,EAAE;AACnD,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAC1D;aAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;QACvC;IACF;IAEA,YAAY,GAAA;QACV,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;QAE1D,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,KAAK,KAAK;QACnC,IAAI,CAAC,qBAAqB,EAAE;QAE5B,IAAI,CAAC,iBAAiB,EAAE;QAExB,IAAI,CAAC,gBAAgB,CAAC,CAAA,EAAG,MAAM,CAAA,YAAA,CAAc,EAAE,MAAK;YAClD,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,aAAa,EAAE;AACtB,QAAA,CAAC,CAAC;IACJ;;AAGA,IAAA,OAAO,CAAC,kBAAkC,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAC1D;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;QACvC;AACA,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM;YACrC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,EAAG,MAAM,CAAA,mBAAA,CAAqB,CAAC;IACzD;AAGA,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC1B;IAGA,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;IAGA,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;AAGA,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IAC5B;IAEA,MAAM,GAAA;;AACJ,QAAA,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI;QAEhE,MAAM,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,0CAAE,kBAAkB;cAClD,CAAA,EAAG,MAAM,CAAA,6BAAA;cACT,EAAE;AAEN,QAAA,OAAO,IAAI,CAAA;oBACK,MAAM,CAAA;AAChB,QAAA,EAAA,IAAI,CAAC,WAAW,KAAK,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,SAAS;;;oBAGvD,MAAM,CAAA;;;AAGN,kBAAA,EAAA,MAAM,uBAAuB,KAAK,CAAA;AAC9C,MAAA,EAAA,QAAQ,IAAI,CAAC,IAAI,CAAC;AAClB,cAAE,IAAI,CAAA,gBAAgB,MAAM,CAAA,uBAAA,EAA0B,QAAQ,CAAA,OAAA;cAC5D,IAAI,CAAA,CAAA,CAAE;AACR,MAAA,EAAA,IAAI,CAAC;cACH,IAAI,CAAA;0BACY,MAAM,CAAA;AAChB,cAAA,EAAA,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC;;;0BAGhD,aAAa;AAClB,mBAAA,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,YAAY,CAAC,MAAM,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAC/C,SAAS,CAAC,KAAK;AACH,wBAAA,EAAA,IAAI,CAAC,UAAU,CAAA;uBAClB,KAAK,CAAA;uBACL,WAAW,CAAA;AACd,kBAAA,EAAA,UAAU,CAAC,CAAC,CAAA;AACZ,kBAAA,EAAA,UAAU,CAAC,CAAC,CAAA;;;AAGrB,UAAA;cACD,IAAI,CAAA,CAAA,CAAE;KACX;IACH;;AA2GO,WAAA,CAAA,MAAM,GAAG,MAAH;AA7Rb,UAAA,CAAA;AADC,IAAA,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE;AACzB,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA;AAQR,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AACpB,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAKN,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AACjB,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAKT,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;AAClB,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAMT,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;AACP,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,aAAA,EAAA,MAAA,CAAA;AAGpB,UAAA,CAAA;AADC,IAAA,QAAQ;AACqB,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAK9B,UAAA,CAAA;AADC,IAAA,QAAQ;AAIY,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,CAAA;AAGrB,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE;AAC+B,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,aAAA,EAAA,MAAA,CAAA;AAMtE,UAAA,CAAA;AADC,IAAA,KAAK;AACO,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,cAAA,EAAA,MAAA,CAAA;AAKb,UAAA,CAAA;AADC,IAAA,KAAK;AACQ,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAKd,UAAA,CAAA;AADC,IAAA,KAAK;AACa,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,CAAA;AA+DnB,UAAA,CAAA;IADC,YAAY,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAGvC,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,YAAY,CAAC,YAAY;AAKzB,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,YAAY,CAAC,YAAY;AAKzB,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,YAAY,CAAC,SAAS;AAGtB,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA;AA5IG,WAAW,GAAA,UAAA,CAAA;AADhB,IAAAA,aAAa,CAAC,CAAA,EAAG,MAAM,CAAA,UAAA,CAAY;AAC9B,CAAA,EAAA,WAAW,CAgShB;AACD,oBAAe,WAAW;;;;"}
@@ -459,6 +459,7 @@ declare class CDSMenu extends CDSMenu_base {
459
459
  static get eventOnOpen(): string;
460
460
  updated(changedProperties: any): void;
461
461
  connectedCallback(): void;
462
+ disconnectedCallback(): void;
462
463
  firstUpdated(): Promise<void>;
463
464
  render(): import("lit-html").TemplateResult<1>;
464
465
  _handleKeyDown: (e: KeyboardEvent) => void;
@@ -469,7 +470,9 @@ declare class CDSMenu extends CDSMenu_base {
469
470
  _getPosition: (x: number | (number | null | undefined)[]) => number[] | undefined;
470
471
  _calculatePosition: () => number[];
471
472
  _handleOpen: () => Promise<void>;
472
- dispatchCloseEvent: (e: any) => void;
473
+ dispatchCloseEvent: (e?: Event) => void;
474
+ private _handleClose;
475
+ private _handleRootCloseRequest;
473
476
  _newContextCreate: () => void;
474
477
  _registerMenuItems: () => void;
475
478
  _setActiveItems: () => void;
@@ -15,6 +15,7 @@ import HostListener from '../../globals/decorators/host-listener.js';
15
15
  import HostListenerMixin from '../../globals/mixins/host-listener.js';
16
16
  import { classMap } from 'lit/directives/class-map.js';
17
17
  import { menuDefaultState, MenuContext } from './menu-context.js';
18
+ import { MENU_CLOSE_ROOT_EVENT } from './menu-item.js';
18
19
  import { provide, consume } from '@lit/context';
19
20
  import { MENU_SIZE, MENU_BACKGROUND_TOKEN } from './defs.js';
20
21
 
@@ -288,13 +289,27 @@ let CDSMenu = class CDSMenu extends HostListenerMixin(LitElement) {
288
289
  cancelable: true,
289
290
  composed: true,
290
291
  detail: {
291
- triggeredBy: e.target,
292
+ triggeredBy: e === null || e === void 0 ? void 0 : e.target,
293
+ triggerEventType: e === null || e === void 0 ? void 0 : e.type,
292
294
  },
293
295
  };
294
296
  if (this.dispatchEvent(new CustomEvent(this.constructor.eventOnClose, init))) {
295
297
  this.dispatchEvent(new CustomEvent(this.constructor.eventOnClose, init));
296
298
  }
297
299
  };
300
+ this._handleClose = () => {
301
+ this.position = [-1, -1];
302
+ this.style.removeProperty('inset-inline-start');
303
+ this.style.removeProperty('inset-inline-end');
304
+ this.style.removeProperty('inset-block-start');
305
+ };
306
+ this._handleRootCloseRequest = (event) => {
307
+ var _a, _b, _c;
308
+ if (!((_a = this.context) === null || _a === void 0 ? void 0 : _a.isRoot)) {
309
+ return;
310
+ }
311
+ this.dispatchCloseEvent((_c = (_b = event.detail) === null || _b === void 0 ? void 0 : _b.triggerEvent) !== null && _c !== void 0 ? _c : event);
312
+ };
298
313
  this._newContextCreate = () => {
299
314
  this.context = Object.assign(Object.assign({}, this.context), { isRoot: false, size: this.size });
300
315
  };
@@ -379,8 +394,13 @@ let CDSMenu = class CDSMenu extends HostListenerMixin(LitElement) {
379
394
  return `${prefix}-menu-opened`;
380
395
  }
381
396
  updated(changedProperties) {
382
- if (changedProperties.has('open') && this.open) {
383
- this._handleOpen();
397
+ if (changedProperties.has('open')) {
398
+ if (this.open) {
399
+ this._handleOpen();
400
+ }
401
+ else {
402
+ this._handleClose();
403
+ }
384
404
  }
385
405
  }
386
406
  connectedCallback() {
@@ -389,6 +409,11 @@ let CDSMenu = class CDSMenu extends HostListenerMixin(LitElement) {
389
409
  var _a, _b;
390
410
  (_b = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.cds--menu')) === null || _b === void 0 ? void 0 : _b.classList.add(`${prefix}--menu--with-icons`);
391
411
  });
412
+ this.addEventListener(MENU_CLOSE_ROOT_EVENT, this._handleRootCloseRequest);
413
+ }
414
+ disconnectedCallback() {
415
+ this.removeEventListener(MENU_CLOSE_ROOT_EVENT, this._handleRootCloseRequest);
416
+ super.disconnectedCallback();
392
417
  }
393
418
  async firstUpdated() {
394
419
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","sources":["../../../src/components/menu/menu.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2024, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, html } from 'lit';\nimport { prefix } from '../../globals/settings';\nimport { property, state } from 'lit/decorators.js';\nimport styles from './menu.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { MenuContext, menuDefaultState } from './menu-context';\nimport CDSmenuItem from './menu-item';\nimport { consume, provide } from '@lit/context';\nimport { MENU_BACKGROUND_TOKEN, MENU_SIZE } from './defs';\n\nexport { MENU_SIZE };\n\n/**\n * Menu.\n *\n * @element cds-menu\n * @deprecated Menus now always support both icons as well as selectable items and nesting.\n */\n\ntype activeItemType = {\n item: CDSmenuItem;\n parent: HTMLElement | null;\n};\n\n@customElement(`${prefix}-menu`)\nclass CDSMenu extends HostListenerMixin(LitElement) {\n @provide({ context: MenuContext })\n @consume({ context: MenuContext })\n context = {\n ...menuDefaultState,\n updateFromChild: (updatedItem) => {\n this.context = {\n ...this.context,\n ...updatedItem,\n };\n },\n };\n\n readonly spacing: number = 8; // distance to keep to window edges, in px\n\n /**\n * Items.\n */\n @state()\n items: Element[] | undefined = [];\n\n /**\n * Active list Items.\n */\n @state()\n activeitems: activeItemType[] = [];\n\n /**\n * Label for the menu.\n */\n @property({ type: String })\n label;\n /**\n * Parent state.\n */\n @property({ type: Boolean })\n isChild = false;\n /**\n * Action button width.\n */\n @property()\n actionButtonWidth;\n /**\n * Checks if document direction is rtl.\n */\n @property({ type: Boolean })\n isRtl = false;\n /**\n * Checks if Menu is root menu or not.\n */\n @property({ type: Boolean })\n isRoot = true;\n\n /**\n * Document direction.\n */\n @property({ type: String })\n direction = 'ltr';\n /**\n * Open value for the menu .\n */\n @property({ type: Boolean, reflect: true })\n open = true;\n /**\n * Active element in the DOM .\n */\n @property({ type: HTMLElement })\n focusreturn;\n /**\n * Position of the Menu .\n */\n @property()\n position = [-1, -1];\n /**\n * Size attribute .\n */\n @property({ attribute: true })\n size = MENU_SIZE.SMALL;\n /**\n * Deprecated: Menus now always support both icons as well as selectable items and nesting. The mode of this menu. Defaults to full. full supports nesting and selectable menu items, but no icons. basic supports icons but no nesting or selectable menu items.\n\n This prop is not intended for use and will be set by the respective implementation (like useContextMenu, MenuButton, and ComboButton).\n */\n @property()\n mode;\n\n /**\n * Specify the background token to use. Default is 'layer'.\n */\n @property({ type: String, attribute: 'background-token' })\n backgroundToken = MENU_BACKGROUND_TOKEN.LAYER;\n\n /**\n * Specify whether a border should be rendered on the menu\n */\n @property({ type: Boolean })\n border = false;\n\n /**\n * Specify how the menu should align with the button element\n */\n @property({ type: String })\n menuAlignment;\n /**\n * Position of the Menu in X axis .\n */\n @property()\n x: number | number[] = 0;\n /**\n * Position of the Menu in Y axis .\n */\n @property()\n y: number | number[] = 0;\n\n @HostListener('focusout')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBlur = (e: FocusEvent) => {\n const { isRoot } = this.context;\n // Close the menu if all of the following are met:\n // * The menu is open\n // * The focusout event is on the root menu\n // * Focus is moving outside the menu\n if (this.open && isRoot && !this.contains(e.relatedTarget as Node)) {\n this.dispatchCloseEvent(e);\n }\n };\n\n /**\n * The name of the custom event fired when the the Menu should be closed.\n */\n static get eventOnClose() {\n return `${prefix}-menu-closed`;\n }\n /**\n * The name of the custom event fired when the the Menu should be opened.\n */\n static get eventOnOpen() {\n return `${prefix}-menu-opened`;\n }\n updated(changedProperties) {\n if (changedProperties.has('open') && this.open) {\n this._handleOpen();\n }\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('icon-detect', () => {\n this.shadowRoot\n ?.querySelector('.cds--menu')\n ?.classList.add(`${prefix}--menu--with-icons`);\n });\n }\n async firstUpdated() {\n this.isRtl = this.direction === 'rtl';\n this.isRoot = this.context.isRoot;\n\n if (this.isChild) {\n this._newContextCreate();\n }\n await this.updateComplete;\n this._registerMenuItems();\n this._setActiveItems();\n\n const slot = this.shadowRoot?.querySelector('slot');\n slot?.addEventListener('slotchange', () => {\n this._registerMenuItems();\n this._setActiveItems();\n });\n }\n render() {\n const {\n open,\n menuAlignment,\n label,\n position,\n _handleKeyDown: handleKeyDown,\n } = this;\n const menuClasses = classMap({\n [`${prefix}--menu`]: true,\n [`${prefix}--menu--${this.size}`]: this.size,\n [`${prefix}--menu--box-shadow-top`]:\n menuAlignment && menuAlignment.slice(0, 3) === 'top',\n [`${prefix}--menu--open`]: open,\n [`${prefix}--menu--shown`]: position[0] >= 0 && position[1] >= 0,\n [`${prefix}--menu--with-selectable-items`]:\n this.context.hasSelectableItems,\n [`${prefix}--menu--border`]: this.border,\n [`${prefix}--menu--background-token__background`]:\n this.backgroundToken === MENU_BACKGROUND_TOKEN.BACKGROUND,\n });\n return html`\n <ul\n class=\"${menuClasses}\"\n aria-label=\"${label}\"\n tabindex=\"-1\"\n @keydown=\"${handleKeyDown}\"\n role=\"menu\">\n <slot></slot>\n </ul>\n `;\n }\n\n _handleKeyDown = (e: KeyboardEvent) => {\n const { isRoot } = this.context;\n e.stopPropagation();\n // if the user presses escape or this is a submenu\n // and the user presses ArrowLeft, close it\n\n if (e.key === 'Escape' || (!isRoot && e.key === 'ArrowLeft')) {\n this.dispatchCloseEvent(e);\n } else {\n // Prevent scrolling when navigating menu items\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n }\n this._focusItem(e);\n }\n };\n\n _focusItem = (e: KeyboardEvent | undefined) => {\n let currentItem: number;\n\n if (document.activeElement?.tagName !== 'CDS-MENU') {\n const shadowRootActiveEl = this._findActiveElementInShadowRoot(document);\n currentItem = this.activeitems.findIndex((activeItem) => {\n return (\n shadowRootActiveEl == activeItem.item ||\n activeItem.item.shadowRoot?.activeElement === shadowRootActiveEl\n );\n });\n } else {\n currentItem = 0;\n }\n\n let indexToFocus = currentItem;\n // if currentItem is -1, no menu item is focused yet.\n // in this case, the first item should receive focus.\n if (currentItem === -1) {\n indexToFocus = 0;\n } else if (e) {\n if (e.key === 'ArrowUp') {\n indexToFocus = indexToFocus - 1;\n }\n if (e.key === 'ArrowDown') {\n indexToFocus = indexToFocus + 1;\n }\n }\n if (indexToFocus < 0) {\n indexToFocus = this.activeitems.length - 1;\n }\n if (indexToFocus >= this.activeitems.length) {\n indexToFocus = 0;\n }\n\n if (indexToFocus !== currentItem) {\n this.activeitems[indexToFocus]?.item?.focus();\n }\n };\n _findActiveElementInShadowRoot = (shadowRoot) => {\n if (shadowRoot === null) return null;\n\n let activeElement = shadowRoot.activeElement;\n while (\n activeElement &&\n activeElement.shadowRoot &&\n activeElement.shadowRoot.activeElement\n ) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n };\n\n _notEmpty = (value: number | null | undefined) => {\n return value !== null && value !== undefined;\n };\n _fitValue = (range: number[], axis: 'x' | 'y') => {\n const { isRoot } = this.context;\n\n // const isRoot = false\n const menuElement = this.shadowRoot?.querySelector(`.${prefix}--menu`);\n const { width, height } = (menuElement ?? this).getBoundingClientRect();\n const alignment = isRoot ? 'vertical' : 'horizontal';\n const axes = {\n x: {\n max: window.innerWidth,\n size: width,\n anchor: alignment === 'horizontal' ? range[1] : range[0],\n reversedAnchor: alignment === 'horizontal' ? range[0] : range[1],\n offset: 0,\n },\n y: {\n max: window.innerHeight,\n size: height,\n anchor: alignment === 'horizontal' ? range[0] : range[1],\n reversedAnchor: alignment === 'horizontal' ? range[1] : range[0],\n offset: isRoot ? 0 : 4, // top padding in menu, used to align the menu items\n },\n };\n\n // Avoid that the Menu render incorrectly when the postion is set in the right side of the screen\n if (\n this.actionButtonWidth &&\n this.actionButtonWidth < axes.x.size &&\n (this.menuAlignment === 'bottom' || this.menuAlignment === 'top')\n ) {\n axes.x.size = this.actionButtonWidth;\n }\n\n // if 'axes.x.anchor' is lower than 87px dynamically switch render side\n if (\n this.actionButtonWidth &&\n (this.menuAlignment === 'bottom-end' ||\n this.menuAlignment === 'top-end') &&\n axes.x.anchor >= 87 &&\n this.actionButtonWidth < axes.x.size\n ) {\n const diff = axes.x.anchor + axes.x.reversedAnchor;\n axes.x.anchor = axes.x.anchor + diff;\n }\n\n const { max, size, anchor, reversedAnchor, offset } = axes[axis];\n\n // get values for different scenarios, set to false if they don't work\n const options = [\n // towards max (preferred)\n max - this.spacing - size - anchor >= 0 ? anchor - offset : false,\n\n // towards min / reversed (first fallback)\n reversedAnchor - size >= 0 ? reversedAnchor - size + offset : false,\n\n // align at max (second fallback)\n max - this.spacing - size,\n ];\n const topAlignment =\n this.menuAlignment === 'top' ||\n this.menuAlignment === 'top-end' ||\n this.menuAlignment === 'top-start';\n // If the tooltip is not visible in the top, switch to the bototm\n if (\n typeof options[0] === 'number' &&\n topAlignment &&\n options[0] >= 0 &&\n !options[1] &&\n axis === 'y'\n ) {\n this.style.transform = 'translate(0)';\n } else if (topAlignment && !options[0] && axis === 'y') {\n options[0] = anchor - offset;\n }\n\n // Previous array `options`, has at least one item that is a number (the last one - second fallback).\n // That guarantees that the return of `find()` will always be a number\n // and we can safely add the numeric casting `as number`.\n const bestOption = options.find((option) => option !== false) as number;\n\n return bestOption >= this.spacing ? bestOption : this.spacing;\n };\n _getPosition = (x: number | (number | null | undefined)[]) => {\n if (Array.isArray(x)) {\n // has to be of length 2\n const filtered = x.filter(this._notEmpty);\n if (filtered.length === 2) {\n return filtered;\n } else {\n return;\n }\n } else {\n return [x, x];\n }\n };\n _calculatePosition = () => {\n const ranges = {\n x: this._getPosition(this.x),\n y: this._getPosition(this.y),\n };\n\n if (!ranges.x || !ranges.y) {\n return [-1, -1];\n }\n return [\n this._fitValue(ranges.x as number[], 'x') ?? -1,\n this._fitValue(ranges.y as number[], 'y') ?? -1,\n ];\n };\n _handleOpen = async () => {\n const pos = this._calculatePosition();\n if (this.isRtl) {\n this.style.insetInlineStart = `initial`;\n this.style.insetInlineEnd = `${pos[0]}px`;\n } else {\n this.style.insetInlineStart = `${pos[0]}px`;\n this.style.insetInlineEnd = `initial`;\n }\n this.style.insetBlockStart = `${pos[1]}px`;\n this.position = pos;\n\n await this.updateComplete;\n this._registerMenuItems();\n this._setActiveItems();\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n };\n if (\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnOpen, init)\n )\n ) {\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnOpen, init)\n );\n }\n };\n dispatchCloseEvent = (e) => {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy: e.target,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnClose, init)\n )\n ) {\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnClose, init)\n );\n }\n };\n _newContextCreate = () => {\n this.context = {\n ...this.context,\n isRoot: false,\n size: this.size,\n };\n };\n _registerMenuItems = () => {\n let items;\n if (this.isChild) {\n items = (\n this.querySelector('slot[name=\"submenu\"]') as HTMLSlotElement\n ).assignedElements();\n } else {\n items = this.shadowRoot?.querySelector('slot')?.assignedElements();\n }\n this.items = items?.filter((item) => {\n if (item.tagName === 'CDS-MENU-ITEM') {\n return !(item as CDSmenuItem).disabled;\n }\n return item.tagName !== 'CDS-MENU-ITEM-DIVIDER';\n });\n };\n _setActiveItems = () => {\n this.activeitems = [];\n\n this.items?.map((item) => {\n let activeItem: activeItemType;\n switch (item.tagName) {\n case 'CDS-MENU-ITEM-RADIO-GROUP': {\n const slotElements = item.querySelectorAll(`${prefix}-menu-item`);\n if (slotElements?.length) {\n for (const entry of slotElements.entries()) {\n activeItem = {\n item: entry[1] as CDSmenuItem,\n parent: item as HTMLElement,\n };\n this.activeitems = [...this.activeitems, activeItem];\n }\n }\n break;\n }\n case 'CDS-MENU-ITEM-GROUP': {\n const slotElements = item.shadowRoot\n ?.querySelector('slot')\n ?.assignedElements();\n slotElements?.map((el) => {\n activeItem = {\n item: el as CDSmenuItem,\n parent: el as HTMLElement,\n };\n this.activeitems = [...this.activeitems, activeItem];\n });\n break;\n }\n case 'CDS-MENU-ITEM-SELECTABLE': {\n activeItem = {\n item: item.shadowRoot?.querySelector(\n `${prefix}-menu-item`\n ) as CDSmenuItem,\n parent: item as HTMLElement,\n };\n this.activeitems = [...this.activeitems, activeItem];\n break;\n }\n default: {\n activeItem = {\n item: item as CDSmenuItem,\n parent: null,\n };\n this.activeitems = [...this.activeitems, activeItem];\n }\n }\n });\n const activeEl = this.activeitems[0]?.item ?? document.activeElement;\n activeEl.focus();\n };\n static styles = styles;\n}\nexport default CDSMenu;\n"],"names":["customElement"],"mappings":"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"}
1
+ {"version":3,"file":"menu.js","sources":["../../../src/components/menu/menu.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2024, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, html } from 'lit';\nimport { prefix } from '../../globals/settings';\nimport { property, state } from 'lit/decorators.js';\nimport styles from './menu.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { MenuContext, menuDefaultState } from './menu-context';\nimport CDSmenuItem, { MENU_CLOSE_ROOT_EVENT } from './menu-item';\nimport { consume, provide } from '@lit/context';\nimport { MENU_BACKGROUND_TOKEN, MENU_SIZE } from './defs';\n\nexport { MENU_SIZE };\n\n/**\n * Menu.\n *\n * @element cds-menu\n * @deprecated Menus now always support both icons as well as selectable items and nesting.\n */\n\ntype activeItemType = {\n item: CDSmenuItem;\n parent: HTMLElement | null;\n};\n\n@customElement(`${prefix}-menu`)\nclass CDSMenu extends HostListenerMixin(LitElement) {\n @provide({ context: MenuContext })\n @consume({ context: MenuContext })\n context = {\n ...menuDefaultState,\n updateFromChild: (updatedItem) => {\n this.context = {\n ...this.context,\n ...updatedItem,\n };\n },\n };\n\n readonly spacing: number = 8; // distance to keep to window edges, in px\n\n /**\n * Items.\n */\n @state()\n items: Element[] | undefined = [];\n\n /**\n * Active list Items.\n */\n @state()\n activeitems: activeItemType[] = [];\n\n /**\n * Label for the menu.\n */\n @property({ type: String })\n label;\n /**\n * Parent state.\n */\n @property({ type: Boolean })\n isChild = false;\n /**\n * Action button width.\n */\n @property()\n actionButtonWidth;\n /**\n * Checks if document direction is rtl.\n */\n @property({ type: Boolean })\n isRtl = false;\n /**\n * Checks if Menu is root menu or not.\n */\n @property({ type: Boolean })\n isRoot = true;\n\n /**\n * Document direction.\n */\n @property({ type: String })\n direction = 'ltr';\n /**\n * Open value for the menu .\n */\n @property({ type: Boolean, reflect: true })\n open = true;\n /**\n * Active element in the DOM .\n */\n @property({ type: HTMLElement })\n focusreturn;\n /**\n * Position of the Menu .\n */\n @property()\n position = [-1, -1];\n /**\n * Size attribute .\n */\n @property({ attribute: true })\n size = MENU_SIZE.SMALL;\n /**\n * Deprecated: Menus now always support both icons as well as selectable items and nesting. The mode of this menu. Defaults to full. full supports nesting and selectable menu items, but no icons. basic supports icons but no nesting or selectable menu items.\n\n This prop is not intended for use and will be set by the respective implementation (like useContextMenu, MenuButton, and ComboButton).\n */\n @property()\n mode;\n\n /**\n * Specify the background token to use. Default is 'layer'.\n */\n @property({ type: String, attribute: 'background-token' })\n backgroundToken = MENU_BACKGROUND_TOKEN.LAYER;\n\n /**\n * Specify whether a border should be rendered on the menu\n */\n @property({ type: Boolean })\n border = false;\n\n /**\n * Specify how the menu should align with the button element\n */\n @property({ type: String })\n menuAlignment;\n /**\n * Position of the Menu in X axis .\n */\n @property()\n x: number | number[] = 0;\n /**\n * Position of the Menu in Y axis .\n */\n @property()\n y: number | number[] = 0;\n\n @HostListener('focusout')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBlur = (e: FocusEvent) => {\n const { isRoot } = this.context;\n // Close the menu if all of the following are met:\n // * The menu is open\n // * The focusout event is on the root menu\n // * Focus is moving outside the menu\n if (this.open && isRoot && !this.contains(e.relatedTarget as Node)) {\n this.dispatchCloseEvent(e);\n }\n };\n\n /**\n * The name of the custom event fired when the the Menu should be closed.\n */\n static get eventOnClose() {\n return `${prefix}-menu-closed`;\n }\n /**\n * The name of the custom event fired when the the Menu should be opened.\n */\n static get eventOnOpen() {\n return `${prefix}-menu-opened`;\n }\n updated(changedProperties) {\n if (changedProperties.has('open')) {\n if (this.open) {\n this._handleOpen();\n } else {\n this._handleClose();\n }\n }\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('icon-detect', () => {\n this.shadowRoot\n ?.querySelector('.cds--menu')\n ?.classList.add(`${prefix}--menu--with-icons`);\n });\n this.addEventListener(\n MENU_CLOSE_ROOT_EVENT,\n this._handleRootCloseRequest as EventListener\n );\n }\n\n disconnectedCallback() {\n this.removeEventListener(\n MENU_CLOSE_ROOT_EVENT,\n this._handleRootCloseRequest as EventListener\n );\n super.disconnectedCallback();\n }\n async firstUpdated() {\n this.isRtl = this.direction === 'rtl';\n this.isRoot = this.context.isRoot;\n\n if (this.isChild) {\n this._newContextCreate();\n }\n await this.updateComplete;\n this._registerMenuItems();\n this._setActiveItems();\n\n const slot = this.shadowRoot?.querySelector('slot');\n slot?.addEventListener('slotchange', () => {\n this._registerMenuItems();\n this._setActiveItems();\n });\n }\n render() {\n const {\n open,\n menuAlignment,\n label,\n position,\n _handleKeyDown: handleKeyDown,\n } = this;\n const menuClasses = classMap({\n [`${prefix}--menu`]: true,\n [`${prefix}--menu--${this.size}`]: this.size,\n [`${prefix}--menu--box-shadow-top`]:\n menuAlignment && menuAlignment.slice(0, 3) === 'top',\n [`${prefix}--menu--open`]: open,\n [`${prefix}--menu--shown`]: position[0] >= 0 && position[1] >= 0,\n [`${prefix}--menu--with-selectable-items`]:\n this.context.hasSelectableItems,\n [`${prefix}--menu--border`]: this.border,\n [`${prefix}--menu--background-token__background`]:\n this.backgroundToken === MENU_BACKGROUND_TOKEN.BACKGROUND,\n });\n return html`\n <ul\n class=\"${menuClasses}\"\n aria-label=\"${label}\"\n tabindex=\"-1\"\n @keydown=\"${handleKeyDown}\"\n role=\"menu\">\n <slot></slot>\n </ul>\n `;\n }\n\n _handleKeyDown = (e: KeyboardEvent) => {\n const { isRoot } = this.context;\n e.stopPropagation();\n // if the user presses escape or this is a submenu\n // and the user presses ArrowLeft, close it\n\n if (e.key === 'Escape' || (!isRoot && e.key === 'ArrowLeft')) {\n this.dispatchCloseEvent(e);\n } else {\n // Prevent scrolling when navigating menu items\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n }\n this._focusItem(e);\n }\n };\n\n _focusItem = (e: KeyboardEvent | undefined) => {\n let currentItem: number;\n\n if (document.activeElement?.tagName !== 'CDS-MENU') {\n const shadowRootActiveEl = this._findActiveElementInShadowRoot(document);\n currentItem = this.activeitems.findIndex((activeItem) => {\n return (\n shadowRootActiveEl == activeItem.item ||\n activeItem.item.shadowRoot?.activeElement === shadowRootActiveEl\n );\n });\n } else {\n currentItem = 0;\n }\n\n let indexToFocus = currentItem;\n // if currentItem is -1, no menu item is focused yet.\n // in this case, the first item should receive focus.\n if (currentItem === -1) {\n indexToFocus = 0;\n } else if (e) {\n if (e.key === 'ArrowUp') {\n indexToFocus = indexToFocus - 1;\n }\n if (e.key === 'ArrowDown') {\n indexToFocus = indexToFocus + 1;\n }\n }\n if (indexToFocus < 0) {\n indexToFocus = this.activeitems.length - 1;\n }\n if (indexToFocus >= this.activeitems.length) {\n indexToFocus = 0;\n }\n\n if (indexToFocus !== currentItem) {\n this.activeitems[indexToFocus]?.item?.focus();\n }\n };\n _findActiveElementInShadowRoot = (shadowRoot) => {\n if (shadowRoot === null) return null;\n\n let activeElement = shadowRoot.activeElement;\n while (\n activeElement &&\n activeElement.shadowRoot &&\n activeElement.shadowRoot.activeElement\n ) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n };\n\n _notEmpty = (value: number | null | undefined) => {\n return value !== null && value !== undefined;\n };\n _fitValue = (range: number[], axis: 'x' | 'y') => {\n const { isRoot } = this.context;\n\n // const isRoot = false\n const menuElement = this.shadowRoot?.querySelector(`.${prefix}--menu`);\n const { width, height } = (menuElement ?? this).getBoundingClientRect();\n const alignment = isRoot ? 'vertical' : 'horizontal';\n const axes = {\n x: {\n max: window.innerWidth,\n size: width,\n anchor: alignment === 'horizontal' ? range[1] : range[0],\n reversedAnchor: alignment === 'horizontal' ? range[0] : range[1],\n offset: 0,\n },\n y: {\n max: window.innerHeight,\n size: height,\n anchor: alignment === 'horizontal' ? range[0] : range[1],\n reversedAnchor: alignment === 'horizontal' ? range[1] : range[0],\n offset: isRoot ? 0 : 4, // top padding in menu, used to align the menu items\n },\n };\n\n // Avoid that the Menu render incorrectly when the postion is set in the right side of the screen\n if (\n this.actionButtonWidth &&\n this.actionButtonWidth < axes.x.size &&\n (this.menuAlignment === 'bottom' || this.menuAlignment === 'top')\n ) {\n axes.x.size = this.actionButtonWidth;\n }\n\n // if 'axes.x.anchor' is lower than 87px dynamically switch render side\n if (\n this.actionButtonWidth &&\n (this.menuAlignment === 'bottom-end' ||\n this.menuAlignment === 'top-end') &&\n axes.x.anchor >= 87 &&\n this.actionButtonWidth < axes.x.size\n ) {\n const diff = axes.x.anchor + axes.x.reversedAnchor;\n axes.x.anchor = axes.x.anchor + diff;\n }\n\n const { max, size, anchor, reversedAnchor, offset } = axes[axis];\n\n // get values for different scenarios, set to false if they don't work\n const options = [\n // towards max (preferred)\n max - this.spacing - size - anchor >= 0 ? anchor - offset : false,\n\n // towards min / reversed (first fallback)\n reversedAnchor - size >= 0 ? reversedAnchor - size + offset : false,\n\n // align at max (second fallback)\n max - this.spacing - size,\n ];\n const topAlignment =\n this.menuAlignment === 'top' ||\n this.menuAlignment === 'top-end' ||\n this.menuAlignment === 'top-start';\n // If the tooltip is not visible in the top, switch to the bototm\n if (\n typeof options[0] === 'number' &&\n topAlignment &&\n options[0] >= 0 &&\n !options[1] &&\n axis === 'y'\n ) {\n this.style.transform = 'translate(0)';\n } else if (topAlignment && !options[0] && axis === 'y') {\n options[0] = anchor - offset;\n }\n\n // Previous array `options`, has at least one item that is a number (the last one - second fallback).\n // That guarantees that the return of `find()` will always be a number\n // and we can safely add the numeric casting `as number`.\n const bestOption = options.find((option) => option !== false) as number;\n\n return bestOption >= this.spacing ? bestOption : this.spacing;\n };\n _getPosition = (x: number | (number | null | undefined)[]) => {\n if (Array.isArray(x)) {\n // has to be of length 2\n const filtered = x.filter(this._notEmpty);\n if (filtered.length === 2) {\n return filtered;\n } else {\n return;\n }\n } else {\n return [x, x];\n }\n };\n _calculatePosition = () => {\n const ranges = {\n x: this._getPosition(this.x),\n y: this._getPosition(this.y),\n };\n\n if (!ranges.x || !ranges.y) {\n return [-1, -1];\n }\n return [\n this._fitValue(ranges.x as number[], 'x') ?? -1,\n this._fitValue(ranges.y as number[], 'y') ?? -1,\n ];\n };\n _handleOpen = async () => {\n const pos = this._calculatePosition();\n if (this.isRtl) {\n this.style.insetInlineStart = `initial`;\n this.style.insetInlineEnd = `${pos[0]}px`;\n } else {\n this.style.insetInlineStart = `${pos[0]}px`;\n this.style.insetInlineEnd = `initial`;\n }\n this.style.insetBlockStart = `${pos[1]}px`;\n this.position = pos;\n\n await this.updateComplete;\n this._registerMenuItems();\n this._setActiveItems();\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n };\n if (\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnOpen, init)\n )\n ) {\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnOpen, init)\n );\n }\n };\n dispatchCloseEvent = (e?: Event) => {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy: e?.target,\n triggerEventType: e?.type,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnClose, init)\n )\n ) {\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnClose, init)\n );\n }\n };\n private _handleClose = () => {\n this.position = [-1, -1];\n this.style.removeProperty('inset-inline-start');\n this.style.removeProperty('inset-inline-end');\n this.style.removeProperty('inset-block-start');\n };\n private _handleRootCloseRequest = (\n event: CustomEvent<{ triggerEvent?: Event }>\n ) => {\n if (!this.context?.isRoot) {\n return;\n }\n\n this.dispatchCloseEvent(event.detail?.triggerEvent ?? event);\n };\n _newContextCreate = () => {\n this.context = {\n ...this.context,\n isRoot: false,\n size: this.size,\n };\n };\n _registerMenuItems = () => {\n let items;\n if (this.isChild) {\n items = (\n this.querySelector('slot[name=\"submenu\"]') as HTMLSlotElement\n ).assignedElements();\n } else {\n items = this.shadowRoot?.querySelector('slot')?.assignedElements();\n }\n this.items = items?.filter((item) => {\n if (item.tagName === 'CDS-MENU-ITEM') {\n return !(item as CDSmenuItem).disabled;\n }\n return item.tagName !== 'CDS-MENU-ITEM-DIVIDER';\n });\n };\n _setActiveItems = () => {\n this.activeitems = [];\n\n this.items?.map((item) => {\n let activeItem: activeItemType;\n switch (item.tagName) {\n case 'CDS-MENU-ITEM-RADIO-GROUP': {\n const slotElements = item.querySelectorAll(`${prefix}-menu-item`);\n if (slotElements?.length) {\n for (const entry of slotElements.entries()) {\n activeItem = {\n item: entry[1] as CDSmenuItem,\n parent: item as HTMLElement,\n };\n this.activeitems = [...this.activeitems, activeItem];\n }\n }\n break;\n }\n case 'CDS-MENU-ITEM-GROUP': {\n const slotElements = item.shadowRoot\n ?.querySelector('slot')\n ?.assignedElements();\n slotElements?.map((el) => {\n activeItem = {\n item: el as CDSmenuItem,\n parent: el as HTMLElement,\n };\n this.activeitems = [...this.activeitems, activeItem];\n });\n break;\n }\n case 'CDS-MENU-ITEM-SELECTABLE': {\n activeItem = {\n item: item.shadowRoot?.querySelector(\n `${prefix}-menu-item`\n ) as CDSmenuItem,\n parent: item as HTMLElement,\n };\n this.activeitems = [...this.activeitems, activeItem];\n break;\n }\n default: {\n activeItem = {\n item: item as CDSmenuItem,\n parent: null,\n };\n this.activeitems = [...this.activeitems, activeItem];\n }\n }\n });\n const activeEl = this.activeitems[0]?.item ?? document.activeElement;\n activeEl.focus();\n };\n static styles = styles;\n}\nexport default CDSMenu;\n"],"names":["customElement"],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
 
8
8
  import { css } from 'lit';
9
9
 
10
- var styles = css(["@keyframes cds--hide-feedback{0%{opacity:1;visibility:inherit}to{opacity:0;visibility:hidden}}@keyframes cds--show-feedback{0%{opacity:0;visibility:hidden}to{opacity:1;visibility:inherit}}@keyframes cds--skeleton{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}to{opacity:.3;transform:scaleX(0);transform-origin:left}}.cds--layout--size-xs{--cds-layout-size-height-context:var(--cds-layout-size-height-xs,1.5rem);--cds-layout-size-height:var(--cds-layout-size-height-context)}.cds--layout-constraint--size__default-xs{--cds-layout-size-height:var(--cds-layout-size-height-context,var(--cds-layout-size-height-xs,1.5rem))}.cds--layout-constraint--size__min-xs{--cds-layout-size-height-min:var(--cds-layout-size-height-xs,1.5rem)}.cds--layout-constraint--size__max-xs{--cds-layout-size-height-max:var(--cds-layout-size-height-xs,1.5rem)}.cds--layout--size-sm{--cds-layout-size-height-context:var(--cds-layout-size-height-sm,2rem);--cds-layout-size-height:var(--cds-layout-size-height-context)}.cds--layout-constraint--size__default-sm{--cds-layout-size-height:var(--cds-layout-size-height-context,var(--cds-layout-size-height-sm,2rem))}.cds--layout-constraint--size__min-sm{--cds-layout-size-height-min:var(--cds-layout-size-height-sm,2rem)}.cds--layout-constraint--size__max-sm{--cds-layout-size-height-max:var(--cds-layout-size-height-sm,2rem)}.cds--layout--size-md{--cds-layout-size-height-context:var(--cds-layout-size-height-md,2.5rem);--cds-layout-size-height:var(--cds-layout-size-height-context)}.cds--layout-constraint--size__default-md{--cds-layout-size-height:var(--cds-layout-size-height-context,var(--cds-layout-size-height-md,2.5rem))}.cds--layout-constraint--size__min-md{--cds-layout-size-height-min:var(--cds-layout-size-height-md,2.5rem)}.cds--layout-constraint--size__max-md{--cds-layout-size-height-max:var(--cds-layout-size-height-md,2.5rem)}.cds--layout--size-lg{--cds-layout-size-height-context:var(--cds-layout-size-height-lg,3rem);--cds-layout-size-height:var(--cds-layout-size-height-context)}.cds--layout-constraint--size__default-lg{--cds-layout-size-height:var(--cds-layout-size-height-context,var(--cds-layout-size-height-lg,3rem))}.cds--layout-constraint--size__min-lg{--cds-layout-size-height-min:var(--cds-layout-size-height-lg,3rem)}.cds--layout-constraint--size__max-lg{--cds-layout-size-height-max:var(--cds-layout-size-height-lg,3rem)}.cds--layout--size-xl{--cds-layout-size-height-context:var(--cds-layout-size-height-xl,4rem);--cds-layout-size-height:var(--cds-layout-size-height-context)}.cds--layout-constraint--size__default-xl{--cds-layout-size-height:var(--cds-layout-size-height-context,var(--cds-layout-size-height-xl,4rem))}.cds--layout-constraint--size__min-xl{--cds-layout-size-height-min:var(--cds-layout-size-height-xl,4rem)}.cds--layout-constraint--size__max-xl{--cds-layout-size-height-max:var(--cds-layout-size-height-xl,4rem)}.cds--layout--size-2xl{--cds-layout-size-height-context:var(--cds-layout-size-height-2xl,5rem);--cds-layout-size-height:var(--cds-layout-size-height-context)}.cds--layout-constraint--size__default-2xl{--cds-layout-size-height:var(--cds-layout-size-height-context,var(--cds-layout-size-height-2xl,5rem))}.cds--layout-constraint--size__min-2xl{--cds-layout-size-height-min:var(--cds-layout-size-height-2xl,5rem)}.cds--layout-constraint--size__max-2xl{--cds-layout-size-height-max:var(--cds-layout-size-height-2xl,5rem)}.cds--layout--density-condensed{--cds-layout-density-padding-inline-context:var(--cds-layout-density-padding-inline-condensed,0.5rem);--cds-layout-density-padding-inline:var(--cds-layout-density-padding-inline-context)}.cds--layout-constraint--density__default-condensed{--cds-layout-density-padding-inline:var(--cds-layout-density-padding-inline-context,var(--cds-layout-density-padding-inline-condensed,0.5rem))}.cds--layout-constraint--density__min-condensed{--cds-layout-density-padding-inline-min:var(--cds-layout-density-padding-inline-condensed,0.5rem)}.cds--layout-constraint--density__max-condensed{--cds-layout-density-padding-inline-max:var(--cds-layout-density-padding-inline-condensed,0.5rem)}.cds--layout--density-normal{--cds-layout-density-padding-inline-context:var(--cds-layout-density-padding-inline-normal,1rem);--cds-layout-density-padding-inline:var(--cds-layout-density-padding-inline-context)}.cds--layout-constraint--density__default-normal{--cds-layout-density-padding-inline:var(--cds-layout-density-padding-inline-context,var(--cds-layout-density-padding-inline-normal,1rem))}.cds--layout-constraint--density__min-normal{--cds-layout-density-padding-inline-min:var(--cds-layout-density-padding-inline-normal,1rem)}.cds--layout-constraint--density__max-normal{--cds-layout-density-padding-inline-max:var(--cds-layout-density-padding-inline-normal,1rem)}:root{--cds-layout-size-height-xs:1.5rem;--cds-layout-size-height-sm:2rem;--cds-layout-size-height-md:2.5rem;--cds-layout-size-height-lg:3rem;--cds-layout-size-height-xl:4rem;--cds-layout-size-height-2xl:5rem;--cds-layout-size-height-min:0px;--cds-layout-size-height-max:999999999px;--cds-layout-density-padding-inline-condensed:0.5rem;--cds-layout-density-padding-inline-normal:1rem;--cds-layout-density-padding-inline-min:0px;--cds-layout-density-padding-inline-max:999999999px}.cds--assistive-text,.cds--visually-hidden{block-size:1px;border:0;margin:-1px;overflow:hidden;padding:0;position:absolute;clip:rect(0,0,0,0);inline-size:1px;visibility:inherit;white-space:nowrap}.cds--layer-one,:root{--cds-layer:var(--cds-layer-01,#f4f4f4);--cds-layer-active:var(--cds-layer-active-01,#c6c6c6);--cds-layer-background:var(--cds-layer-background-01,#fff);--cds-layer-hover:var(--cds-layer-hover-01,#e8e8e8);--cds-layer-selected:var(--cds-layer-selected-01,#e0e0e0);--cds-layer-selected-hover:var(--cds-layer-selected-hover-01,#d1d1d1);--cds-layer-accent:var(--cds-layer-accent-01,#e0e0e0);--cds-layer-accent-hover:var(--cds-layer-accent-hover-01,#d1d1d1);--cds-layer-accent-active:var(--cds-layer-accent-active-01,#a8a8a8);--cds-field:var(--cds-field-01,#f4f4f4);--cds-field-hover:var(--cds-field-hover-01,#e8e8e8);--cds-border-subtle:var(--cds-border-subtle-00,#e0e0e0);--cds-border-subtle-selected:var(--cds-border-subtle-selected-01,#c6c6c6);--cds-border-strong:var(--cds-border-strong-01,#8d8d8d);--cds-border-tile:var(--cds-border-tile-01,#c6c6c6)}.cds--layer-two{--cds-layer:var(--cds-layer-02,#fff);--cds-layer-active:var(--cds-layer-active-02,#c6c6c6);--cds-layer-background:var(--cds-layer-background-02,#f4f4f4);--cds-layer-hover:var(--cds-layer-hover-02,#e8e8e8);--cds-layer-selected:var(--cds-layer-selected-02,#e0e0e0);--cds-layer-selected-hover:var(--cds-layer-selected-hover-02,#d1d1d1);--cds-layer-accent:var(--cds-layer-accent-02,#e0e0e0);--cds-layer-accent-hover:var(--cds-layer-accent-hover-02,#d1d1d1);--cds-layer-accent-active:var(--cds-layer-accent-active-02,#a8a8a8);--cds-field:var(--cds-field-02,#fff);--cds-field-hover:var(--cds-field-hover-02,#e8e8e8);--cds-border-subtle:var(--cds-border-subtle-01,#c6c6c6);--cds-border-subtle-selected:var(--cds-border-subtle-selected-02,#c6c6c6);--cds-border-strong:var(--cds-border-strong-02,#8d8d8d);--cds-border-tile:var(--cds-border-tile-02,#a8a8a8)}.cds--layer-three{--cds-layer:var(--cds-layer-03,#f4f4f4);--cds-layer-active:var(--cds-layer-active-03,#c6c6c6);--cds-layer-background:var(--cds-layer-background-03,#fff);--cds-layer-hover:var(--cds-layer-hover-03,#e8e8e8);--cds-layer-selected:var(--cds-layer-selected-03,#e0e0e0);--cds-layer-selected-hover:var(--cds-layer-selected-hover-03,#d1d1d1);--cds-layer-accent:var(--cds-layer-accent-03,#e0e0e0);--cds-layer-accent-hover:var(--cds-layer-accent-hover-03,#d1d1d1);--cds-layer-accent-active:var(--cds-layer-accent-active-03,#a8a8a8);--cds-field:var(--cds-field-03,#f4f4f4);--cds-field-hover:var(--cds-field-hover-03,#e8e8e8);--cds-border-subtle:var(--cds-border-subtle-02,#e0e0e0);--cds-border-subtle-selected:var(--cds-border-subtle-selected-03,#c6c6c6);--cds-border-strong:var(--cds-border-strong-03,#8d8d8d);--cds-border-tile:var(--cds-border-tile-03,#c6c6c6)}.cds--layer-one.cds--layer__with-background,.cds--layer-three.cds--layer__with-background,.cds--layer-two.cds--layer__with-background{background-color:var(--cds-layer-background)}.cds--menu{border:0;box-sizing:border-box;font-family:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}.cds--menu *,.cds--menu :after,.cds--menu :before{box-sizing:inherit}.cds--menu{background-color:var(--cds-layer);box-shadow:0 2px 6px var(--cds-shadow,rgba(0,0,0,.3));max-inline-size:18rem;min-inline-size:10rem;opacity:0;padding:.25rem 0;position:fixed;visibility:hidden;z-index:9000}.cds--menu--border{outline:1px solid var(--cds-border-subtle)}.cds--menu--background-token__background{background-color:var(--cds-background,#fff)}.cds--menu--shown{overflow:visible}.cds--menu-item{align-items:center;block-size:2rem;color:var(--cds-text-secondary,#525252);-moz-column-gap:.5rem;column-gap:.5rem;cursor:pointer;display:grid;font-size:var(--cds-body-short-01-font-size,.875rem);font-weight:var(--cds-body-short-01-font-weight,400);grid-template-columns:1fr max-content;letter-spacing:var(--cds-body-short-01-letter-spacing,.16px);line-height:var(--cds-body-short-01-line-height,1.28572);padding-inline:1rem;transition:background-color 70ms cubic-bezier(.2,0,.38,.9)}.cds--menu-item:focus{outline:2px solid var(--cds-focus,#0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.cds--menu-item:focus{outline-style:dotted}}.cds--menu-item:hover{background-color:var(--cds-layer-hover);color:var(--cds-text-primary,#161616)}.cds--menu--xs .cds--menu-item{block-size:1.5rem}.cds--menu--sm .cds--menu-item{block-size:2rem}.cds--menu--md .cds--menu-item{block-size:2.5rem}.cds--menu--lg .cds--menu-item{block-size:3rem}.cds--menu-item__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cds--menu-item__shortcut{display:flex}.cds--menu-item-group>ul,.cds--menu-item-radio-group>ul{border:0;box-sizing:border-box;font-family:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}.cds--menu-item-group>ul *,.cds--menu-item-group>ul :after,.cds--menu-item-group>ul :before,.cds--menu-item-radio-group>ul *,.cds--menu-item-radio-group>ul :after,.cds--menu-item-radio-group>ul :before{box-sizing:inherit}.cds--menu-item__icon,.cds--menu-item__selection-icon{display:none}.cds--menu--with-icons>.cds--menu-item,.cds--menu--with-icons>.cds--menu-item-group>ul>.cds--menu-item,.cds--menu--with-icons>.cds--menu-item-radio-group>ul>.cds--menu-item,.cds--menu--with-selectable-items>.cds--menu-item,.cds--menu--with-selectable-items>.cds--menu-item-group>ul>.cds--menu-item,.cds--menu--with-selectable-items>.cds--menu-item-radio-group>ul>.cds--menu-item{grid-template-columns:1rem 1fr max-content}.cds--menu--with-icons>.cds--menu-item-group>ul>.cds--menu-item>.cds--menu-item__icon,.cds--menu--with-icons>.cds--menu-item-radio-group>ul>.cds--menu-item>.cds--menu-item__icon,.cds--menu--with-icons>.cds--menu-item>.cds--menu-item__icon,.cds--menu--with-selectable-items>.cds--menu-item-group>ul>.cds--menu-item>.cds--menu-item__selection-icon,.cds--menu--with-selectable-items>.cds--menu-item-radio-group>ul>.cds--menu-item>.cds--menu-item__selection-icon,.cds--menu--with-selectable-items>.cds--menu-item>.cds--menu-item__selection-icon{display:flex}.cds--menu--with-icons.cds--menu--with-selectable-items>.cds--menu-item,.cds--menu--with-icons.cds--menu--with-selectable-items>.cds--menu-item-group>ul>.cds--menu-item,.cds--menu--with-icons.cds--menu--with-selectable-items>.cds--menu-item-radio-group>ul>.cds--menu-item{grid-template-columns:1rem 1rem 1fr max-content}.cds--menu-item--disabled{color:var(--cds-text-disabled,hsla(0,0%,9%,.25));cursor:not-allowed}.cds--menu-item--disabled.cds--menu-item--danger:hover,.cds--menu-item--disabled:hover{background-color:var(--cds-layer);color:var(--cds-text-disabled,hsla(0,0%,9%,.25))}.cds--menu-item--danger:focus,.cds--menu-item--danger:hover{background-color:var(--cds-button-danger-primary,#da1e28);color:var(--cds-text-on-color,#fff)}.cds--menu-item-divider{background-color:var(--cds-border-subtle);block-size:.0625rem;display:block;inline-size:100%;margin-block:.25rem}.cds--menu--with-icons{--child-icon-property:flex;--child-grid-template-columns:1rem 1fr max-content}:host(cds-menu){position:fixed;--grid-template:1fr max-content;--display-icon-item:none;--display-selection-icon:none;--block-size-value:2rem}.cds--menu--with-icons{--grid-template:1rem 1fr max-content;--display-icon-item:flex}.cds--menu--with-selectable-items{--display-selection-icon:flex}.cds--menu--with-icons.cds--menu--with-selectable-items{--grid-template:1rem 1rem 1fr max-content}.cds--menu{overflow-y:auto}.cds--menu--shown{opacity:1}.cds--menu--open{visibility:visible}.cds--menu--open:focus{outline:1px solid var(--cds-focus,#0f62fe)}@media screen and (prefers-contrast){.cds--menu--open:focus{outline-style:dotted}}.cds--menu:not(.cds--menu--open) .cds--menu--open{visibility:hidden}.cds--menu--with-icons{min-inline-size:12rem}.cds--menu--xs{--block-size-value:1.5rem}.cds--menu--sm{--block-size-value:2rem}.cds--menu--md{--block-size-value:2.5rem}.cds--menu--lg{--block-size-value:3rem}"]);
10
+ var styles = css(["@keyframes cds--hide-feedback{0%{opacity:1;visibility:inherit}to{opacity:0;visibility:hidden}}@keyframes cds--show-feedback{0%{opacity:0;visibility:hidden}to{opacity:1;visibility:inherit}}@keyframes cds--skeleton{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}to{opacity:.3;transform:scaleX(0);transform-origin:left}}.cds--layout--size-xs{--cds-layout-size-height-context:var(--cds-layout-size-height-xs,1.5rem);--cds-layout-size-height:var(--cds-layout-size-height-context)}.cds--layout-constraint--size__default-xs{--cds-layout-size-height:var(--cds-layout-size-height-context,var(--cds-layout-size-height-xs,1.5rem))}.cds--layout-constraint--size__min-xs{--cds-layout-size-height-min:var(--cds-layout-size-height-xs,1.5rem)}.cds--layout-constraint--size__max-xs{--cds-layout-size-height-max:var(--cds-layout-size-height-xs,1.5rem)}.cds--layout--size-sm{--cds-layout-size-height-context:var(--cds-layout-size-height-sm,2rem);--cds-layout-size-height:var(--cds-layout-size-height-context)}.cds--layout-constraint--size__default-sm{--cds-layout-size-height:var(--cds-layout-size-height-context,var(--cds-layout-size-height-sm,2rem))}.cds--layout-constraint--size__min-sm{--cds-layout-size-height-min:var(--cds-layout-size-height-sm,2rem)}.cds--layout-constraint--size__max-sm{--cds-layout-size-height-max:var(--cds-layout-size-height-sm,2rem)}.cds--layout--size-md{--cds-layout-size-height-context:var(--cds-layout-size-height-md,2.5rem);--cds-layout-size-height:var(--cds-layout-size-height-context)}.cds--layout-constraint--size__default-md{--cds-layout-size-height:var(--cds-layout-size-height-context,var(--cds-layout-size-height-md,2.5rem))}.cds--layout-constraint--size__min-md{--cds-layout-size-height-min:var(--cds-layout-size-height-md,2.5rem)}.cds--layout-constraint--size__max-md{--cds-layout-size-height-max:var(--cds-layout-size-height-md,2.5rem)}.cds--layout--size-lg{--cds-layout-size-height-context:var(--cds-layout-size-height-lg,3rem);--cds-layout-size-height:var(--cds-layout-size-height-context)}.cds--layout-constraint--size__default-lg{--cds-layout-size-height:var(--cds-layout-size-height-context,var(--cds-layout-size-height-lg,3rem))}.cds--layout-constraint--size__min-lg{--cds-layout-size-height-min:var(--cds-layout-size-height-lg,3rem)}.cds--layout-constraint--size__max-lg{--cds-layout-size-height-max:var(--cds-layout-size-height-lg,3rem)}.cds--layout--size-xl{--cds-layout-size-height-context:var(--cds-layout-size-height-xl,4rem);--cds-layout-size-height:var(--cds-layout-size-height-context)}.cds--layout-constraint--size__default-xl{--cds-layout-size-height:var(--cds-layout-size-height-context,var(--cds-layout-size-height-xl,4rem))}.cds--layout-constraint--size__min-xl{--cds-layout-size-height-min:var(--cds-layout-size-height-xl,4rem)}.cds--layout-constraint--size__max-xl{--cds-layout-size-height-max:var(--cds-layout-size-height-xl,4rem)}.cds--layout--size-2xl{--cds-layout-size-height-context:var(--cds-layout-size-height-2xl,5rem);--cds-layout-size-height:var(--cds-layout-size-height-context)}.cds--layout-constraint--size__default-2xl{--cds-layout-size-height:var(--cds-layout-size-height-context,var(--cds-layout-size-height-2xl,5rem))}.cds--layout-constraint--size__min-2xl{--cds-layout-size-height-min:var(--cds-layout-size-height-2xl,5rem)}.cds--layout-constraint--size__max-2xl{--cds-layout-size-height-max:var(--cds-layout-size-height-2xl,5rem)}.cds--layout--density-condensed{--cds-layout-density-padding-inline-context:var(--cds-layout-density-padding-inline-condensed,0.5rem);--cds-layout-density-padding-inline:var(--cds-layout-density-padding-inline-context)}.cds--layout-constraint--density__default-condensed{--cds-layout-density-padding-inline:var(--cds-layout-density-padding-inline-context,var(--cds-layout-density-padding-inline-condensed,0.5rem))}.cds--layout-constraint--density__min-condensed{--cds-layout-density-padding-inline-min:var(--cds-layout-density-padding-inline-condensed,0.5rem)}.cds--layout-constraint--density__max-condensed{--cds-layout-density-padding-inline-max:var(--cds-layout-density-padding-inline-condensed,0.5rem)}.cds--layout--density-normal{--cds-layout-density-padding-inline-context:var(--cds-layout-density-padding-inline-normal,1rem);--cds-layout-density-padding-inline:var(--cds-layout-density-padding-inline-context)}.cds--layout-constraint--density__default-normal{--cds-layout-density-padding-inline:var(--cds-layout-density-padding-inline-context,var(--cds-layout-density-padding-inline-normal,1rem))}.cds--layout-constraint--density__min-normal{--cds-layout-density-padding-inline-min:var(--cds-layout-density-padding-inline-normal,1rem)}.cds--layout-constraint--density__max-normal{--cds-layout-density-padding-inline-max:var(--cds-layout-density-padding-inline-normal,1rem)}:root{--cds-layout-size-height-xs:1.5rem;--cds-layout-size-height-sm:2rem;--cds-layout-size-height-md:2.5rem;--cds-layout-size-height-lg:3rem;--cds-layout-size-height-xl:4rem;--cds-layout-size-height-2xl:5rem;--cds-layout-size-height-min:0px;--cds-layout-size-height-max:999999999px;--cds-layout-density-padding-inline-condensed:0.5rem;--cds-layout-density-padding-inline-normal:1rem;--cds-layout-density-padding-inline-min:0px;--cds-layout-density-padding-inline-max:999999999px}.cds--assistive-text,.cds--visually-hidden{block-size:1px;border:0;margin:-1px;overflow:hidden;padding:0;position:absolute;clip:rect(0,0,0,0);inline-size:1px;visibility:inherit;white-space:nowrap}.cds--layer-one,:root{--cds-layer:var(--cds-layer-01,#f4f4f4);--cds-layer-active:var(--cds-layer-active-01,#c6c6c6);--cds-layer-background:var(--cds-layer-background-01,#fff);--cds-layer-hover:var(--cds-layer-hover-01,#e8e8e8);--cds-layer-selected:var(--cds-layer-selected-01,#e0e0e0);--cds-layer-selected-hover:var(--cds-layer-selected-hover-01,#d1d1d1);--cds-layer-accent:var(--cds-layer-accent-01,#e0e0e0);--cds-layer-accent-hover:var(--cds-layer-accent-hover-01,#d1d1d1);--cds-layer-accent-active:var(--cds-layer-accent-active-01,#a8a8a8);--cds-field:var(--cds-field-01,#f4f4f4);--cds-field-hover:var(--cds-field-hover-01,#e8e8e8);--cds-border-subtle:var(--cds-border-subtle-00,#e0e0e0);--cds-border-subtle-selected:var(--cds-border-subtle-selected-01,#c6c6c6);--cds-border-strong:var(--cds-border-strong-01,#8d8d8d);--cds-border-tile:var(--cds-border-tile-01,#c6c6c6)}.cds--layer-two{--cds-layer:var(--cds-layer-02,#fff);--cds-layer-active:var(--cds-layer-active-02,#c6c6c6);--cds-layer-background:var(--cds-layer-background-02,#f4f4f4);--cds-layer-hover:var(--cds-layer-hover-02,#e8e8e8);--cds-layer-selected:var(--cds-layer-selected-02,#e0e0e0);--cds-layer-selected-hover:var(--cds-layer-selected-hover-02,#d1d1d1);--cds-layer-accent:var(--cds-layer-accent-02,#e0e0e0);--cds-layer-accent-hover:var(--cds-layer-accent-hover-02,#d1d1d1);--cds-layer-accent-active:var(--cds-layer-accent-active-02,#a8a8a8);--cds-field:var(--cds-field-02,#fff);--cds-field-hover:var(--cds-field-hover-02,#e8e8e8);--cds-border-subtle:var(--cds-border-subtle-01,#c6c6c6);--cds-border-subtle-selected:var(--cds-border-subtle-selected-02,#c6c6c6);--cds-border-strong:var(--cds-border-strong-02,#8d8d8d);--cds-border-tile:var(--cds-border-tile-02,#a8a8a8)}.cds--layer-three{--cds-layer:var(--cds-layer-03,#f4f4f4);--cds-layer-active:var(--cds-layer-active-03,#c6c6c6);--cds-layer-background:var(--cds-layer-background-03,#fff);--cds-layer-hover:var(--cds-layer-hover-03,#e8e8e8);--cds-layer-selected:var(--cds-layer-selected-03,#e0e0e0);--cds-layer-selected-hover:var(--cds-layer-selected-hover-03,#d1d1d1);--cds-layer-accent:var(--cds-layer-accent-03,#e0e0e0);--cds-layer-accent-hover:var(--cds-layer-accent-hover-03,#d1d1d1);--cds-layer-accent-active:var(--cds-layer-accent-active-03,#a8a8a8);--cds-field:var(--cds-field-03,#f4f4f4);--cds-field-hover:var(--cds-field-hover-03,#e8e8e8);--cds-border-subtle:var(--cds-border-subtle-02,#e0e0e0);--cds-border-subtle-selected:var(--cds-border-subtle-selected-03,#c6c6c6);--cds-border-strong:var(--cds-border-strong-03,#8d8d8d);--cds-border-tile:var(--cds-border-tile-03,#c6c6c6)}.cds--layer-one.cds--layer__with-background,.cds--layer-three.cds--layer__with-background,.cds--layer-two.cds--layer__with-background{background-color:var(--cds-layer-background)}.cds--menu{border:0;box-sizing:border-box;font-family:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}.cds--menu *,.cds--menu :after,.cds--menu :before{box-sizing:inherit}.cds--menu{background-color:var(--cds-layer);box-shadow:0 2px 6px var(--cds-shadow,rgba(0,0,0,.3));max-inline-size:18rem;min-inline-size:10rem;opacity:0;padding:.25rem 0;position:fixed;visibility:hidden;z-index:9000}.cds--menu--border{outline:1px solid var(--cds-border-subtle)}.cds--menu--background-token__background{background-color:var(--cds-background,#fff)}.cds--menu--shown{overflow:visible}.cds--menu-item{align-items:center;block-size:2rem;color:var(--cds-text-secondary,#525252);-moz-column-gap:.5rem;column-gap:.5rem;cursor:pointer;display:grid;font-size:var(--cds-body-short-01-font-size,.875rem);font-weight:var(--cds-body-short-01-font-weight,400);grid-template-columns:1fr max-content;letter-spacing:var(--cds-body-short-01-letter-spacing,.16px);line-height:var(--cds-body-short-01-line-height,1.28572);padding-inline:1rem;transition:background-color 70ms cubic-bezier(.2,0,.38,.9)}.cds--menu-item:focus{outline:2px solid var(--cds-focus,#0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.cds--menu-item:focus{outline-style:dotted}}.cds--menu-item:hover{background-color:var(--cds-layer-hover);color:var(--cds-text-primary,#161616)}.cds--menu--xs .cds--menu-item{block-size:1.5rem}.cds--menu--sm .cds--menu-item{block-size:2rem}.cds--menu--md .cds--menu-item{block-size:2.5rem}.cds--menu--lg .cds--menu-item{block-size:3rem}.cds--menu-item__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cds--menu-item__shortcut{display:flex}.cds--menu-item-group>ul,.cds--menu-item-radio-group>ul{border:0;box-sizing:border-box;font-family:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}.cds--menu-item-group>ul *,.cds--menu-item-group>ul :after,.cds--menu-item-group>ul :before,.cds--menu-item-radio-group>ul *,.cds--menu-item-radio-group>ul :after,.cds--menu-item-radio-group>ul :before{box-sizing:inherit}.cds--menu-item__icon,.cds--menu-item__selection-icon{display:none}.cds--menu--with-icons>.cds--menu-item,.cds--menu--with-icons>.cds--menu-item-group>ul>.cds--menu-item,.cds--menu--with-icons>.cds--menu-item-radio-group>ul>.cds--menu-item,.cds--menu--with-selectable-items>.cds--menu-item,.cds--menu--with-selectable-items>.cds--menu-item-group>ul>.cds--menu-item,.cds--menu--with-selectable-items>.cds--menu-item-radio-group>ul>.cds--menu-item{grid-template-columns:1rem 1fr max-content}.cds--menu--with-icons>.cds--menu-item-group>ul>.cds--menu-item>.cds--menu-item__icon,.cds--menu--with-icons>.cds--menu-item-radio-group>ul>.cds--menu-item>.cds--menu-item__icon,.cds--menu--with-icons>.cds--menu-item>.cds--menu-item__icon,.cds--menu--with-selectable-items>.cds--menu-item-group>ul>.cds--menu-item>.cds--menu-item__selection-icon,.cds--menu--with-selectable-items>.cds--menu-item-radio-group>ul>.cds--menu-item>.cds--menu-item__selection-icon,.cds--menu--with-selectable-items>.cds--menu-item>.cds--menu-item__selection-icon{display:flex}.cds--menu--with-icons.cds--menu--with-selectable-items>.cds--menu-item,.cds--menu--with-icons.cds--menu--with-selectable-items>.cds--menu-item-group>ul>.cds--menu-item,.cds--menu--with-icons.cds--menu--with-selectable-items>.cds--menu-item-radio-group>ul>.cds--menu-item{grid-template-columns:1rem 1rem 1fr max-content}.cds--menu-item--disabled{color:var(--cds-text-disabled,hsla(0,0%,9%,.25));cursor:not-allowed}.cds--menu-item--disabled.cds--menu-item--danger:hover,.cds--menu-item--disabled:hover{background-color:var(--cds-layer);color:var(--cds-text-disabled,hsla(0,0%,9%,.25))}.cds--menu-item--danger:focus,.cds--menu-item--danger:hover{background-color:var(--cds-button-danger-primary,#da1e28);color:var(--cds-text-on-color,#fff)}.cds--menu-item-divider{background-color:var(--cds-border-subtle);block-size:.0625rem;display:block;inline-size:100%;margin-block:.25rem}.cds--menu--with-icons{--child-icon-property:flex;--child-grid-template-columns:1rem 1fr max-content}:host(cds-menu){position:fixed;z-index:9000;--grid-template:1fr max-content;--display-icon-item:none;--display-selection-icon:none;--block-size-value:2rem}.cds--menu--with-icons{--grid-template:1rem 1fr max-content;--display-icon-item:flex}.cds--menu--with-selectable-items{--grid-template:1rem 1fr max-content;--display-selection-icon:flex}.cds--menu--with-icons.cds--menu--with-selectable-items{--grid-template:1rem 1rem 1fr max-content}.cds--menu{overflow-y:auto}.cds--menu--shown{opacity:1}.cds--menu--open{visibility:visible}.cds--menu--open:focus{outline:1px solid var(--cds-focus,#0f62fe)}@media screen and (prefers-contrast){.cds--menu--open:focus{outline-style:dotted}}.cds--menu:not(.cds--menu--open) .cds--menu--open{visibility:hidden}.cds--menu--with-icons{min-inline-size:12rem}.cds--menu--xs{--block-size-value:1.5rem}.cds--menu--sm{--block-size-value:2rem}.cds--menu--md{--block-size-value:2.5rem}.cds--menu--lg{--block-size-value:3rem}"]);
11
11
 
12
12
  export { styles as default };
13
13
  //# sourceMappingURL=menu.scss.js.map
@@ -8,7 +8,6 @@ import { LitElement } from 'lit';
8
8
  import '../button/index';
9
9
  import '../menu/index';
10
10
  import { POPOVER_ALIGNMENT } from '../popover/defs';
11
- import CDSMenu from '../menu/menu';
12
11
  import CDSButton from '../button/button';
13
12
  import { MENU_BUTTON_KIND, MENU_BUTTON_SIZE } from './defs';
14
13
  import { MENU_BACKGROUND_TOKEN } from '../menu/defs';
@@ -368,7 +367,6 @@ declare const CDSMenuButton_base: {
368
367
  declare class CDSMenuButton extends CDSMenuButton_base {
369
368
  private _menuController;
370
369
  _triggerNode: CDSButton;
371
- _menuNode: CDSMenu;
372
370
  private _open;
373
371
  /**
374
372
  * Specify whether the MenuButton should be disabled, or not.
@@ -402,9 +400,14 @@ declare class CDSMenuButton extends CDSMenuButton_base {
402
400
  */
403
401
  tabIndex: number;
404
402
  private _handleClick;
403
+ private _handleMousedown;
405
404
  private _handleBlur;
405
+ private _handleKeydown;
406
+ private _handleMenuClosed;
406
407
  updated(changedProperties: any): void;
407
408
  render(): import("lit-html").TemplateResult<1>;
408
409
  static styles: any;
410
+ private _closeMenu;
411
+ private _focusTrigger;
409
412
  }
410
413
  export default CDSMenuButton;
@@ -69,20 +69,63 @@ let CDSMenuButton = class CDSMenuButton extends HostListenerMixin(LitElement) {
69
69
  */
70
70
  this.tabIndex = 0;
71
71
  this._handleClick = (event) => {
72
+ const { _triggerNode: trigger } = this;
73
+ if (!trigger) {
74
+ return;
75
+ }
72
76
  const path = event.composedPath();
73
- if (path.includes(this._triggerNode)) {
74
- this._open = !this._open;
77
+ if (path.includes(trigger)) {
78
+ if (this._open) {
79
+ this._closeMenu({ restoreFocus: true });
80
+ }
81
+ else {
82
+ this._open = true;
83
+ }
75
84
  }
76
85
  else if (this._open) {
77
- this._open = false;
86
+ this._closeMenu();
87
+ }
88
+ };
89
+ this._handleMousedown = (event) => {
90
+ const { _triggerNode: trigger } = this;
91
+ if (!trigger) {
92
+ return;
93
+ }
94
+ const path = event.composedPath();
95
+ if (path.includes(trigger)) {
96
+ event.preventDefault();
78
97
  }
79
98
  };
80
99
  this._handleBlur = ({ relatedTarget }) => {
81
100
  // Close the menu if the focus moves outside the menu button or menu
82
101
  if (!this.contains(relatedTarget)) {
83
- this._open = false;
102
+ this._closeMenu();
103
+ }
104
+ };
105
+ this._handleKeydown = (event) => {
106
+ if (!this._open || event.key !== 'Escape') {
107
+ return;
108
+ }
109
+ const { _triggerNode: trigger } = this;
110
+ if (!trigger) {
111
+ return;
112
+ }
113
+ const path = event.composedPath();
114
+ if (path.includes(trigger)) {
115
+ event.stopPropagation();
116
+ event.preventDefault();
117
+ this._closeMenu({ restoreFocus: true });
84
118
  }
85
119
  };
120
+ this._handleMenuClosed = (event) => {
121
+ var _a;
122
+ const menu = this.querySelector(`${prefix}-menu`);
123
+ if (!menu || event.target !== menu || !this._open) {
124
+ return;
125
+ }
126
+ const shouldRestoreFocus = ((_a = event.detail) === null || _a === void 0 ? void 0 : _a.triggerEventType) !== 'focusout';
127
+ this._closeMenu({ restoreFocus: shouldRestoreFocus });
128
+ };
86
129
  }
87
130
  updated(changedProperties) {
88
131
  const menu = this.querySelector(`${prefix}-menu`);
@@ -125,14 +168,26 @@ let CDSMenuButton = class CDSMenuButton extends HostListenerMixin(LitElement) {
125
168
  <slot></slot>
126
169
  `;
127
170
  }
171
+ _closeMenu({ restoreFocus = false, } = {}) {
172
+ if (!this._open) {
173
+ return;
174
+ }
175
+ this._open = false;
176
+ if (restoreFocus) {
177
+ this._focusTrigger();
178
+ }
179
+ }
180
+ _focusTrigger() {
181
+ if (!this._triggerNode || typeof this._triggerNode.focus !== 'function') {
182
+ return;
183
+ }
184
+ this._triggerNode.focus();
185
+ }
128
186
  };
129
187
  CDSMenuButton.styles = styles;
130
188
  __decorate([
131
189
  query(`${prefix}-button`)
132
190
  ], CDSMenuButton.prototype, "_triggerNode", void 0);
133
- __decorate([
134
- query(`${prefix}-menu`)
135
- ], CDSMenuButton.prototype, "_menuNode", void 0);
136
191
  __decorate([
137
192
  property({ type: Boolean, reflect: true })
138
193
  ], CDSMenuButton.prototype, "_open", void 0);
@@ -165,11 +220,26 @@ __decorate([
165
220
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
166
221
  // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to
167
222
  ], CDSMenuButton.prototype, "_handleClick", void 0);
223
+ __decorate([
224
+ HostListener('mousedown')
225
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
226
+ // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to
227
+ ], CDSMenuButton.prototype, "_handleMousedown", void 0);
168
228
  __decorate([
169
229
  HostListener('focusout')
170
230
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
171
231
  // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to
172
232
  ], CDSMenuButton.prototype, "_handleBlur", void 0);
233
+ __decorate([
234
+ HostListener('keydown')
235
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
236
+ // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to
237
+ ], CDSMenuButton.prototype, "_handleKeydown", void 0);
238
+ __decorate([
239
+ HostListener(`${prefix}-menu-closed`)
240
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
241
+ // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to
242
+ ], CDSMenuButton.prototype, "_handleMenuClosed", void 0);
173
243
  CDSMenuButton = __decorate([
174
244
  carbonElement(`${prefix}-menu-button`)
175
245
  ], CDSMenuButton);