@patternfly/elements 3.0.1 → 4.0.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 (371) hide show
  1. package/custom-elements.json +8857 -8783
  2. package/form-control.css +127 -0
  3. package/package.json +12 -25
  4. package/pf-accordion/pf-accordion-header.css +23 -0
  5. package/pf-accordion/pf-accordion-header.d.ts +52 -43
  6. package/pf-accordion/pf-accordion-header.js +130 -87
  7. package/pf-accordion/pf-accordion-header.js.map +1 -1
  8. package/pf-accordion/pf-accordion-panel.css +15 -0
  9. package/pf-accordion/pf-accordion-panel.d.ts +27 -25
  10. package/pf-accordion/pf-accordion-panel.js +29 -43
  11. package/pf-accordion/pf-accordion-panel.js.map +1 -1
  12. package/pf-accordion/pf-accordion.d.ts +122 -65
  13. package/pf-accordion/pf-accordion.js +283 -94
  14. package/pf-accordion/pf-accordion.js.map +1 -1
  15. package/pf-accordion/test/pf-accordion.e2e.js +12 -0
  16. package/pf-accordion/test/pf-accordion.e2e.js.map +1 -1
  17. package/pf-accordion/test/pf-accordion.spec.js +366 -350
  18. package/pf-accordion/test/pf-accordion.spec.js.map +1 -1
  19. package/pf-avatar/pf-avatar.css +50 -24
  20. package/pf-avatar/pf-avatar.d.ts +29 -3
  21. package/pf-avatar/pf-avatar.js +51 -9
  22. package/pf-avatar/pf-avatar.js.map +1 -1
  23. package/pf-avatar/test/pf-avatar.e2e.js +12 -0
  24. package/pf-avatar/test/pf-avatar.e2e.js.map +1 -1
  25. package/pf-avatar/test/pf-avatar.spec.js +2 -3
  26. package/pf-avatar/test/pf-avatar.spec.js.map +1 -1
  27. package/pf-back-to-top/pf-back-to-top.css +10 -0
  28. package/pf-back-to-top/pf-back-to-top.d.ts +14 -18
  29. package/pf-back-to-top/pf-back-to-top.js +9 -30
  30. package/pf-back-to-top/pf-back-to-top.js.map +1 -1
  31. package/pf-back-to-top/test/pf-back-to-top.e2e.js +12 -0
  32. package/pf-back-to-top/test/pf-back-to-top.e2e.js.map +1 -1
  33. package/pf-background-image/pf-background-image.d.ts +4 -4
  34. package/pf-background-image/pf-background-image.js +1 -12
  35. package/pf-background-image/pf-background-image.js.map +1 -1
  36. package/pf-background-image/test/pf-background-image.e2e.js +12 -0
  37. package/pf-background-image/test/pf-background-image.e2e.js.map +1 -1
  38. package/pf-badge/pf-badge.css +4 -0
  39. package/pf-badge/pf-badge.d.ts +26 -22
  40. package/pf-badge/pf-badge.js +14 -27
  41. package/pf-badge/pf-badge.js.map +1 -1
  42. package/pf-badge/test/pf-badge.e2e.js +12 -0
  43. package/pf-badge/test/pf-badge.e2e.js.map +1 -1
  44. package/pf-banner/pf-banner.d.ts +16 -16
  45. package/pf-banner/pf-banner.js +1 -24
  46. package/pf-banner/pf-banner.js.map +1 -1
  47. package/pf-banner/test/pf-banner.e2e.js +12 -0
  48. package/pf-banner/test/pf-banner.e2e.js.map +1 -1
  49. package/pf-button/pf-button.css +22 -12
  50. package/pf-button/pf-button.d.ts +128 -122
  51. package/pf-button/pf-button.js +95 -172
  52. package/pf-button/pf-button.js.map +1 -1
  53. package/pf-button/test/pf-button.e2e.js +12 -0
  54. package/pf-button/test/pf-button.e2e.js.map +1 -1
  55. package/pf-card/pf-card.css +172 -43
  56. package/pf-card/pf-card.d.ts +41 -38
  57. package/pf-card/pf-card.js +37 -54
  58. package/pf-card/pf-card.js.map +1 -1
  59. package/pf-card/test/pf-card.e2e.js +12 -0
  60. package/pf-card/test/pf-card.e2e.js.map +1 -1
  61. package/pf-chip/pf-chip-group.css +9 -6
  62. package/pf-chip/pf-chip-group.d.ts +27 -14
  63. package/pf-chip/pf-chip-group.js +65 -94
  64. package/pf-chip/pf-chip-group.js.map +1 -1
  65. package/pf-chip/pf-chip.d.ts +20 -9
  66. package/pf-chip/pf-chip.js +1 -8
  67. package/pf-chip/pf-chip.js.map +1 -1
  68. package/pf-chip/test/pf-chip-group.spec.js +42 -22
  69. package/pf-chip/test/pf-chip-group.spec.js.map +1 -1
  70. package/pf-chip/test/pf-chip.e2e.js +12 -0
  71. package/pf-chip/test/pf-chip.e2e.js.map +1 -1
  72. package/pf-clipboard-copy/pf-clipboard-copy.css +83 -85
  73. package/pf-clipboard-copy/pf-clipboard-copy.d.ts +53 -18
  74. package/pf-clipboard-copy/pf-clipboard-copy.js +55 -44
  75. package/pf-clipboard-copy/pf-clipboard-copy.js.map +1 -1
  76. package/pf-clipboard-copy/test/pf-clipboard-copy.e2e.js +12 -0
  77. package/pf-clipboard-copy/test/pf-clipboard-copy.e2e.js.map +1 -1
  78. package/pf-code-block/pf-code-block.css +7 -4
  79. package/pf-code-block/pf-code-block.d.ts +4 -25
  80. package/pf-code-block/pf-code-block.js +44 -23
  81. package/pf-code-block/pf-code-block.js.map +1 -1
  82. package/pf-code-block/test/pf-code-block.e2e.js +12 -0
  83. package/pf-code-block/test/pf-code-block.e2e.js.map +1 -1
  84. package/pf-dropdown/context.d.ts +2 -3
  85. package/pf-dropdown/context.js.map +1 -1
  86. package/pf-dropdown/pf-dropdown-group.d.ts +3 -9
  87. package/pf-dropdown/pf-dropdown-group.js +1 -5
  88. package/pf-dropdown/pf-dropdown-group.js.map +1 -1
  89. package/pf-dropdown/pf-dropdown-item.d.ts +21 -27
  90. package/pf-dropdown/pf-dropdown-item.js +1 -37
  91. package/pf-dropdown/pf-dropdown-item.js.map +1 -1
  92. package/pf-dropdown/pf-dropdown-menu.d.ts +4 -10
  93. package/pf-dropdown/pf-dropdown-menu.js +23 -23
  94. package/pf-dropdown/pf-dropdown-menu.js.map +1 -1
  95. package/pf-dropdown/pf-dropdown.d.ts +8 -24
  96. package/pf-dropdown/pf-dropdown.js +1 -26
  97. package/pf-dropdown/pf-dropdown.js.map +1 -1
  98. package/pf-dropdown/test/pf-dropdown.e2e.js +12 -0
  99. package/pf-dropdown/test/pf-dropdown.e2e.js.map +1 -1
  100. package/pf-icon/pf-icon.css +22 -0
  101. package/pf-icon/pf-icon.d.ts +93 -4
  102. package/pf-icon/pf-icon.js +191 -13
  103. package/pf-icon/pf-icon.js.map +1 -1
  104. package/pf-icon/test/pf-icon.e2e.js +12 -0
  105. package/pf-icon/test/pf-icon.e2e.js.map +1 -1
  106. package/pf-icon/test/pf-icon.spec.js +102 -88
  107. package/pf-icon/test/pf-icon.spec.js.map +1 -1
  108. package/pf-jump-links/pf-jump-links-item.d.ts +4 -11
  109. package/pf-jump-links/pf-jump-links-item.js +8 -15
  110. package/pf-jump-links/pf-jump-links-item.js.map +1 -1
  111. package/pf-jump-links/pf-jump-links-list.d.ts +2 -2
  112. package/pf-jump-links/pf-jump-links-list.js +1 -5
  113. package/pf-jump-links/pf-jump-links-list.js.map +1 -1
  114. package/pf-jump-links/pf-jump-links.d.ts +2 -2
  115. package/pf-jump-links/pf-jump-links.js +23 -62
  116. package/pf-jump-links/pf-jump-links.js.map +1 -1
  117. package/pf-jump-links/test/pf-jump-links.e2e.js +12 -0
  118. package/pf-jump-links/test/pf-jump-links.e2e.js.map +1 -1
  119. package/pf-label/pf-label.css +38 -5
  120. package/pf-label/pf-label.d.ts +65 -69
  121. package/pf-label/pf-label.js +49 -90
  122. package/pf-label/pf-label.js.map +1 -1
  123. package/pf-label/test/pf-label.e2e.js +12 -0
  124. package/pf-label/test/pf-label.e2e.js.map +1 -1
  125. package/pf-label/test/pf-label.spec.js +26 -16
  126. package/pf-label/test/pf-label.spec.js.map +1 -1
  127. package/pf-modal/pf-modal.d.ts +17 -22
  128. package/pf-modal/pf-modal.js +13 -39
  129. package/pf-modal/pf-modal.js.map +1 -1
  130. package/pf-modal/test/pf-modal.e2e.js +12 -0
  131. package/pf-modal/test/pf-modal.e2e.js.map +1 -1
  132. package/pf-panel/pf-panel.d.ts +31 -3
  133. package/pf-panel/pf-panel.js +1 -10
  134. package/pf-panel/pf-panel.js.map +1 -1
  135. package/pf-panel/test/pf-panel.e2e.js +12 -0
  136. package/pf-panel/test/pf-panel.e2e.js.map +1 -1
  137. package/pf-popover/pf-popover.d.ts +66 -84
  138. package/pf-popover/pf-popover.js +33 -150
  139. package/pf-popover/pf-popover.js.map +1 -1
  140. package/pf-popover/test/pf-popover.e2e.js +12 -0
  141. package/pf-popover/test/pf-popover.e2e.js.map +1 -1
  142. package/pf-popover/test/pf-popover.spec.js +0 -11
  143. package/pf-popover/test/pf-popover.spec.js.map +1 -1
  144. package/pf-progress/pf-progress.d.ts +40 -40
  145. package/pf-progress/pf-progress.js +1 -61
  146. package/pf-progress/pf-progress.js.map +1 -1
  147. package/pf-progress/test/pf-progress.e2e.js +12 -0
  148. package/pf-progress/test/pf-progress.e2e.js.map +1 -1
  149. package/pf-progress-stepper/pf-progress-step.d.ts +2 -3
  150. package/pf-progress-stepper/pf-progress-step.js +4 -14
  151. package/pf-progress-stepper/pf-progress-step.js.map +1 -1
  152. package/pf-progress-stepper/pf-progress-stepper.d.ts +118 -2
  153. package/pf-progress-stepper/pf-progress-stepper.js +10 -12
  154. package/pf-progress-stepper/pf-progress-stepper.js.map +1 -1
  155. package/pf-progress-stepper/test/pf-progress-stepper.e2e.js +12 -0
  156. package/pf-progress-stepper/test/pf-progress-stepper.e2e.js.map +1 -1
  157. package/pf-select/pf-option-group.d.ts +2 -2
  158. package/pf-select/pf-option-group.js +1 -5
  159. package/pf-select/pf-option-group.js.map +1 -1
  160. package/pf-select/pf-option.css +1 -1
  161. package/pf-select/pf-option.d.ts +4 -4
  162. package/pf-select/pf-option.js +20 -30
  163. package/pf-select/pf-option.js.map +1 -1
  164. package/pf-select/pf-select.css +14 -6
  165. package/pf-select/pf-select.d.ts +183 -40
  166. package/pf-select/pf-select.js +185 -260
  167. package/pf-select/pf-select.js.map +1 -1
  168. package/pf-select/test/pf-select.e2e.js +12 -0
  169. package/pf-select/test/pf-select.e2e.js.map +1 -1
  170. package/pf-select/test/pf-select.spec.js +1292 -613
  171. package/pf-select/test/pf-select.spec.js.map +1 -1
  172. package/pf-spinner/pf-spinner.css +27 -17
  173. package/pf-spinner/pf-spinner.d.ts +21 -17
  174. package/pf-spinner/pf-spinner.js +20 -24
  175. package/pf-spinner/pf-spinner.js.map +1 -1
  176. package/pf-spinner/test/pf-spinner.e2e.js +12 -0
  177. package/pf-spinner/test/pf-spinner.e2e.js.map +1 -1
  178. package/pf-switch/pf-switch.css +39 -13
  179. package/pf-switch/pf-switch.d.ts +48 -34
  180. package/pf-switch/pf-switch.js +114 -43
  181. package/pf-switch/pf-switch.js.map +1 -1
  182. package/pf-switch/test/pf-switch.e2e.js +12 -0
  183. package/pf-switch/test/pf-switch.e2e.js.map +1 -1
  184. package/pf-table/pf-caption.d.ts +2 -2
  185. package/pf-table/pf-caption.js +1 -4
  186. package/pf-table/pf-caption.js.map +1 -1
  187. package/pf-table/pf-table.d.ts +424 -424
  188. package/pf-table/pf-table.js +7 -645
  189. package/pf-table/pf-table.js.map +1 -1
  190. package/pf-table/pf-tbody.d.ts +2 -2
  191. package/pf-table/pf-tbody.js +1 -4
  192. package/pf-table/pf-tbody.js.map +1 -1
  193. package/pf-table/pf-td.d.ts +2 -2
  194. package/pf-table/pf-td.js +1 -4
  195. package/pf-table/pf-td.js.map +1 -1
  196. package/pf-table/pf-th.d.ts +2 -2
  197. package/pf-table/pf-th.js +1 -4
  198. package/pf-table/pf-th.js.map +1 -1
  199. package/pf-table/pf-thead.d.ts +2 -2
  200. package/pf-table/pf-thead.js +1 -4
  201. package/pf-table/pf-thead.js.map +1 -1
  202. package/pf-table/pf-tr.d.ts +1 -1
  203. package/pf-table/pf-tr.js +1 -4
  204. package/pf-table/pf-tr.js.map +1 -1
  205. package/pf-table/test/pf-table.e2e.js +12 -0
  206. package/pf-table/test/pf-table.e2e.js.map +1 -1
  207. package/pf-tabs/context.d.ts +2 -3
  208. package/pf-tabs/context.js.map +1 -1
  209. package/pf-tabs/pf-tab-panel.d.ts +3 -5
  210. package/pf-tabs/pf-tab-panel.js +1 -7
  211. package/pf-tabs/pf-tab-panel.js.map +1 -1
  212. package/pf-tabs/pf-tab.d.ts +37 -37
  213. package/pf-tabs/pf-tab.js +16 -54
  214. package/pf-tabs/pf-tab.js.map +1 -1
  215. package/pf-tabs/pf-tabs.d.ts +36 -37
  216. package/pf-tabs/pf-tabs.js +40 -78
  217. package/pf-tabs/pf-tabs.js.map +1 -1
  218. package/pf-tabs/test/pf-tabs.e2e.js +12 -0
  219. package/pf-tabs/test/pf-tabs.e2e.js.map +1 -1
  220. package/pf-tabs/test/pf-tabs.spec.js +11 -12
  221. package/pf-tabs/test/pf-tabs.spec.js.map +1 -1
  222. package/pf-text-area/pf-text-area.d.ts +128 -134
  223. package/pf-text-area/pf-text-area.js +7 -131
  224. package/pf-text-area/pf-text-area.js.map +1 -1
  225. package/pf-text-area/test/pf-text-area.e2e.js +12 -0
  226. package/pf-text-area/test/pf-text-area.e2e.js.map +1 -1
  227. package/pf-text-input/pf-text-input.d.ts +129 -135
  228. package/pf-text-input/pf-text-input.js +7 -132
  229. package/pf-text-input/pf-text-input.js.map +1 -1
  230. package/pf-text-input/test/pf-text-input.e2e.js +12 -0
  231. package/pf-text-input/test/pf-text-input.e2e.js.map +1 -1
  232. package/pf-tile/pf-tile.d.ts +21 -20
  233. package/pf-tile/pf-tile.js +18 -35
  234. package/pf-tile/pf-tile.js.map +1 -1
  235. package/pf-tile/test/pf-tile.e2e.js +12 -0
  236. package/pf-tile/test/pf-tile.e2e.js.map +1 -1
  237. package/pf-timestamp/pf-timestamp.d.ts +2 -2
  238. package/pf-timestamp/pf-timestamp.js +1 -3
  239. package/pf-timestamp/pf-timestamp.js.map +1 -1
  240. package/pf-timestamp/test/pf-timestamp.e2e.js +12 -0
  241. package/pf-timestamp/test/pf-timestamp.e2e.js.map +1 -1
  242. package/pf-tooltip/pf-tooltip.d.ts +51 -50
  243. package/pf-tooltip/pf-tooltip.js +26 -106
  244. package/pf-tooltip/pf-tooltip.js.map +1 -1
  245. package/pf-tooltip/test/pf-tooltip.e2e.js +12 -0
  246. package/pf-tooltip/test/pf-tooltip.e2e.js.map +1 -1
  247. package/pfe.min.js +1194 -1002
  248. package/pfe.min.js.map +4 -4
  249. package/react/pf-accordion/pf-accordion-header.js +2 -2
  250. package/react/pf-accordion/pf-accordion-panel.js +2 -2
  251. package/react/pf-accordion/pf-accordion.js +2 -2
  252. package/react/pf-avatar/pf-avatar.d.ts +1 -1
  253. package/react/pf-avatar/pf-avatar.js +5 -3
  254. package/react/pf-back-to-top/pf-back-to-top.js +2 -2
  255. package/react/pf-background-image/pf-background-image.js +2 -2
  256. package/react/pf-badge/pf-badge.js +2 -2
  257. package/react/pf-banner/pf-banner.js +2 -2
  258. package/react/pf-button/pf-button.js +2 -2
  259. package/react/pf-card/pf-card.js +2 -2
  260. package/react/pf-chip/pf-chip-group.js +2 -2
  261. package/react/pf-chip/pf-chip.js +2 -2
  262. package/react/pf-clipboard-copy/pf-clipboard-copy.d.ts +1 -1
  263. package/react/pf-clipboard-copy/pf-clipboard-copy.js +5 -3
  264. package/react/pf-code-block/pf-code-block.js +2 -2
  265. package/react/pf-dropdown/pf-dropdown-group.js +2 -2
  266. package/react/pf-dropdown/pf-dropdown-item.js +2 -2
  267. package/react/pf-dropdown/pf-dropdown-menu.js +2 -2
  268. package/react/pf-dropdown/pf-dropdown.js +2 -2
  269. package/react/pf-icon/pf-icon.js +2 -2
  270. package/react/pf-jump-links/pf-jump-links-item.js +2 -2
  271. package/react/pf-jump-links/pf-jump-links-list.js +2 -2
  272. package/react/pf-jump-links/pf-jump-links.js +2 -2
  273. package/react/pf-label/pf-label.js +2 -2
  274. package/react/pf-modal/pf-modal.js +2 -2
  275. package/react/pf-panel/pf-panel.js +2 -2
  276. package/react/pf-popover/pf-popover.js +2 -2
  277. package/react/pf-progress/pf-progress.js +2 -2
  278. package/react/pf-progress-stepper/pf-progress-step.js +2 -2
  279. package/react/pf-progress-stepper/pf-progress-stepper.js +2 -2
  280. package/react/pf-select/pf-option-group.js +2 -2
  281. package/react/pf-select/pf-option.js +2 -2
  282. package/react/pf-select/pf-select.d.ts +1 -1
  283. package/react/pf-select/pf-select.js +2 -3
  284. package/react/pf-spinner/pf-spinner.js +2 -2
  285. package/react/pf-switch/pf-switch.js +2 -2
  286. package/react/pf-table/pf-caption.js +2 -2
  287. package/react/pf-table/pf-table.js +2 -2
  288. package/react/pf-table/pf-tbody.js +2 -2
  289. package/react/pf-table/pf-td.js +2 -2
  290. package/react/pf-table/pf-th.js +2 -2
  291. package/react/pf-table/pf-thead.js +2 -2
  292. package/react/pf-table/pf-tr.js +2 -2
  293. package/react/pf-tabs/pf-tab-panel.js +2 -2
  294. package/react/pf-tabs/pf-tab.js +2 -2
  295. package/react/pf-tabs/pf-tabs.js +2 -2
  296. package/react/pf-text-area/pf-text-area.js +2 -2
  297. package/react/pf-text-input/pf-text-input.js +2 -2
  298. package/react/pf-tile/pf-tile.js +2 -2
  299. package/react/pf-timestamp/pf-timestamp.js +2 -2
  300. package/react/pf-tooltip/pf-tooltip.js +2 -2
  301. package/pf-accordion/BaseAccordion.d.ts +0 -61
  302. package/pf-accordion/BaseAccordion.js +0 -269
  303. package/pf-accordion/BaseAccordion.js.map +0 -1
  304. package/pf-accordion/BaseAccordionHeader.css +0 -39
  305. package/pf-accordion/BaseAccordionHeader.d.ts +0 -29
  306. package/pf-accordion/BaseAccordionHeader.js +0 -128
  307. package/pf-accordion/BaseAccordionHeader.js.map +0 -1
  308. package/pf-accordion/BaseAccordionPanel.css +0 -27
  309. package/pf-accordion/BaseAccordionPanel.d.ts +0 -7
  310. package/pf-accordion/BaseAccordionPanel.js +0 -33
  311. package/pf-accordion/BaseAccordionPanel.js.map +0 -1
  312. package/pf-avatar/BaseAvatar.css +0 -13
  313. package/pf-avatar/BaseAvatar.d.ts +0 -23
  314. package/pf-avatar/BaseAvatar.js +0 -62
  315. package/pf-avatar/BaseAvatar.js.map +0 -1
  316. package/pf-back-to-top/demo/demo.css +0 -25
  317. package/pf-badge/BaseBadge.css +0 -6
  318. package/pf-badge/BaseBadge.d.ts +0 -18
  319. package/pf-badge/BaseBadge.js +0 -16
  320. package/pf-badge/BaseBadge.js.map +0 -1
  321. package/pf-button/BaseButton.css +0 -68
  322. package/pf-button/BaseButton.d.ts +0 -51
  323. package/pf-button/BaseButton.js +0 -84
  324. package/pf-button/BaseButton.js.map +0 -1
  325. package/pf-card/BaseCard.css +0 -36
  326. package/pf-card/BaseCard.d.ts +0 -24
  327. package/pf-card/BaseCard.js +0 -51
  328. package/pf-card/BaseCard.js.map +0 -1
  329. package/pf-clipboard-copy/BaseClipboardCopy.css +0 -6
  330. package/pf-clipboard-copy/BaseClipboardCopy.d.ts +0 -18
  331. package/pf-clipboard-copy/BaseClipboardCopy.js +0 -25
  332. package/pf-clipboard-copy/BaseClipboardCopy.js.map +0 -1
  333. package/pf-code-block/BaseCodeBlock.css +0 -7
  334. package/pf-code-block/BaseCodeBlock.d.ts +0 -8
  335. package/pf-code-block/BaseCodeBlock.js +0 -22
  336. package/pf-code-block/BaseCodeBlock.js.map +0 -1
  337. package/pf-icon/BaseIcon.css +0 -22
  338. package/pf-icon/BaseIcon.d.ts +0 -41
  339. package/pf-icon/BaseIcon.js +0 -144
  340. package/pf-icon/BaseIcon.js.map +0 -1
  341. package/pf-label/BaseLabel.css +0 -44
  342. package/pf-label/BaseLabel.d.ts +0 -30
  343. package/pf-label/BaseLabel.js +0 -29
  344. package/pf-label/BaseLabel.js.map +0 -1
  345. package/pf-spinner/BaseSpinner.css +0 -20
  346. package/pf-spinner/BaseSpinner.d.ts +0 -27
  347. package/pf-spinner/BaseSpinner.js +0 -45
  348. package/pf-spinner/BaseSpinner.js.map +0 -1
  349. package/pf-switch/BaseSwitch.css +0 -36
  350. package/pf-switch/BaseSwitch.d.ts +0 -19
  351. package/pf-switch/BaseSwitch.js +0 -109
  352. package/pf-switch/BaseSwitch.js.map +0 -1
  353. package/pf-tabs/BaseTab.css +0 -60
  354. package/pf-tabs/BaseTab.d.ts +0 -32
  355. package/pf-tabs/BaseTab.js +0 -83
  356. package/pf-tabs/BaseTab.js.map +0 -1
  357. package/pf-tabs/BaseTabPanel.css +0 -7
  358. package/pf-tabs/BaseTabPanel.d.ts +0 -7
  359. package/pf-tabs/BaseTabPanel.js +0 -36
  360. package/pf-tabs/BaseTabPanel.js.map +0 -1
  361. package/pf-tabs/BaseTabs.css +0 -86
  362. package/pf-tabs/BaseTabs.d.ts +0 -38
  363. package/pf-tabs/BaseTabs.js +0 -221
  364. package/pf-tabs/BaseTabs.js.map +0 -1
  365. package/pf-tile/BaseTile.d.ts +0 -13
  366. package/pf-tile/BaseTile.js +0 -28
  367. package/pf-tile/BaseTile.js.map +0 -1
  368. package/pf-tooltip/BaseTooltip.css +0 -70
  369. package/pf-tooltip/BaseTooltip.d.ts +0 -16
  370. package/pf-tooltip/BaseTooltip.js +0 -54
  371. package/pf-tooltip/BaseTooltip.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAMlF,MAAM,CAAC,MAAM,OAAO,GAClB,qBAAqB,CAAqB,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC","sourcesContent":["import { createContextWithRoot } from '@patternfly/pfe-core/functions/context.js';\n\nexport interface PfDropdownContext {\n disabled: boolean;\n}\n\nexport const context =\n createContextWithRoot<PfDropdownContext >(Symbol('pf-dropdown-menu-context'));\n"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAMlF,MAAM,CAAC,MAAM,OAAO,GAClB,qBAAqB,CAAoB,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC","sourcesContent":["import type { Context } from '@lit/context';\nimport { createContextWithRoot } from '@patternfly/pfe-core/functions/context.js';\n\nexport interface PfDropdownContext {\n disabled: boolean;\n}\n\nexport const context: Context<unknown, PfDropdownContext> =\n createContextWithRoot<PfDropdownContext>(Symbol('pf-dropdown-menu-context'));\n"]}
@@ -1,4 +1,4 @@
1
- import { LitElement } from 'lit';
1
+ import { LitElement, type TemplateResult } from 'lit';
2
2
  /**
3
3
  * Represents a group of items for a dropdown component.
4
4
  * @slot
@@ -6,18 +6,12 @@ import { LitElement } from 'lit';
6
6
  */
7
7
  export declare class PfDropdownGroup extends LitElement {
8
8
  static readonly styles: CSSStyleSheet[];
9
- static readonly shadowRootOptions: {
10
- delegatesFocus: boolean;
11
- mode: ShadowRootMode;
12
- slotAssignment?: SlotAssignmentMode | undefined;
13
- customElements?: CustomElementRegistry | undefined;
14
- registry?: CustomElementRegistry | undefined;
15
- };
9
+ static readonly shadowRootOptions: ShadowRootInit;
16
10
  /**
17
11
  * The label for the group of dropdown items.
18
12
  */
19
13
  label?: string;
20
- render(): import("lit-html").TemplateResult<1>;
14
+ render(): TemplateResult<1>;
21
15
  }
22
16
  declare global {
23
17
  interface HTMLElementTagNameMap {
@@ -4,11 +4,6 @@ import { customElement } from 'lit/decorators/custom-element.js';
4
4
  import { property } from 'lit/decorators/property.js';
5
5
  import { css } from "lit";
6
6
  const styles = css `:host {\n display: block;\n}\n\n[hidden] {\n display: none !important;\n}\n\np {\n margin: 0;\n font-size: 14px;\n font-weight: normal;\n color: #777;\n padding-top: 0.5rem;\n padding-right: 1rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 0.75rem;\n font-weight: 400;\n color: #6a6e73;\n}\n\n::slotted(hr) {\n margin: 0;\n border-color: var(--pf-c-divider--BackgroundColor, var(--pf-global--BorderColor--100, #d2d2d2));\n border-style: solid;\n}\n\n::slotted([role="separator"]:not(hr)) {\n width: 100%;\n height: 1px;\n background-color: var(--pf-c-divider--BackgroundColor, var(--pf-global--BorderColor--100, #d2d2d2));\n padding: 0px;\n margin: 0px;\n border: 0;\n display: block;\n pointer-events: none;\n}\n`;
7
- /**
8
- * Represents a group of items for a dropdown component.
9
- * @slot
10
- * Content for the group of dropdown items
11
- */
12
7
  let PfDropdownGroup = class PfDropdownGroup extends LitElement {
13
8
  render() {
14
9
  return html `
@@ -22,6 +17,7 @@ PfDropdownGroup.shadowRootOptions = {
22
17
  ...LitElement.shadowRootOptions,
23
18
  delegatesFocus: true,
24
19
  };
20
+ PfDropdownGroup.version = "4.0.0";
25
21
  __decorate([
26
22
  property({ reflect: true })
27
23
  ], PfDropdownGroup.prototype, "label", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"pf-dropdown-group.js","sourceRoot":"","sources":["pf-dropdown-group.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;;;AAItD;;;;GAIG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,UAAU;IAa7C,MAAM;QACJ,OAAO,IAAI,CAAA;oBACK,CAAC,IAAI,CAAC,KAAK,yBAAyB,IAAI,CAAC,KAAK;;KAE7D,CAAC;IACJ,CAAC;;AAjBe,sBAAM,GAAG,CAAC,MAAM,CAAC,AAAX,CAAY;AAET,iCAAiB,GAAG;IAC3C,GAAG,UAAU,CAAC,iBAAiB;IAC/B,cAAc,EAAE,IAAI;CACrB,AAHyC,CAGxC;AAK2B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CAAgB;AAXjC,eAAe;IAD3B,aAAa,CAAC,mBAAmB,CAAC;GACtB,eAAe,CAmB3B","sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\n\nimport styles from './pf-dropdown-group.css';\n\n/**\n * Represents a group of items for a dropdown component.\n * @slot\n * Content for the group of dropdown items\n */\n@customElement('pf-dropdown-group')\nexport class PfDropdownGroup extends LitElement {\n static readonly styles = [styles];\n\n static override readonly shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n /**\n * The label for the group of dropdown items.\n */\n @property({ reflect: true }) label?: string;\n\n render() {\n return html`\n <p ?hidden=\"${!this.label}\" role=\"presentation\">${this.label}</p>\n <slot></slot>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-dropdown-group': PfDropdownGroup;\n }\n}\n"]}
1
+ {"version":3,"file":"pf-dropdown-group.js","sourceRoot":"","sources":["pf-dropdown-group.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAuB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;;;AAU/C,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,UAAU;IAa7C,MAAM;QACJ,OAAO,IAAI,CAAA;oBACK,CAAC,IAAI,CAAC,KAAK,yBAAyB,IAAI,CAAC,KAAK;;KAE7D,CAAC;IACJ,CAAC;;AAjBe,sBAAM,GAAoB,CAAC,MAAM,CAAC,AAA5B,CAA6B;AAE1B,iCAAiB,GAAmB;IAC3D,GAAG,UAAU,CAAC,iBAAiB;IAC/B,cAAc,EAAE,IAAI;CACrB,AAHyC,CAGxC;;AAK2B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CAAgB;AAXjC,eAAe;IAD3B,aAAa,CAAC,mBAAmB,CAAC;GACtB,eAAe","sourcesContent":["import { LitElement, html, type TemplateResult } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\n\nimport styles from './pf-dropdown-group.css';\n\n/**\n * Represents a group of items for a dropdown component.\n * @slot\n * Content for the group of dropdown items\n */\n@customElement('pf-dropdown-group')\nexport class PfDropdownGroup extends LitElement {\n static readonly styles: CSSStyleSheet[] = [styles];\n\n static override readonly shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n /**\n * The label for the group of dropdown items.\n */\n @property({ reflect: true }) label?: string;\n\n render(): TemplateResult<1> {\n return html`\n <p ?hidden=\"${!this.label}\" role=\"presentation\">${this.label}</p>\n <slot></slot>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-dropdown-group': PfDropdownGroup;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { LitElement, type PropertyValues } from 'lit';
1
+ import { LitElement, type PropertyValues, type TemplateResult } from 'lit';
2
2
  export declare class DropdownItemChange extends Event {
3
3
  constructor();
4
4
  }
@@ -10,43 +10,37 @@ export declare class DropdownItemChange extends Event {
10
10
  * Optional slot for item description
11
11
  * @slot -
12
12
  * Content for the dropdown item
13
- * @cssprop {<length>} --pf-c-dropdown__menu-item--FontSize
13
+ * @cssprop {<length>} [--pf-c-dropdown__menu-item--FontSize=1rem]
14
14
  * Dropdown item font size
15
- * {@default `1rem`}
16
- * @cssprop {<length>} --pf-c-dropdown__menu-item--FontWeight
15
+ *
16
+ * @cssprop {<length>} [--pf-c-dropdown__menu-item--FontWeight=400]
17
17
  * Dropdown item font weight
18
- * {@default `400`}
19
- * @cssprop {<length>} --pf-c-dropdown__menu-item--LineHeight
18
+ *
19
+ * @cssprop {<length>} [--pf-c-dropdown__menu-item--LineHeight=1.5]
20
20
  * Dropdown item line height
21
- * {@default `1.5`}
22
- * @cssprop {<length>} --pf-c-dropdown__menu-item--Color
21
+ *
22
+ * @cssprop {<length>} [--pf-c-dropdown__menu-item--Color=#151515]
23
23
  * Dropdown item color
24
- * {@default `#151515`}
25
- * @cssprop {<length>} --pf-c-dropdown__menu-item--BackgroundColor
24
+ *
25
+ * @cssprop {<length>} [--pf-c-dropdown__menu-item--BackgroundColor=transparent]
26
26
  * Dropdown item background color
27
- * {@default `transparent`}
28
- * @cssprop {<length>} --pf-c-dropdown__menu-item--PaddingTop
27
+ *
28
+ * @cssprop {<length>} [--pf-c-dropdown__menu-item--PaddingTop=0.5rem]
29
29
  * Dropdown item padding top
30
- * {@default `0.5rem`}
31
- * @cssprop {<length>} --pf-c-dropdown__menu-item--PaddingRight
30
+ *
31
+ * @cssprop {<length>} [--pf-c-dropdown__menu-item--PaddingRight=1rem]
32
32
  * Dropdown item padding right
33
- * {@default `1rem`}
34
- * @cssprop {<length>} --pf-c-dropdown__menu-item--PaddingBottom
33
+ *
34
+ * @cssprop {<length>} [--pf-c-dropdown__menu-item--PaddingBottom=0.5rem]
35
35
  * Dropdown item padding bottom
36
- * {@default `0.5rem`}
37
- * @cssprop {<length>} --pf-c-dropdown__menu-item--PaddingLeft
36
+ *
37
+ * @cssprop {<length>} [--pf-c-dropdown__menu-item--PaddingLeft=1rem]
38
38
  * Dropdown item padding left
39
- * {@default `1rem`}
39
+ *
40
40
  */
41
41
  export declare class PfDropdownItem extends LitElement {
42
42
  static readonly styles: CSSStyleSheet[];
43
- static readonly shadowRootOptions: {
44
- delegatesFocus: boolean;
45
- mode: ShadowRootMode;
46
- slotAssignment?: SlotAssignmentMode | undefined;
47
- customElements?: CustomElementRegistry | undefined;
48
- registry?: CustomElementRegistry | undefined;
49
- };
43
+ static readonly shadowRootOptions: ShadowRootInit;
50
44
  /**
51
45
  * The value associated with the dropdown item.
52
46
  * This value can be used to identify the selected item
@@ -71,7 +65,7 @@ export declare class PfDropdownItem extends LitElement {
71
65
  /** @internal */
72
66
  menuItem: HTMLElement;
73
67
  protected updated(changed: PropertyValues<this>): void;
74
- render(): import("lit-html").TemplateResult<1>;
68
+ render(): TemplateResult<1>;
75
69
  }
76
70
  declare global {
77
71
  interface HTMLElementTagNameMap {
@@ -5,7 +5,6 @@ import { property } from 'lit/decorators/property.js';
5
5
  import { classMap } from 'lit/directives/class-map.js';
6
6
  import { query } from 'lit/decorators/query.js';
7
7
  import { consume } from '@lit/context';
8
- import { InternalsController } from '@patternfly/pfe-core/controllers/internals-controller.js';
9
8
  import { context } from './context.js';
10
9
  import { css } from "lit";
11
10
  const styles = css `:host {\n display: block;\n width: 100%;\n text-align: left;\n white-space: nowrap;\n border: none;\n cursor: pointer;\n font-size: var(\n --pf-c-dropdown__menu-item--FontSize,\n var(--pf-global--FontSize--md, 1rem)\n );\n font-weight: var(\n --pf-c-dropdown__menu-item--FontWeight,\n var(--pf-global--FontWeight--normal, 400)\n );\n line-height: var(\n --pf-c-dropdown__menu-item--LineHeight,\n var(--pf-global--LineHeight--md, 1.5)\n );\n color: var(\n --pf-c-dropdown__menu-item--Color,\n var(--pf-global--Color--dark-100, #151515)\n );\n background-color: var(\n --pf-c-dropdown__menu-item--BackgroundColor,\n transparent\n );\n border: 3px solid var(\n --pf-c-dropdown__menu-item--BackgroundColor,\n transparent\n );\n}\n\n:host([hidden]),\n[hidden] {\n display: none !important;\n}\n\n:host([disabled]),\n.disabled {\n &, & a {\n cursor: not-allowed;\n }\n --pf-c-dropdown__menu-item--Color: var(\n --pf-c-dropdown__menu-item--disabled--Color,\n var(--pf-global--Color--dark-200, #6a6e73)\n );\n --pf-c-dropdown__menu-item--BackgroundColor: var(\n --pf-c-dropdown__menu-item--disabled--BackgroundColor,\n transparent\n );\n}\n\n:host(:hover) {\n --pf-c-dropdown__menu-item--Color: var(\n --pf-c-dropdown__menu-item--hover--Color,\n var(--pf-global--Color--dark-100, #151515)\n );\n --pf-c-dropdown__menu-item--BackgroundColor: var(\n --pf-c-dropdown__menu-item--hover--BackgroundColor,\n var(--pf-global--BackgroundColor--light-300, #f0f0f0)\n );\n text-decoration: none;\n}\n\n:host(:focus-within) {\n border: 3px solid var(--pf-global--link--Color, #0066cc);\n}\n\n#menuitem {\n position: relative;\n display: flex;\n align-items: stretch;\n justify-content: space-between;\n flex-wrap: wrap;\n padding: var(\n --pf-c-dropdown__menu-item--PaddingTop,\n var(--pf-global--spacer--sm, 0.5rem)\n )\n var(\n --pf-c-dropdown__menu-item--PaddingRight,\n var(--pf-global--spacer--md, 1rem)\n )\n var(\n --pf-c-dropdown__menu-item--PaddingBottom,\n var(--pf-global--spacer--sm, 0.5rem)\n )\n var(\n --pf-c-dropdown__menu-item--PaddingLeft,\n var(--pf-global--spacer--md, 1rem)\n );\n}\n\n#item {\n display: flex;\n align-items: center;\n}\n\n#item:focus {\n outline: none;\n}\n\n#item::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n}\n\n#description {\n display: block;\n flex: 1 0 100%;\n font-size: var(\n --pf-c-dropdown__menu-item-description--FontSize, var(\n --pf-global--FontSize--sm, 0.75rem\n )\n );\n color: var(\n --pf-c-dropdown__menu-item-description--Color, var(\n --pf-global--Color--dark-200, #6a6e73\n )\n );\n word-break: break-all;\n}\n\na {\n color: var(\n --pf-c-dropdown__menu-item--Color,\n var(--pf-global--Color--dark-100, #151515)\n ) !important;\n text-decoration: none !important;\n}\n\nslot:not([name]){\n flex: 1 0 44px;\n min-height: 44px;\n}\n\nslot[name="icon"]::slotted(*) {\n margin-inline-end: 0.5em;\n}\n`;
@@ -14,42 +13,6 @@ export class DropdownItemChange extends Event {
14
13
  super('change', { bubbles: true, cancelable: true });
15
14
  }
16
15
  }
17
- /**
18
- * Represents an item for a dropdown component.
19
- * @slot icon
20
- * Optional slot for an icon
21
- * @slot description
22
- * Optional slot for item description
23
- * @slot -
24
- * Content for the dropdown item
25
- * @cssprop {<length>} --pf-c-dropdown__menu-item--FontSize
26
- * Dropdown item font size
27
- * {@default `1rem`}
28
- * @cssprop {<length>} --pf-c-dropdown__menu-item--FontWeight
29
- * Dropdown item font weight
30
- * {@default `400`}
31
- * @cssprop {<length>} --pf-c-dropdown__menu-item--LineHeight
32
- * Dropdown item line height
33
- * {@default `1.5`}
34
- * @cssprop {<length>} --pf-c-dropdown__menu-item--Color
35
- * Dropdown item color
36
- * {@default `#151515`}
37
- * @cssprop {<length>} --pf-c-dropdown__menu-item--BackgroundColor
38
- * Dropdown item background color
39
- * {@default `transparent`}
40
- * @cssprop {<length>} --pf-c-dropdown__menu-item--PaddingTop
41
- * Dropdown item padding top
42
- * {@default `0.5rem`}
43
- * @cssprop {<length>} --pf-c-dropdown__menu-item--PaddingRight
44
- * Dropdown item padding right
45
- * {@default `1rem`}
46
- * @cssprop {<length>} --pf-c-dropdown__menu-item--PaddingBottom
47
- * Dropdown item padding bottom
48
- * {@default `0.5rem`}
49
- * @cssprop {<length>} --pf-c-dropdown__menu-item--PaddingLeft
50
- * Dropdown item padding left
51
- * {@default `1rem`}
52
- */
53
16
  let PfDropdownItem = class PfDropdownItem extends LitElement {
54
17
  constructor() {
55
18
  super(...arguments);
@@ -91,6 +54,7 @@ PfDropdownItem.shadowRootOptions = {
91
54
  ...LitElement.shadowRootOptions,
92
55
  delegatesFocus: true,
93
56
  };
57
+ PfDropdownItem.version = "4.0.0";
94
58
  __decorate([
95
59
  property({ reflect: true })
96
60
  ], PfDropdownItem.prototype, "value", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"pf-dropdown-item.js","sourceRoot":"","sources":["pf-dropdown-item.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAuB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0DAA0D,CAAC;AAE/F,OAAO,EAAE,OAAO,EAA0B,MAAM,cAAc,CAAC;;;AAI/D,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C;QACE,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEI,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,UAAU;IAAvC;;QAmBL;;WAEG;QACyC,WAAM,GAAG,KAAK,CAAC;QAE3D;;;WAGG;QACyC,aAAQ,GAAG,KAAK,CAAC;IAmC/D,CAAC;IAvBoB,OAAO,CAAC,OAA6B;QACtD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC3D,OAAO,IAAI,CAAA;8CAC+B,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;6CAC5C,IAAI,CAAC,IAAI,oBAAoB,UAAU;;;;SAI3E,CAAC,CAAC,CAAC,IAAI,CAAA;wDACwC,UAAU;;;eAGnD;oDACqC,IAAI,CAAC,WAAW,IAAI,EAAE;aAC7D,CAAC;IACZ,CAAC;;AA7De,qBAAM,GAAG,CAAC,MAAM,CAAC,AAAX,CAAY;AAET,gCAAiB,GAAG;IAC3C,GAAG,UAAU,CAAC,iBAAiB;IAC/B,cAAc,EAAE,IAAI;CACrB,AAHyC,CAGxC;AAM2B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;6CAAgB;AAKX;IAAhC,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;4CAAe;AAKH;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CAAgB;AAMf;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gDAAkB;AAGjD;IAAX,QAAQ,EAAE;mDAAsB;AAIzB;IAFP,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACrC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;2CACC;AAGhB;IAAf,KAAK,CAAC,OAAO,CAAC;gDAAwB;AAtC5B,cAAc;IAD1B,aAAa,CAAC,kBAAkB,CAAC;GACrB,cAAc,CA+D1B","sourcesContent":["import { LitElement, html, type PropertyValues } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { query } from 'lit/decorators/query.js';\nimport { consume } from '@lit/context';\n\nimport { InternalsController } from '@patternfly/pfe-core/controllers/internals-controller.js';\n\nimport { context, type PfDropdownContext } from './context.js';\n\nimport styles from './pf-dropdown-item.css';\n\nexport class DropdownItemChange extends Event {\n constructor() {\n super('change', { bubbles: true, cancelable: true });\n }\n}\n\n/**\n * Represents an item for a dropdown component.\n * @slot icon\n * Optional slot for an icon\n * @slot description\n * Optional slot for item description\n * @slot -\n * Content for the dropdown item\n * @cssprop {<length>} --pf-c-dropdown__menu-item--FontSize\n * Dropdown item font size\n * {@default `1rem`}\n * @cssprop {<length>} --pf-c-dropdown__menu-item--FontWeight\n * Dropdown item font weight\n * {@default `400`}\n * @cssprop {<length>} --pf-c-dropdown__menu-item--LineHeight\n * Dropdown item line height\n * {@default `1.5`}\n * @cssprop {<length>} --pf-c-dropdown__menu-item--Color\n * Dropdown item color\n * {@default `#151515`}\n * @cssprop {<length>} --pf-c-dropdown__menu-item--BackgroundColor\n * Dropdown item background color\n * {@default `transparent`}\n * @cssprop {<length>} --pf-c-dropdown__menu-item--PaddingTop\n * Dropdown item padding top\n * {@default `0.5rem`}\n * @cssprop {<length>} --pf-c-dropdown__menu-item--PaddingRight\n * Dropdown item padding right\n * {@default `1rem`}\n * @cssprop {<length>} --pf-c-dropdown__menu-item--PaddingBottom\n * Dropdown item padding bottom\n * {@default `0.5rem`}\n * @cssprop {<length>} --pf-c-dropdown__menu-item--PaddingLeft\n * Dropdown item padding left\n * {@default `1rem`}\n */\n@customElement('pf-dropdown-item')\nexport class PfDropdownItem extends LitElement {\n static readonly styles = [styles];\n\n static override readonly shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n /**\n * The value associated with the dropdown item.\n * This value can be used to identify the selected item\n */\n @property({ reflect: true }) value?: string;\n\n /**\n * href for link dropdown items\n */\n @property({ attribute: 'href' }) href?: string;\n\n /**\n * Flag indicating whether the item is active\n */\n @property({ type: Boolean, reflect: true }) active = false;\n\n /**\n * Indicates whether the dropdown item is disabled.\n * A disabled item cannot be selected.\n */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Item description; overridden by `description` slot */\n @property() description?: string;\n\n @consume({ context, subscribe: true })\n @property({ attribute: false })\n private ctx?: PfDropdownContext;\n\n /** @internal */\n @query('#item') menuItem!: HTMLElement;\n\n protected override updated(changed: PropertyValues<this>): void {\n if (changed.has('href')) {\n this.dispatchEvent(new DropdownItemChange());\n }\n }\n\n render() {\n const { disabled } = this.ctx ?? { disabled: false };\n const isDisabled = !!this.disabled || !!this.ctx?.disabled;\n return html`\n <div id=\"menuitem\" role=\"none\" class=\"${classMap({ disabled })}\">${this.href ? html`\n <a id=\"item\" role=\"menuitem\" href=\"${this.href}\" aria-disabled=\"${isDisabled}\">\n <slot name=\"icon\"></slot>\n <slot></slot>\n </a>\n ` : html`\n <div id=\"item\" role=\"menuitem\" aria-disabled=\"${isDisabled}\">\n <slot name=\"icon\"></slot>\n <slot></slot>\n </div>`}\n <slot id=\"description\" name=\"description\">${this.description ?? ''}</slot>\n </div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-dropdown-item': PfDropdownItem;\n }\n}\n"]}
1
+ {"version":3,"file":"pf-dropdown-item.js","sourceRoot":"","sources":["pf-dropdown-item.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAA4C,MAAM,KAAK,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,OAAO,EAA0B,MAAM,cAAc,CAAC;;;AAI/D,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C;QACE,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;CACF;AAuCM,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,UAAU;IAAvC;;QAmBL;;WAEG;QACyC,WAAM,GAAG,KAAK,CAAC;QAE3D;;;WAGG;QACyC,aAAQ,GAAG,KAAK,CAAC;;IAY1C,OAAO,CAAC,OAA6B;QACtD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC3D,OAAO,IAAI,CAAA;8CAC+B,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;6CAC5C,IAAI,CAAC,IAAI,oBAAoB,UAAU;;;;SAI3E,CAAC,CAAC,CAAC,IAAI,CAAA;wDACwC,UAAU;;;eAGnD;oDACqC,IAAI,CAAC,WAAW,IAAI,EAAE;aAC7D,CAAC;IACZ,CAAC;;AA7De,qBAAM,GAAoB,CAAC,MAAM,CAAC,AAA5B,CAA6B;AAE1B,gCAAiB,GAAmB;IAC3D,GAAG,UAAU,CAAC,iBAAiB;IAC/B,cAAc,EAAE,IAAI;CACrB,AAHyC,CAGxC;;AAM2B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;6CAAgB;AAKX;IAAhC,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;4CAAe;AAKH;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CAAgB;AAMf;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gDAAkB;AAGjD;IAAX,QAAQ,EAAE;mDAAsB;AAIzB;IAFP,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACrC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;2CACC;AAGhB;IAAf,KAAK,CAAC,OAAO,CAAC;gDAAwB;AAtC5B,cAAc;IAD1B,aAAa,CAAC,kBAAkB,CAAC;GACrB,cAAc","sourcesContent":["import { LitElement, html, type PropertyValues, type TemplateResult } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { query } from 'lit/decorators/query.js';\nimport { consume } from '@lit/context';\n\nimport { context, type PfDropdownContext } from './context.js';\n\nimport styles from './pf-dropdown-item.css';\n\nexport class DropdownItemChange extends Event {\n constructor() {\n super('change', { bubbles: true, cancelable: true });\n }\n}\n\n/**\n * Represents an item for a dropdown component.\n * @slot icon\n * Optional slot for an icon\n * @slot description\n * Optional slot for item description\n * @slot -\n * Content for the dropdown item\n * @cssprop {<length>} [--pf-c-dropdown__menu-item--FontSize=1rem]\n * Dropdown item font size\n *\n * @cssprop {<length>} [--pf-c-dropdown__menu-item--FontWeight=400]\n * Dropdown item font weight\n *\n * @cssprop {<length>} [--pf-c-dropdown__menu-item--LineHeight=1.5]\n * Dropdown item line height\n *\n * @cssprop {<length>} [--pf-c-dropdown__menu-item--Color=#151515]\n * Dropdown item color\n *\n * @cssprop {<length>} [--pf-c-dropdown__menu-item--BackgroundColor=transparent]\n * Dropdown item background color\n *\n * @cssprop {<length>} [--pf-c-dropdown__menu-item--PaddingTop=0.5rem]\n * Dropdown item padding top\n *\n * @cssprop {<length>} [--pf-c-dropdown__menu-item--PaddingRight=1rem]\n * Dropdown item padding right\n *\n * @cssprop {<length>} [--pf-c-dropdown__menu-item--PaddingBottom=0.5rem]\n * Dropdown item padding bottom\n *\n * @cssprop {<length>} [--pf-c-dropdown__menu-item--PaddingLeft=1rem]\n * Dropdown item padding left\n *\n */\n@customElement('pf-dropdown-item')\nexport class PfDropdownItem extends LitElement {\n static readonly styles: CSSStyleSheet[] = [styles];\n\n static override readonly shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n /**\n * The value associated with the dropdown item.\n * This value can be used to identify the selected item\n */\n @property({ reflect: true }) value?: string;\n\n /**\n * href for link dropdown items\n */\n @property({ attribute: 'href' }) href?: string;\n\n /**\n * Flag indicating whether the item is active\n */\n @property({ type: Boolean, reflect: true }) active = false;\n\n /**\n * Indicates whether the dropdown item is disabled.\n * A disabled item cannot be selected.\n */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Item description; overridden by `description` slot */\n @property() description?: string;\n\n @consume({ context, subscribe: true })\n @property({ attribute: false })\n private ctx?: PfDropdownContext;\n\n /** @internal */\n @query('#item') menuItem!: HTMLElement;\n\n protected override updated(changed: PropertyValues<this>): void {\n if (changed.has('href')) {\n this.dispatchEvent(new DropdownItemChange());\n }\n }\n\n render(): TemplateResult<1> {\n const { disabled } = this.ctx ?? { disabled: false };\n const isDisabled = !!this.disabled || !!this.ctx?.disabled;\n return html`\n <div id=\"menuitem\" role=\"none\" class=\"${classMap({ disabled })}\">${this.href ? html`\n <a id=\"item\" role=\"menuitem\" href=\"${this.href}\" aria-disabled=\"${isDisabled}\">\n <slot name=\"icon\"></slot>\n <slot></slot>\n </a>\n ` : html`\n <div id=\"item\" role=\"menuitem\" aria-disabled=\"${isDisabled}\">\n <slot name=\"icon\"></slot>\n <slot></slot>\n </div>`}\n <slot id=\"description\" name=\"description\">${this.description ?? ''}</slot>\n </div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-dropdown-item': PfDropdownItem;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { LitElement } from 'lit';
1
+ import { LitElement, type TemplateResult } from 'lit';
2
2
  import { PfDropdownItem } from './pf-dropdown-item.js';
3
3
  /**
4
4
  * A **dropdown** presents a menu of actions or links in a constrained space that will trigger a
@@ -8,18 +8,12 @@ import { PfDropdownItem } from './pf-dropdown-item.js';
8
8
  export declare class PfDropdownMenu extends LitElement {
9
9
  #private;
10
10
  static readonly styles: CSSStyleSheet[];
11
- static readonly shadowRootOptions: {
12
- delegatesFocus: boolean;
13
- mode: ShadowRootMode;
14
- slotAssignment?: SlotAssignmentMode | undefined;
15
- customElements?: CustomElementRegistry | undefined;
16
- registry?: CustomElementRegistry | undefined;
17
- };
11
+ static readonly shadowRootOptions: ShadowRootInit;
18
12
  private ctx?;
19
13
  /**
20
14
  * current active descendant in menu
21
15
  */
22
- get activeItem(): HTMLElement | undefined;
16
+ get activeItem(): HTMLElement | null;
23
17
  /**
24
18
  * index of current active descendant in menu
25
19
  */
@@ -27,7 +21,7 @@ export declare class PfDropdownMenu extends LitElement {
27
21
  get items(): PfDropdownItem[];
28
22
  connectedCallback(): void;
29
23
  protected willUpdate(): void;
30
- render(): import("lit-html").TemplateResult<1>;
24
+ render(): TemplateResult<1>;
31
25
  }
32
26
  declare global {
33
27
  interface HTMLElementTagNameMap {
@@ -1,4 +1,4 @@
1
- var _PfDropdownMenu_instances, _PfDropdownMenu_internals, _PfDropdownMenu_tabindex, _PfDropdownMenu_onItemChange, _PfDropdownMenu_onSlotChange, _PfDropdownMenu_onMenuitemFocusin, _PfDropdownMenu_onMenuitemClick, _PfDropdownMenu_getSlottedItems;
1
+ var _PfDropdownMenu_instances, _PfDropdownMenu_internals, _PfDropdownMenu_items_get, _PfDropdownMenu_tabindex, _PfDropdownMenu_onItemChange, _PfDropdownMenu_onSlotChange, _PfDropdownMenu_onMenuitemFocusin, _PfDropdownMenu_onMenuitemClick, _PfDropdownMenu_focusItem, _PfDropdownMenu_getSlottedItems;
2
2
  import { __classPrivateFieldGet, __decorate } from "tslib";
3
3
  import { LitElement, html } from 'lit';
4
4
  import { customElement } from 'lit/decorators/custom-element.js';
@@ -16,36 +16,28 @@ function isDisabledItemClick(event) {
16
16
  const item = event.composedPath().find((x) => x instanceof PfDropdownItem);
17
17
  return !!item?.disabled;
18
18
  }
19
- /**
20
- * A **dropdown** presents a menu of actions or links in a constrained space that will trigger a
21
- * process or navigate to a new location.
22
- * @slot - Must contain one or more `<pf-dropdown-item>` or `<pf-dropdown-group>`
23
- */
24
19
  let PfDropdownMenu = class PfDropdownMenu extends LitElement {
25
20
  constructor() {
26
21
  super(...arguments);
27
22
  _PfDropdownMenu_instances.add(this);
28
23
  _PfDropdownMenu_internals.set(this, InternalsController.of(this, { role: 'menu' }));
29
- _PfDropdownMenu_tabindex.set(this, new RovingTabindexController(this, {
30
- getItems: () => this.items.map(x => x.menuItem),
24
+ _PfDropdownMenu_tabindex.set(this, RovingTabindexController.of(this, {
25
+ getItems: () => __classPrivateFieldGet(this, _PfDropdownMenu_instances, "a", _PfDropdownMenu_items_get),
31
26
  }));
32
27
  }
33
28
  /**
34
29
  * current active descendant in menu
35
30
  */
36
31
  get activeItem() {
37
- return __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").activeItem ?? __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").firstItem;
32
+ return __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").items.at(__classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").atFocusedItemIndex)
33
+ ?? __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").atFocusableItems.at(0)
34
+ ?? null;
38
35
  }
39
36
  /**
40
37
  * index of current active descendant in menu
41
38
  */
42
39
  get activeIndex() {
43
- if (!__classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").activeItem) {
44
- return -1;
45
- }
46
- else {
47
- return __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").items.indexOf(__classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").activeItem);
48
- }
40
+ return __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").atFocusedItemIndex;
49
41
  }
50
42
  get items() {
51
43
  return __classPrivateFieldGet(this, _PfDropdownMenu_instances, "m", _PfDropdownMenu_getSlottedItems).call(this, this.shadowRoot?.querySelector('slot'));
@@ -70,22 +62,24 @@ let PfDropdownMenu = class PfDropdownMenu extends LitElement {
70
62
  _PfDropdownMenu_internals = new WeakMap();
71
63
  _PfDropdownMenu_tabindex = new WeakMap();
72
64
  _PfDropdownMenu_instances = new WeakSet();
65
+ _PfDropdownMenu_items_get = function _PfDropdownMenu_items_get() {
66
+ return this.items.map(x => x.menuItem);
67
+ };
73
68
  _PfDropdownMenu_onItemChange = function _PfDropdownMenu_onItemChange(event) {
74
69
  if (event instanceof DropdownItemChange) {
75
- __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").updateItems();
70
+ __classPrivateFieldGet(this, _PfDropdownMenu_instances, "m", _PfDropdownMenu_onSlotChange).call(this);
76
71
  }
77
72
  };
78
73
  _PfDropdownMenu_onSlotChange = function _PfDropdownMenu_onSlotChange() {
79
- __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").updateItems();
74
+ __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").items = __classPrivateFieldGet(this, _PfDropdownMenu_instances, "a", _PfDropdownMenu_items_get);
80
75
  };
81
76
  _PfDropdownMenu_onMenuitemFocusin = function _PfDropdownMenu_onMenuitemFocusin(event) {
82
77
  if (this.ctx?.disabled) {
83
78
  event.preventDefault();
84
79
  event.stopPropagation();
85
80
  }
86
- else if (event.target instanceof PfDropdownItem
87
- && event.target.menuItem !== __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").activeItem) {
88
- __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").setActiveItem(event.target.menuItem);
81
+ else if (event.target instanceof PfDropdownItem) {
82
+ __classPrivateFieldGet(this, _PfDropdownMenu_instances, "m", _PfDropdownMenu_focusItem).call(this, event.target.menuItem);
89
83
  }
90
84
  };
91
85
  _PfDropdownMenu_onMenuitemClick = function _PfDropdownMenu_onMenuitemClick(event) {
@@ -93,9 +87,14 @@ _PfDropdownMenu_onMenuitemClick = function _PfDropdownMenu_onMenuitemClick(event
93
87
  event.preventDefault();
94
88
  event.stopPropagation();
95
89
  }
96
- else if (event.target instanceof PfDropdownItem
97
- && event.target.menuItem !== __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").activeItem) {
98
- __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").setActiveItem(event.target.menuItem);
90
+ else if (event.target instanceof PfDropdownItem) {
91
+ __classPrivateFieldGet(this, _PfDropdownMenu_instances, "m", _PfDropdownMenu_focusItem).call(this, event.target.menuItem);
92
+ }
93
+ };
94
+ _PfDropdownMenu_focusItem = function _PfDropdownMenu_focusItem(item) {
95
+ const itemIndex = __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").items.indexOf(item);
96
+ if (itemIndex !== __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").atFocusedItemIndex) {
97
+ __classPrivateFieldGet(this, _PfDropdownMenu_tabindex, "f").atFocusedItemIndex = itemIndex;
99
98
  }
100
99
  };
101
100
  _PfDropdownMenu_getSlottedItems = function _PfDropdownMenu_getSlottedItems(slot) {
@@ -121,6 +120,7 @@ PfDropdownMenu.shadowRootOptions = {
121
120
  ...LitElement.shadowRootOptions,
122
121
  delegatesFocus: true,
123
122
  };
123
+ PfDropdownMenu.version = "4.0.0";
124
124
  __decorate([
125
125
  consume({ context, subscribe: true }),
126
126
  state()
@@ -1 +1 @@
1
- {"version":3,"file":"pf-dropdown-menu.js","sourceRoot":"","sources":["pf-dropdown-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { consume } from '@lit/context';\nimport { state } from 'lit/decorators/state.js';\nimport { context, type PfDropdownContext } from './context.js';\n\nimport { RovingTabindexController } from '@patternfly/pfe-core/controllers/roving-tabindex-controller.js';\nimport { InternalsController } from '@patternfly/pfe-core/controllers/internals-controller.js';\n\nimport { PfDropdownItem, DropdownItemChange } from './pf-dropdown-item.js';\nimport { PfDropdownGroup } from './pf-dropdown-group.js';\n\nimport styles from './pf-dropdown-menu.css';\nimport { classMap } from 'lit/directives/class-map.js';\n\nfunction isDisabledItemClick(event: MouseEvent) {\n const item: PfDropdownItem | undefined =\n event.composedPath().find((x): x is PfDropdownItem => x instanceof PfDropdownItem);\n return !!item?.disabled;\n}\n\n/**\n * A **dropdown** presents a menu of actions or links in a constrained space that will trigger a\n * process or navigate to a new location.\n * @slot - Must contain one or more `<pf-dropdown-item>` or `<pf-dropdown-group>`\n */\n@customElement('pf-dropdown-menu')\nexport class PfDropdownMenu extends LitElement {\n static readonly styles = [styles];\n\n static override readonly shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n @consume({ context, subscribe: true })\n @state()\n private ctx?: PfDropdownContext;\n\n #internals = InternalsController.of(this, { role: 'menu' });\n\n #tabindex = new RovingTabindexController(this, {\n getItems: () => this.items.map(x => x.menuItem),\n });\n\n /**\n * current active descendant in menu\n */\n get activeItem() {\n return this.#tabindex.activeItem ?? this.#tabindex.firstItem;\n }\n\n /**\n * index of current active descendant in menu\n */\n get activeIndex() {\n if (!this.#tabindex.activeItem) {\n return -1;\n } else {\n return this.#tabindex.items.indexOf(this.#tabindex.activeItem);\n }\n }\n\n get items(): PfDropdownItem[] {\n return this.#getSlottedItems(this.shadowRoot?.querySelector('slot'));\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('focusin', this.#onMenuitemFocusin);\n this.addEventListener('click', this.#onMenuitemClick);\n }\n\n protected override willUpdate(): void {\n this.#internals.ariaDisabled = String(!!this.ctx?.disabled);\n }\n\n render() {\n const { disabled = false } = this.ctx ?? {};\n return html`\n <slot class=\"${classMap({ disabled })}\"\n @slotchange=\"${this.#onSlotChange}\"\n @change=\"${this.#onItemChange}\"></slot>\n `;\n }\n\n /**\n * handles a change event from a dropdown item\n * @param event {Event}\n */\n #onItemChange(event: Event) {\n if (event instanceof DropdownItemChange) {\n this.#tabindex.updateItems();\n }\n }\n\n /**\n * handles slot change event\n */\n #onSlotChange() {\n this.#tabindex.updateItems();\n }\n\n /**\n * handles focusing on an option:\n * updates roving tabindex and active descendant\n */\n #onMenuitemFocusin(event: FocusEvent) {\n if (this.ctx?.disabled) {\n event.preventDefault();\n event.stopPropagation();\n } else if (event.target instanceof PfDropdownItem\n && event.target.menuItem !== this.#tabindex.activeItem) {\n this.#tabindex.setActiveItem(event.target.menuItem);\n }\n }\n\n /**\n * handles clicking on a menuitem:\n * which selects an item by default\n * or toggles selection if multiselectable\n */\n #onMenuitemClick(event: MouseEvent) {\n if (this.ctx?.disabled || isDisabledItemClick(event)) {\n event.preventDefault();\n event.stopPropagation();\n } else if (event.target instanceof PfDropdownItem\n && event.target.menuItem !== this.#tabindex.activeItem) {\n this.#tabindex.setActiveItem(event.target.menuItem);\n }\n }\n\n #getSlottedItems(slot?: HTMLSlotElement | null): PfDropdownItem[] {\n return slot\n ?.assignedElements()\n .flatMap(element => {\n if (element instanceof HTMLSlotElement) {\n return this.#getSlottedItems(element);\n } else if (element instanceof PfDropdownItem) {\n return [element];\n } else if (element instanceof PfDropdownGroup) {\n return Array.from(element.querySelectorAll('pf-dropdown-item'));\n } else {\n return [];\n }\n }) ?? [];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-dropdown-menu': PfDropdownMenu;\n }\n}\n"]}
1
+ {"version":3,"file":"pf-dropdown-menu.js","sourceRoot":"","sources":["pf-dropdown-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, type TemplateResult } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { consume } from '@lit/context';\nimport { state } from 'lit/decorators/state.js';\nimport { context, type PfDropdownContext } from './context.js';\n\nimport { RovingTabindexController } from '@patternfly/pfe-core/controllers/roving-tabindex-controller.js';\nimport { InternalsController } from '@patternfly/pfe-core/controllers/internals-controller.js';\n\nimport { PfDropdownItem, DropdownItemChange } from './pf-dropdown-item.js';\nimport { PfDropdownGroup } from './pf-dropdown-group.js';\n\nimport styles from './pf-dropdown-menu.css';\nimport { classMap } from 'lit/directives/class-map.js';\n\nfunction isDisabledItemClick(event: MouseEvent) {\n const item: PfDropdownItem | undefined =\n event.composedPath().find((x): x is PfDropdownItem => x instanceof PfDropdownItem);\n return !!item?.disabled;\n}\n\n/**\n * A **dropdown** presents a menu of actions or links in a constrained space that will trigger a\n * process or navigate to a new location.\n * @slot - Must contain one or more `<pf-dropdown-item>` or `<pf-dropdown-group>`\n */\n@customElement('pf-dropdown-menu')\nexport class PfDropdownMenu extends LitElement {\n static readonly styles: CSSStyleSheet[] = [styles];\n\n static override readonly shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n @consume({ context, subscribe: true })\n @state()\n private ctx?: PfDropdownContext;\n\n #internals = InternalsController.of(this, { role: 'menu' });\n\n get #items() {\n return this.items.map(x => x.menuItem);\n }\n\n #tabindex = RovingTabindexController.of(this, {\n getItems: () => this.#items,\n });\n\n /**\n * current active descendant in menu\n */\n get activeItem(): HTMLElement | null {\n return this.#tabindex.items.at(this.#tabindex.atFocusedItemIndex)\n ?? this.#tabindex.atFocusableItems.at(0)\n ?? null;\n }\n\n /**\n * index of current active descendant in menu\n */\n get activeIndex(): number {\n return this.#tabindex.atFocusedItemIndex;\n }\n\n get items(): PfDropdownItem[] {\n return this.#getSlottedItems(this.shadowRoot?.querySelector('slot'));\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('focusin', this.#onMenuitemFocusin);\n this.addEventListener('click', this.#onMenuitemClick);\n }\n\n protected override willUpdate(): void {\n this.#internals.ariaDisabled = String(!!this.ctx?.disabled);\n }\n\n render(): TemplateResult<1> {\n const { disabled = false } = this.ctx ?? {};\n return html`\n <slot class=\"${classMap({ disabled })}\"\n @slotchange=\"${this.#onSlotChange}\"\n @change=\"${this.#onItemChange}\"></slot>\n `;\n }\n\n /**\n * handles a change event from a dropdown item\n * @param event {Event}\n */\n #onItemChange(event: Event) {\n if (event instanceof DropdownItemChange) {\n this.#onSlotChange();\n }\n }\n\n /**\n * handles slot change event\n */\n #onSlotChange() {\n this.#tabindex.items = this.#items;\n }\n\n /**\n * handles focusing on an option:\n * updates roving tabindex and active descendant\n * @param event the focus event\n */\n #onMenuitemFocusin(event: FocusEvent) {\n if (this.ctx?.disabled) {\n event.preventDefault();\n event.stopPropagation();\n } else if (event.target instanceof PfDropdownItem) {\n this.#focusItem(event.target.menuItem);\n }\n }\n\n /**\n * handles clicking on a menuitem:\n * which selects an item by default\n * or toggles selection if multiselectable\n * @param event the click event\n */\n #onMenuitemClick(event: MouseEvent) {\n if (this.ctx?.disabled || isDisabledItemClick(event)) {\n event.preventDefault();\n event.stopPropagation();\n } else if (event.target instanceof PfDropdownItem) {\n this.#focusItem(event.target.menuItem);\n }\n }\n\n #focusItem(item: HTMLElement) {\n const itemIndex = this.#tabindex.items.indexOf(item);\n if (itemIndex !== this.#tabindex.atFocusedItemIndex) {\n this.#tabindex.atFocusedItemIndex = itemIndex;\n }\n }\n\n #getSlottedItems(slot?: HTMLSlotElement | null): PfDropdownItem[] {\n return slot\n ?.assignedElements()\n .flatMap(element => {\n if (element instanceof HTMLSlotElement) {\n return this.#getSlottedItems(element);\n } else if (element instanceof PfDropdownItem) {\n return [element];\n } else if (element instanceof PfDropdownGroup) {\n return Array.from(element.querySelectorAll('pf-dropdown-item'));\n } else {\n return [];\n }\n }) ?? [];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-dropdown-menu': PfDropdownMenu;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { LitElement, type PropertyValues } from 'lit';
1
+ import { LitElement, type PropertyValues, type TemplateResult } from 'lit';
2
2
  import '@patternfly/elements/pf-button/pf-button.js';
3
3
  export declare class PfDropdownSelectEvent extends Event {
4
4
  originalEvent: Event | KeyboardEvent;
@@ -12,21 +12,11 @@ export declare class PfDropdownSelectEvent extends Event {
12
12
  * @slot toggle - Custom toggle button
13
13
  * @slot menu - when using a custom toggle, you must slot a `<pf-dropdown-menu>` in alongside it
14
14
  * @csspart menu - The dropdown menu wrapper
15
- * @cssprop {<length>} --pf-c-dropdown__menu--PaddingTop
16
- * Dropdown top padding
17
- * {@default `0.5rem`}
18
- * @cssprop {<length>} --pf-c-tooltip__content--PaddingRight
19
- * Dropdown right padding
20
- * {@default `0.5rem`}
21
- * @cssprop {<length>} --pf-c-dropdown__menu--ZIndex
22
- * Dropdown z-index
23
- * {@default `200`}
24
- * @cssprop --pf-c-dropdown__menu--BoxShadow
25
- * Dropdown box shadow
26
- * {@default `0 0.25rem 0.5rem 0rem rgba(3, 3, 3, 0.12), 0 0 0.25rem 0 rgba(3, 3, 3, 0.06)`}
27
- * @cssprop {<length>} --pf-c-dropdown__menu--Top
28
- * Dropdown top
29
- * {@default `100% + 0.25rem`}
15
+ * @cssprop {<length>} [--pf-c-dropdown__menu--PaddingTop=0.5rem] Dropdown top padding
16
+ * @cssprop {<length>} [--pf-c-tooltip__content--PaddingRight=0.5rem] Dropdown right padding
17
+ * @cssprop {<length>} [--pf-c-dropdown__menu--ZIndex=200] Dropdown z-index
18
+ * @cssprop [--pf-c-dropdown__menu--BoxShadow=0 0.25rem 0.5rem 0rem rgba(3, 3, 3, 0.12), 0 0 0.25rem 0 rgba(3, 3, 3, 0.06)] Dropdown box shadow
19
+ * @cssprop {<length>} [--pf-c-dropdown__menu--Top=100% + 0.25rem] Dropdown top
30
20
  * @fires {PfDropdownSelectEvent} select - when a user select dropdown value
31
21
  * @fires open - when the dropdown toggles open
32
22
  * @fires close - when the dropdown toggles closed
@@ -34,13 +24,7 @@ export declare class PfDropdownSelectEvent extends Event {
34
24
  export declare class PfDropdown extends LitElement {
35
25
  #private;
36
26
  static readonly styles: CSSStyleSheet[];
37
- static readonly shadowRootOptions: {
38
- delegatesFocus: boolean;
39
- mode: ShadowRootMode;
40
- slotAssignment?: SlotAssignmentMode | undefined;
41
- customElements?: CustomElementRegistry | undefined;
42
- registry?: CustomElementRegistry | undefined;
43
- };
27
+ static readonly shadowRootOptions: ShadowRootInit;
44
28
  /**
45
29
  * When disabled, the dropdown can still be toggled open and closed via keyboard, but menu items cannot be activated.
46
30
  */
@@ -54,7 +38,7 @@ export declare class PfDropdown extends LitElement {
54
38
  private ctx;
55
39
  protected getUpdateComplete(): Promise<boolean>;
56
40
  willUpdate(changed: PropertyValues): void;
57
- render(): import("lit-html").TemplateResult<1>;
41
+ render(): TemplateResult<1>;
58
42
  firstUpdated(): void;
59
43
  updated(changed: PropertyValues<this>): void;
60
44
  /**
@@ -23,32 +23,6 @@ export class PfDropdownSelectEvent extends Event {
23
23
  this.value = value;
24
24
  }
25
25
  }
26
- /**
27
- * A **dropdown** presents a menu of actions or links in a constrained space that
28
- * will trigger a process or navigate to a new location.
29
- * @slot - Must contain one or more `<pf-dropdown-item>` or `<pf-dropdown-group>`
30
- * @slot toggle - Custom toggle button
31
- * @slot menu - when using a custom toggle, you must slot a `<pf-dropdown-menu>` in alongside it
32
- * @csspart menu - The dropdown menu wrapper
33
- * @cssprop {<length>} --pf-c-dropdown__menu--PaddingTop
34
- * Dropdown top padding
35
- * {@default `0.5rem`}
36
- * @cssprop {<length>} --pf-c-tooltip__content--PaddingRight
37
- * Dropdown right padding
38
- * {@default `0.5rem`}
39
- * @cssprop {<length>} --pf-c-dropdown__menu--ZIndex
40
- * Dropdown z-index
41
- * {@default `200`}
42
- * @cssprop --pf-c-dropdown__menu--BoxShadow
43
- * Dropdown box shadow
44
- * {@default `0 0.25rem 0.5rem 0rem rgba(3, 3, 3, 0.12), 0 0 0.25rem 0 rgba(3, 3, 3, 0.06)`}
45
- * @cssprop {<length>} --pf-c-dropdown__menu--Top
46
- * Dropdown top
47
- * {@default `100% + 0.25rem`}
48
- * @fires {PfDropdownSelectEvent} select - when a user select dropdown value
49
- * @fires open - when the dropdown toggles open
50
- * @fires close - when the dropdown toggles closed
51
- */
52
26
  let PfDropdown = class PfDropdown extends LitElement {
53
27
  constructor() {
54
28
  super(...arguments);
@@ -240,6 +214,7 @@ PfDropdown.shadowRootOptions = {
240
214
  ...LitElement.shadowRootOptions,
241
215
  delegatesFocus: true,
242
216
  };
217
+ PfDropdown.version = "4.0.0";
243
218
  __decorate([
244
219
  property({ type: Boolean, reflect: true })
245
220
  ], PfDropdown.prototype, "disabled", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"pf-dropdown.js","sourceRoot":"","sources":["pf-dropdown.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, type PropertyValues } from 'lit';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport { provide } from '@lit/context';\n\nimport { FloatingDOMController } from '@patternfly/pfe-core/controllers/floating-dom-controller.js';\nimport { Logger } from '@patternfly/pfe-core/controllers/logger.js';\nimport { getRandomId } from '@patternfly/pfe-core/functions/random.js';\n\nimport { context, type PfDropdownContext } from './context.js';\nimport { PfDropdownItem } from './pf-dropdown-item.js';\nimport { PfDropdownMenu } from './pf-dropdown-menu.js';\n\nimport '@patternfly/elements/pf-button/pf-button.js';\n\nimport styles from './pf-dropdown.css';\n\n\nexport class PfDropdownSelectEvent extends Event {\n constructor(\n public originalEvent: Event | KeyboardEvent,\n public value: string\n ) {\n super('select', { bubbles: true, cancelable: true });\n }\n}\n\n/**\n * A **dropdown** presents a menu of actions or links in a constrained space that\n * will trigger a process or navigate to a new location.\n * @slot - Must contain one or more `<pf-dropdown-item>` or `<pf-dropdown-group>`\n * @slot toggle - Custom toggle button\n * @slot menu - when using a custom toggle, you must slot a `<pf-dropdown-menu>` in alongside it\n * @csspart menu - The dropdown menu wrapper\n * @cssprop {<length>} --pf-c-dropdown__menu--PaddingTop\n * Dropdown top padding\n * {@default `0.5rem`}\n * @cssprop {<length>} --pf-c-tooltip__content--PaddingRight\n * Dropdown right padding\n * {@default `0.5rem`}\n * @cssprop {<length>} --pf-c-dropdown__menu--ZIndex\n * Dropdown z-index\n * {@default `200`}\n * @cssprop --pf-c-dropdown__menu--BoxShadow\n * Dropdown box shadow\n * {@default `0 0.25rem 0.5rem 0rem rgba(3, 3, 3, 0.12), 0 0 0.25rem 0 rgba(3, 3, 3, 0.06)`}\n * @cssprop {<length>} --pf-c-dropdown__menu--Top\n * Dropdown top\n * {@default `100% + 0.25rem`}\n * @fires {PfDropdownSelectEvent} select - when a user select dropdown value\n * @fires open - when the dropdown toggles open\n * @fires close - when the dropdown toggles closed\n */\n@customElement('pf-dropdown')\nexport class PfDropdown extends LitElement {\n static readonly styles = [styles];\n\n static override readonly shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n\n /**\n * When disabled, the dropdown can still be toggled open and closed via keyboard, but menu items cannot be activated.\n */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /**\n * Whether the dropdown is expanded\n */\n @property({ type: Boolean, reflect: true }) expanded = false;\n\n @queryAssignedElements({ slot: 'toggle', flatten: true })\n private _toggleElements!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'menu', flatten: true })\n private _menuElements!: HTMLElement[];\n\n @provide({ context }) private ctx: PfDropdownContext = { disabled: false };\n\n #logger = new Logger(this);\n\n #float = new FloatingDOMController(this, {\n content: () => this._menuElements?.at(0),\n });\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const ps = await Promise.all([\n super.getUpdateComplete(),\n this._menuElements?.map(x => (x as LitElement).updateComplete),\n ]);\n return ps.every(x=>!!x);\n }\n\n willUpdate(changed: PropertyValues) {\n if (changed.has('disabled')) {\n const { disabled } = this;\n this.ctx = { disabled };\n }\n }\n\n render() {\n const { expanded } = this;\n const { anchor, alignment, styles = {} } = this.#float;\n const { disabled } = this;\n return html`\n <div class=\"${classMap({ disabled,\n expanded,\n [anchor ?? '']: !!anchor,\n [alignment ?? '']: !!alignment })}\"\n style=\"${styleMap(styles)}\"\n @slotchange=\"${this.#onSlotchange}\">\n <slot name=\"toggle\"\n @keydown=\"${this.#onButtonKeydown}\"\n @click=\"${() => this.toggle()}\">\n <pf-button id=\"default-toggle\" variant=\"control\">\n Dropdown\n <pf-icon icon=\"caret-down\" size=\"md\"></pf-icon>\n </pf-button>\n </slot>\n <slot name=\"menu\"\n ?hidden=\"${!this.expanded}\"\n @focusout=\"${this.#onMenuFocusout}\"\n @keydown=\"${this.#onMenuKeydown}\"\n @click=\"${this.#onSelect}\">\n <pf-dropdown-menu id=\"menu\" part=\"menu\" ?disabled=\"${disabled}\">\n <slot></slot>\n </pf-dropdown-menu>\n </slot>\n </div>`;\n }\n\n override firstUpdated() {\n this.#onSlotchange();\n }\n\n updated(changed: PropertyValues<this>) {\n if (changed.has('expanded')) {\n this.#expandedChanged();\n }\n if (changed.has('disabled')) {\n this.#disabledChanged();\n }\n }\n\n #validateDOM() {\n const [toggle] = this._toggleElements;\n const [menu] = this._menuElements;\n if (!toggle) {\n this.#logger.warn('no toggle found');\n return false;\n } else if (!menu) {\n this.#logger.warn('no menu found');\n return false;\n } else if (![toggle, menu].map(x => this.shadowRoot?.contains(x))\n .every((p, _, a) => p === a[0])) {\n this.#logger.warn('toggle and menu must be located in the same root');\n return false;\n } else {\n return true;\n }\n }\n\n #onSlotchange() {\n if (this.#validateDOM()) {\n const [menu] = this._menuElements;\n const [toggle] = this._toggleElements;\n menu.id ||= getRandomId('menu');\n toggle.setAttribute('aria-controls', menu.id);\n toggle.setAttribute('aria-haspopup', menu.id);\n toggle.setAttribute('aria-expanded', String(this.expanded) as 'true' | 'false');\n }\n }\n\n async #expandedChanged() {\n const will = this.expanded ? 'close' : 'open';\n const [menu] = this._menuElements;\n const [toggle] = this._toggleElements;\n toggle.setAttribute('aria-expanded', `${String(this.expanded) as 'true' | 'false'}`);\n this.dispatchEvent(new Event(will));\n if (this.expanded) {\n await this.#float.show();\n if (menu instanceof PfDropdownMenu) {\n menu.activeItem?.focus();\n }\n } else {\n await this.#float.hide();\n }\n }\n\n #disabledChanged() {\n if (this.#validateDOM()) {\n const [toggle] = this._toggleElements;\n toggle.setAttribute('aria-disabled', String(!!this.disabled));\n }\n }\n\n #onSelect(event: KeyboardEvent | Event & { target: PfDropdownItem }) {\n const [menu] = this._menuElements;\n if (menu instanceof PfDropdownMenu) {\n const target = event.target as PfDropdownItem || menu.activeItem;\n this.dispatchEvent(new PfDropdownSelectEvent(event, `${target?.value}`));\n this.hide();\n }\n }\n\n #onButtonKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'ArrowDown': {\n this.show();\n }\n }\n }\n\n #onMenuFocusout(event: FocusEvent) {\n if (this.expanded) {\n const root = this.getRootNode();\n const [menu] = this._menuElements;\n if (root instanceof ShadowRoot\n || root instanceof Document\n && event.relatedTarget instanceof PfDropdownItem\n && menu instanceof PfDropdownMenu\n && !menu.items.includes(event.relatedTarget)\n ) {\n this.hide();\n }\n }\n }\n\n #onMenuKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.#onSelect(event);\n break;\n case 'Escape':\n this.hide();\n this._toggleElements?.at(0)?.focus();\n }\n }\n\n /**\n * Opens the dropdown\n */\n async show() {\n this.expanded = true;\n await this.updateComplete;\n }\n\n /**\n * Closes the dropdown\n */\n async hide() {\n this.expanded = false;\n await this.updateComplete;\n }\n\n async toggle() {\n this.expanded = !this.expanded;\n await this.updateComplete;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-dropdown': PfDropdown;\n }\n}\n"]}
1
+ {"version":3,"file":"pf-dropdown.js","sourceRoot":"","sources":["pf-dropdown.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, type PropertyValues, type TemplateResult } from 'lit';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport { provide } from '@lit/context';\n\nimport { FloatingDOMController } from '@patternfly/pfe-core/controllers/floating-dom-controller.js';\nimport { Logger } from '@patternfly/pfe-core/controllers/logger.js';\nimport { getRandomId } from '@patternfly/pfe-core/functions/random.js';\n\nimport { context, type PfDropdownContext } from './context.js';\nimport { PfDropdownItem } from './pf-dropdown-item.js';\nimport { PfDropdownMenu } from './pf-dropdown-menu.js';\n\nimport '@patternfly/elements/pf-button/pf-button.js';\n\nimport styles from './pf-dropdown.css';\n\n\nexport class PfDropdownSelectEvent extends Event {\n constructor(\n public originalEvent: Event | KeyboardEvent,\n public value: string\n ) {\n super('select', { bubbles: true, cancelable: true });\n }\n}\n\n/**\n * A **dropdown** presents a menu of actions or links in a constrained space that\n * will trigger a process or navigate to a new location.\n * @slot - Must contain one or more `<pf-dropdown-item>` or `<pf-dropdown-group>`\n * @slot toggle - Custom toggle button\n * @slot menu - when using a custom toggle, you must slot a `<pf-dropdown-menu>` in alongside it\n * @csspart menu - The dropdown menu wrapper\n * @cssprop {<length>} [--pf-c-dropdown__menu--PaddingTop=0.5rem] Dropdown top padding\n * @cssprop {<length>} [--pf-c-tooltip__content--PaddingRight=0.5rem] Dropdown right padding\n * @cssprop {<length>} [--pf-c-dropdown__menu--ZIndex=200] Dropdown z-index\n * @cssprop [--pf-c-dropdown__menu--BoxShadow=0 0.25rem 0.5rem 0rem rgba(3, 3, 3, 0.12), 0 0 0.25rem 0 rgba(3, 3, 3, 0.06)] Dropdown box shadow\n * @cssprop {<length>} [--pf-c-dropdown__menu--Top=100% + 0.25rem] Dropdown top\n * @fires {PfDropdownSelectEvent} select - when a user select dropdown value\n * @fires open - when the dropdown toggles open\n * @fires close - when the dropdown toggles closed\n */\n@customElement('pf-dropdown')\nexport class PfDropdown extends LitElement {\n static readonly styles: CSSStyleSheet[] = [styles];\n\n static override readonly shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n /**\n * When disabled, the dropdown can still be toggled open and closed via keyboard, but menu items cannot be activated.\n */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /**\n * Whether the dropdown is expanded\n */\n @property({ type: Boolean, reflect: true }) expanded = false;\n\n @queryAssignedElements({ slot: 'toggle', flatten: true })\n private _toggleElements!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'menu', flatten: true })\n private _menuElements!: HTMLElement[];\n\n @provide({ context }) private ctx: PfDropdownContext = { disabled: false };\n\n #logger = new Logger(this);\n\n #float = new FloatingDOMController(this, {\n content: () => this._menuElements?.at(0),\n });\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const ps = await Promise.all([\n super.getUpdateComplete(),\n this._menuElements?.map(x => (x as LitElement).updateComplete),\n ]);\n return ps.every(x=>!!x);\n }\n\n willUpdate(changed: PropertyValues): void {\n if (changed.has('disabled')) {\n const { disabled } = this;\n this.ctx = { disabled };\n }\n }\n\n render(): TemplateResult<1> {\n const { expanded } = this;\n const { anchor, alignment, styles = {} } = this.#float;\n const { disabled } = this;\n return html`\n <div class=\"${classMap({ disabled,\n expanded,\n [anchor ?? '']: !!anchor,\n [alignment ?? '']: !!alignment })}\"\n style=\"${styleMap(styles)}\"\n @slotchange=\"${this.#onSlotchange}\">\n <slot name=\"toggle\"\n @keydown=\"${this.#onButtonKeydown}\"\n @click=\"${() => this.toggle()}\">\n <pf-button id=\"default-toggle\" variant=\"control\">\n Dropdown\n <pf-icon icon=\"caret-down\" size=\"md\"></pf-icon>\n </pf-button>\n </slot>\n <slot name=\"menu\"\n ?hidden=\"${!this.expanded}\"\n @focusout=\"${this.#onMenuFocusout}\"\n @keydown=\"${this.#onMenuKeydown}\"\n @click=\"${this.#onSelect}\">\n <pf-dropdown-menu id=\"menu\" part=\"menu\" ?disabled=\"${disabled}\">\n <slot></slot>\n </pf-dropdown-menu>\n </slot>\n </div>`;\n }\n\n override firstUpdated(): void {\n this.#onSlotchange();\n }\n\n updated(changed: PropertyValues<this>): void {\n if (changed.has('expanded')) {\n this.#expandedChanged();\n }\n if (changed.has('disabled')) {\n this.#disabledChanged();\n }\n }\n\n #validateDOM() {\n const [toggle] = this._toggleElements;\n const [menu] = this._menuElements;\n if (!toggle) {\n this.#logger.warn('no toggle found');\n return false;\n } else if (!menu) {\n this.#logger.warn('no menu found');\n return false;\n } else if (![toggle, menu].map(x => this.shadowRoot?.contains(x))\n .every((p, _, a) => p === a[0])) {\n this.#logger.warn('toggle and menu must be located in the same root');\n return false;\n } else {\n return true;\n }\n }\n\n #onSlotchange() {\n if (this.#validateDOM()) {\n const [menu] = this._menuElements;\n const [toggle] = this._toggleElements;\n menu.id ||= getRandomId('menu');\n toggle.setAttribute('aria-controls', menu.id);\n toggle.setAttribute('aria-haspopup', menu.id);\n toggle.setAttribute('aria-expanded', String(this.expanded) as 'true' | 'false');\n }\n }\n\n async #expandedChanged() {\n const will = this.expanded ? 'close' : 'open';\n const [menu] = this._menuElements;\n const [toggle] = this._toggleElements;\n toggle.setAttribute('aria-expanded', `${String(this.expanded) as 'true' | 'false'}`);\n this.dispatchEvent(new Event(will));\n if (this.expanded) {\n await this.#float.show();\n if (menu instanceof PfDropdownMenu) {\n menu.activeItem?.focus();\n }\n } else {\n await this.#float.hide();\n }\n }\n\n #disabledChanged() {\n if (this.#validateDOM()) {\n const [toggle] = this._toggleElements;\n toggle.setAttribute('aria-disabled', String(!!this.disabled));\n }\n }\n\n #onSelect(event: KeyboardEvent | Event & { target: PfDropdownItem }) {\n const [menu] = this._menuElements;\n if (menu instanceof PfDropdownMenu) {\n const target = event.target as PfDropdownItem || menu.activeItem;\n this.dispatchEvent(new PfDropdownSelectEvent(event, `${target?.value}`));\n this.hide();\n }\n }\n\n #onButtonKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'ArrowDown': {\n this.show();\n }\n }\n }\n\n #onMenuFocusout(event: FocusEvent) {\n if (this.expanded) {\n const root = this.getRootNode();\n const [menu] = this._menuElements;\n if (root instanceof ShadowRoot\n || root instanceof Document\n && event.relatedTarget instanceof PfDropdownItem\n && menu instanceof PfDropdownMenu\n && !menu.items.includes(event.relatedTarget)\n ) {\n this.hide();\n }\n }\n }\n\n #onMenuKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.#onSelect(event);\n break;\n case 'Escape':\n this.hide();\n this._toggleElements?.at(0)?.focus();\n }\n }\n\n /**\n * Opens the dropdown\n */\n async show(): Promise<void> {\n this.expanded = true;\n await this.updateComplete;\n }\n\n /**\n * Closes the dropdown\n */\n async hide(): Promise<void> {\n this.expanded = false;\n await this.updateComplete;\n }\n\n async toggle(): Promise<void> {\n this.expanded = !this.expanded;\n await this.updateComplete;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-dropdown': PfDropdown;\n }\n}\n"]}