@patternfly/elements 4.0.2 → 4.2.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 (295) hide show
  1. package/custom-elements.json +13680 -12603
  2. package/package.json +17 -14
  3. package/pf-accordion/pf-accordion-header.css +37 -0
  4. package/pf-accordion/pf-accordion-header.d.ts +0 -61
  5. package/pf-accordion/pf-accordion-header.js +180 -2
  6. package/pf-accordion/pf-accordion-header.js.map +1 -1
  7. package/pf-accordion/pf-accordion-panel.css +12 -0
  8. package/pf-accordion/pf-accordion-panel.d.ts +0 -34
  9. package/pf-accordion/pf-accordion-panel.js +87 -2
  10. package/pf-accordion/pf-accordion-panel.js.map +1 -1
  11. package/pf-accordion/pf-accordion.css +62 -0
  12. package/pf-accordion/pf-accordion.d.ts +1 -64
  13. package/pf-accordion/pf-accordion.js +156 -2
  14. package/pf-accordion/pf-accordion.js.map +1 -1
  15. package/pf-avatar/pf-avatar.css +14 -0
  16. package/pf-avatar/pf-avatar.d.ts +1 -14
  17. package/pf-avatar/pf-avatar.js +82 -2
  18. package/pf-avatar/pf-avatar.js.map +1 -1
  19. package/pf-back-to-top/pf-back-to-top.css +12 -0
  20. package/pf-back-to-top/pf-back-to-top.d.ts +1 -17
  21. package/pf-back-to-top/pf-back-to-top.js +91 -4
  22. package/pf-back-to-top/pf-back-to-top.js.map +1 -1
  23. package/pf-background-image/pf-background-image.css +7 -0
  24. package/pf-background-image/pf-background-image.d.ts +1 -8
  25. package/pf-background-image/pf-background-image.js +76 -2
  26. package/pf-background-image/pf-background-image.js.map +1 -1
  27. package/pf-badge/pf-badge.css +13 -0
  28. package/pf-badge/pf-badge.d.ts +1 -13
  29. package/pf-badge/pf-badge.js +53 -2
  30. package/pf-badge/pf-badge.js.map +1 -1
  31. package/pf-banner/pf-banner.css +21 -0
  32. package/pf-banner/pf-banner.d.ts +1 -19
  33. package/pf-banner/pf-banner.js +122 -2
  34. package/pf-banner/pf-banner.js.map +1 -1
  35. package/pf-button/pf-button-tokens.css +38 -0
  36. package/pf-button/pf-button.d.ts +1 -106
  37. package/pf-button/pf-button.js +837 -4
  38. package/pf-button/pf-button.js.map +1 -1
  39. package/pf-card/pf-card.css +24 -0
  40. package/pf-card/pf-card.d.ts +1 -38
  41. package/pf-card/pf-card.js +248 -2
  42. package/pf-card/pf-card.js.map +1 -1
  43. package/pf-card/test/pf-card.e2e.js +20 -1
  44. package/pf-card/test/pf-card.e2e.js.map +1 -1
  45. package/pf-chip/pf-chip-group.css +15 -0
  46. package/pf-chip/pf-chip-group.d.ts +0 -15
  47. package/pf-chip/pf-chip-group.js +111 -2
  48. package/pf-chip/pf-chip-group.js.map +1 -1
  49. package/pf-chip/pf-chip.css +30 -1
  50. package/pf-chip/pf-chip.d.ts +1 -20
  51. package/pf-chip/pf-chip.js +135 -2
  52. package/pf-chip/pf-chip.js.map +1 -1
  53. package/pf-clipboard-copy/pf-clipboard-copy.css +25 -0
  54. package/pf-clipboard-copy/pf-clipboard-copy.d.ts +1 -27
  55. package/pf-clipboard-copy/pf-clipboard-copy.js +323 -6
  56. package/pf-clipboard-copy/pf-clipboard-copy.js.map +1 -1
  57. package/pf-code-block/pf-code-block.css +11 -1
  58. package/pf-code-block/pf-code-block.js +70 -18
  59. package/pf-code-block/pf-code-block.js.map +1 -1
  60. package/pf-dropdown/pf-dropdown-group.js +40 -2
  61. package/pf-dropdown/pf-dropdown-group.js.map +1 -1
  62. package/pf-dropdown/pf-dropdown-item.css +10 -0
  63. package/pf-dropdown/pf-dropdown-item.d.ts +0 -27
  64. package/pf-dropdown/pf-dropdown-item.js +155 -2
  65. package/pf-dropdown/pf-dropdown-item.js.map +1 -1
  66. package/pf-dropdown/pf-dropdown-menu.js +39 -2
  67. package/pf-dropdown/pf-dropdown-menu.js.map +1 -1
  68. package/pf-dropdown/pf-dropdown.css +5 -0
  69. package/pf-dropdown/pf-dropdown.d.ts +1 -9
  70. package/pf-dropdown/pf-dropdown.js +350 -2
  71. package/pf-dropdown/pf-dropdown.js.map +1 -1
  72. package/pf-icon/pf-icon.css +1 -0
  73. package/pf-icon/pf-icon.d.ts +1 -3
  74. package/pf-icon/pf-icon.js +44 -4
  75. package/pf-icon/pf-icon.js.map +1 -1
  76. package/pf-jump-links/pf-jump-links-item.css +7 -1
  77. package/pf-jump-links/pf-jump-links-item.d.ts +0 -8
  78. package/pf-jump-links/pf-jump-links-item.js +77 -2
  79. package/pf-jump-links/pf-jump-links-item.js.map +1 -1
  80. package/pf-jump-links/pf-jump-links-list.css +3 -0
  81. package/pf-jump-links/pf-jump-links-list.d.ts +0 -5
  82. package/pf-jump-links/pf-jump-links-list.js +20 -2
  83. package/pf-jump-links/pf-jump-links-list.js.map +1 -1
  84. package/pf-jump-links/pf-jump-links.css +36 -0
  85. package/pf-jump-links/pf-jump-links.d.ts +1 -38
  86. package/pf-jump-links/pf-jump-links.js +179 -2
  87. package/pf-jump-links/pf-jump-links.js.map +1 -1
  88. package/pf-label/pf-label.css +51 -1
  89. package/pf-label/pf-label.d.ts +1 -58
  90. package/pf-label/pf-label.js +257 -2
  91. package/pf-label/pf-label.js.map +1 -1
  92. package/pf-modal/pf-modal.css +11 -0
  93. package/pf-modal/pf-modal.d.ts +1 -24
  94. package/pf-modal/pf-modal.js +215 -2
  95. package/pf-modal/pf-modal.js.map +1 -1
  96. package/pf-panel/pf-panel.css +29 -0
  97. package/pf-panel/pf-panel.d.ts +1 -32
  98. package/pf-panel/pf-panel.js +204 -2
  99. package/pf-panel/pf-panel.js.map +1 -1
  100. package/pf-popover/pf-popover.css +33 -0
  101. package/pf-popover/pf-popover.d.ts +1 -108
  102. package/pf-popover/pf-popover.js +251 -3
  103. package/pf-popover/pf-popover.js.map +1 -1
  104. package/pf-progress/pf-progress.css +19 -0
  105. package/pf-progress/pf-progress.d.ts +1 -57
  106. package/pf-progress/pf-progress.js +231 -2
  107. package/pf-progress/pf-progress.js.map +1 -1
  108. package/pf-progress-stepper/pf-progress-step.js +126 -2
  109. package/pf-progress-stepper/pf-progress-step.js.map +1 -1
  110. package/pf-progress-stepper/pf-progress-stepper.css +96 -0
  111. package/pf-progress-stepper/pf-progress-stepper.d.ts +1 -115
  112. package/pf-progress-stepper/pf-progress-stepper.js +326 -2
  113. package/pf-progress-stepper/pf-progress-stepper.js.map +1 -1
  114. package/pf-search-input/pf-search-input.css +308 -0
  115. package/pf-search-input/pf-search-input.d.ts +75 -0
  116. package/pf-search-input/pf-search-input.js +630 -0
  117. package/pf-search-input/pf-search-input.js.map +1 -0
  118. package/pf-search-input/test/pf-search-input.e2e.d.ts +1 -0
  119. package/pf-search-input/test/pf-search-input.e2e.js +23 -0
  120. package/pf-search-input/test/pf-search-input.e2e.js.map +1 -0
  121. package/pf-search-input/test/pf-search-input.spec.d.ts +1 -0
  122. package/pf-search-input/test/pf-search-input.spec.js +1021 -0
  123. package/pf-search-input/test/pf-search-input.spec.js.map +1 -0
  124. package/pf-select/pf-option-group.js +27 -2
  125. package/pf-select/pf-option-group.js.map +1 -1
  126. package/pf-select/pf-option.css +9 -1
  127. package/pf-select/pf-option.js +83 -2
  128. package/pf-select/pf-option.js.map +1 -1
  129. package/pf-select/pf-select.css +157 -0
  130. package/pf-select/pf-select.d.ts +1 -158
  131. package/pf-select/pf-select.js +542 -5
  132. package/pf-select/pf-select.js.map +1 -1
  133. package/pf-spinner/pf-spinner.css +13 -0
  134. package/pf-spinner/pf-spinner.d.ts +1 -14
  135. package/pf-spinner/pf-spinner.js +101 -2
  136. package/pf-spinner/pf-spinner.js.map +1 -1
  137. package/pf-switch/pf-switch.css +22 -0
  138. package/pf-switch/pf-switch.d.ts +1 -30
  139. package/pf-switch/pf-switch.js +156 -2
  140. package/pf-switch/pf-switch.js.map +1 -1
  141. package/pf-table/context.d.ts +3 -0
  142. package/pf-table/context.js +3 -0
  143. package/pf-table/context.js.map +1 -0
  144. package/pf-table/pf-caption.js +10 -2
  145. package/pf-table/pf-caption.js.map +1 -1
  146. package/pf-table/pf-table.css +211 -0
  147. package/pf-table/pf-table.d.ts +2 -635
  148. package/pf-table/pf-table.js +445 -4
  149. package/pf-table/pf-table.js.map +1 -1
  150. package/pf-table/pf-tbody.js +18 -2
  151. package/pf-table/pf-tbody.js.map +1 -1
  152. package/pf-table/pf-td.js +107 -2
  153. package/pf-table/pf-td.js.map +1 -1
  154. package/pf-table/pf-th.d.ts +1 -0
  155. package/pf-table/pf-th.js +102 -7
  156. package/pf-table/pf-th.js.map +1 -1
  157. package/pf-table/pf-thead.d.ts +1 -0
  158. package/pf-table/pf-thead.js +26 -2
  159. package/pf-table/pf-thead.js.map +1 -1
  160. package/pf-table/pf-tr.js +89 -2
  161. package/pf-table/pf-tr.js.map +1 -1
  162. package/pf-tabs/pf-tab-panel.css +1 -0
  163. package/pf-tabs/pf-tab-panel.d.ts +0 -2
  164. package/pf-tabs/pf-tab-panel.js +19 -3
  165. package/pf-tabs/pf-tab-panel.js.map +1 -1
  166. package/pf-tabs/pf-tab.css +33 -0
  167. package/pf-tabs/pf-tab.d.ts +1 -41
  168. package/pf-tabs/pf-tab.js +234 -4
  169. package/pf-tabs/pf-tab.js.map +1 -1
  170. package/pf-tabs/pf-tabs.css +26 -0
  171. package/pf-tabs/pf-tabs.d.ts +1 -34
  172. package/pf-tabs/pf-tabs.js +307 -2
  173. package/pf-tabs/pf-tabs.js.map +1 -1
  174. package/pf-tabs/test/pf-tabs.spec.js +9 -0
  175. package/pf-tabs/test/pf-tabs.spec.js.map +1 -1
  176. package/pf-text-area/pf-text-area.css +125 -0
  177. package/pf-text-area/pf-text-area.d.ts +1 -125
  178. package/pf-text-area/pf-text-area.js +320 -2
  179. package/pf-text-area/pf-text-area.js.map +1 -1
  180. package/pf-text-input/pf-text-input.css +126 -0
  181. package/pf-text-input/pf-text-input.d.ts +1 -126
  182. package/pf-text-input/pf-text-input.js +395 -2
  183. package/pf-text-input/pf-text-input.js.map +1 -1
  184. package/pf-tile/pf-tile.css +28 -8
  185. package/pf-tile/pf-tile.d.ts +1 -24
  186. package/pf-tile/pf-tile.js +156 -2
  187. package/pf-tile/pf-tile.js.map +1 -1
  188. package/pf-timestamp/pf-timestamp.d.ts +1 -0
  189. package/pf-timestamp/pf-timestamp.js +10 -2
  190. package/pf-timestamp/pf-timestamp.js.map +1 -1
  191. package/pf-tooltip/pf-tooltip.css +10 -0
  192. package/pf-tooltip/pf-tooltip.d.ts +1 -79
  193. package/pf-tooltip/pf-tooltip.js +115 -5
  194. package/pf-tooltip/pf-tooltip.js.map +1 -1
  195. package/pfe.min.js +0 -7439
  196. package/pfe.min.js.LEGAL.txt +0 -57
  197. package/pfe.min.js.map +0 -7
  198. package/react/pf-accordion/pf-accordion-header.d.ts +0 -5
  199. package/react/pf-accordion/pf-accordion-header.js +0 -12
  200. package/react/pf-accordion/pf-accordion-panel.d.ts +0 -5
  201. package/react/pf-accordion/pf-accordion-panel.js +0 -10
  202. package/react/pf-accordion/pf-accordion.d.ts +0 -5
  203. package/react/pf-accordion/pf-accordion.js +0 -13
  204. package/react/pf-avatar/pf-avatar.d.ts +0 -5
  205. package/react/pf-avatar/pf-avatar.js +0 -12
  206. package/react/pf-back-to-top/pf-back-to-top.d.ts +0 -5
  207. package/react/pf-back-to-top/pf-back-to-top.js +0 -10
  208. package/react/pf-background-image/pf-background-image.d.ts +0 -5
  209. package/react/pf-background-image/pf-background-image.js +0 -10
  210. package/react/pf-badge/pf-badge.d.ts +0 -5
  211. package/react/pf-badge/pf-badge.js +0 -10
  212. package/react/pf-banner/pf-banner.d.ts +0 -5
  213. package/react/pf-banner/pf-banner.js +0 -10
  214. package/react/pf-button/pf-button.d.ts +0 -5
  215. package/react/pf-button/pf-button.js +0 -12
  216. package/react/pf-card/pf-card.d.ts +0 -5
  217. package/react/pf-card/pf-card.js +0 -10
  218. package/react/pf-chip/pf-chip-group.d.ts +0 -5
  219. package/react/pf-chip/pf-chip-group.js +0 -13
  220. package/react/pf-chip/pf-chip.d.ts +0 -5
  221. package/react/pf-chip/pf-chip.js +0 -13
  222. package/react/pf-clipboard-copy/pf-clipboard-copy.d.ts +0 -5
  223. package/react/pf-clipboard-copy/pf-clipboard-copy.js +0 -12
  224. package/react/pf-code-block/pf-code-block.d.ts +0 -5
  225. package/react/pf-code-block/pf-code-block.js +0 -10
  226. package/react/pf-dropdown/pf-dropdown-group.d.ts +0 -5
  227. package/react/pf-dropdown/pf-dropdown-group.js +0 -10
  228. package/react/pf-dropdown/pf-dropdown-item.d.ts +0 -5
  229. package/react/pf-dropdown/pf-dropdown-item.js +0 -10
  230. package/react/pf-dropdown/pf-dropdown-menu.d.ts +0 -5
  231. package/react/pf-dropdown/pf-dropdown-menu.js +0 -10
  232. package/react/pf-dropdown/pf-dropdown.d.ts +0 -5
  233. package/react/pf-dropdown/pf-dropdown.js +0 -14
  234. package/react/pf-icon/pf-icon.d.ts +0 -5
  235. package/react/pf-icon/pf-icon.js +0 -13
  236. package/react/pf-jump-links/pf-jump-links-item.d.ts +0 -5
  237. package/react/pf-jump-links/pf-jump-links-item.js +0 -13
  238. package/react/pf-jump-links/pf-jump-links-list.d.ts +0 -5
  239. package/react/pf-jump-links/pf-jump-links-list.js +0 -10
  240. package/react/pf-jump-links/pf-jump-links.d.ts +0 -5
  241. package/react/pf-jump-links/pf-jump-links.js +0 -12
  242. package/react/pf-label/pf-label.d.ts +0 -5
  243. package/react/pf-label/pf-label.js +0 -12
  244. package/react/pf-modal/pf-modal.d.ts +0 -5
  245. package/react/pf-modal/pf-modal.js +0 -13
  246. package/react/pf-panel/pf-panel.d.ts +0 -5
  247. package/react/pf-panel/pf-panel.js +0 -10
  248. package/react/pf-popover/pf-popover.d.ts +0 -5
  249. package/react/pf-popover/pf-popover.js +0 -10
  250. package/react/pf-progress/pf-progress.d.ts +0 -5
  251. package/react/pf-progress/pf-progress.js +0 -10
  252. package/react/pf-progress-stepper/pf-progress-step.d.ts +0 -5
  253. package/react/pf-progress-stepper/pf-progress-step.js +0 -10
  254. package/react/pf-progress-stepper/pf-progress-stepper.d.ts +0 -5
  255. package/react/pf-progress-stepper/pf-progress-stepper.js +0 -10
  256. package/react/pf-select/pf-option-group.d.ts +0 -5
  257. package/react/pf-select/pf-option-group.js +0 -10
  258. package/react/pf-select/pf-option.d.ts +0 -5
  259. package/react/pf-select/pf-option.js +0 -10
  260. package/react/pf-select/pf-select.d.ts +0 -5
  261. package/react/pf-select/pf-select.js +0 -13
  262. package/react/pf-spinner/pf-spinner.d.ts +0 -5
  263. package/react/pf-spinner/pf-spinner.js +0 -10
  264. package/react/pf-switch/pf-switch.d.ts +0 -5
  265. package/react/pf-switch/pf-switch.js +0 -12
  266. package/react/pf-table/pf-caption.d.ts +0 -5
  267. package/react/pf-table/pf-caption.js +0 -10
  268. package/react/pf-table/pf-table.d.ts +0 -5
  269. package/react/pf-table/pf-table.js +0 -10
  270. package/react/pf-table/pf-tbody.d.ts +0 -5
  271. package/react/pf-table/pf-tbody.js +0 -10
  272. package/react/pf-table/pf-td.d.ts +0 -5
  273. package/react/pf-table/pf-td.js +0 -10
  274. package/react/pf-table/pf-th.d.ts +0 -5
  275. package/react/pf-table/pf-th.js +0 -10
  276. package/react/pf-table/pf-thead.d.ts +0 -5
  277. package/react/pf-table/pf-thead.js +0 -10
  278. package/react/pf-table/pf-tr.d.ts +0 -5
  279. package/react/pf-table/pf-tr.js +0 -10
  280. package/react/pf-tabs/pf-tab-panel.d.ts +0 -5
  281. package/react/pf-tabs/pf-tab-panel.js +0 -10
  282. package/react/pf-tabs/pf-tab.d.ts +0 -5
  283. package/react/pf-tabs/pf-tab.js +0 -12
  284. package/react/pf-tabs/pf-tabs.d.ts +0 -5
  285. package/react/pf-tabs/pf-tabs.js +0 -10
  286. package/react/pf-text-area/pf-text-area.d.ts +0 -5
  287. package/react/pf-text-area/pf-text-area.js +0 -10
  288. package/react/pf-text-input/pf-text-input.d.ts +0 -5
  289. package/react/pf-text-input/pf-text-input.js +0 -10
  290. package/react/pf-tile/pf-tile.d.ts +0 -5
  291. package/react/pf-tile/pf-tile.js +0 -10
  292. package/react/pf-timestamp/pf-timestamp.d.ts +0 -5
  293. package/react/pf-timestamp/pf-timestamp.js +0 -10
  294. package/react/pf-tooltip/pf-tooltip.d.ts +0 -5
  295. package/react/pf-tooltip/pf-tooltip.js +0 -10
@@ -5,27 +5,78 @@ import { customElement } from 'lit/decorators/custom-element.js';
5
5
  import { property } from 'lit/decorators/property.js';
6
6
  import { classMap } from 'lit/directives/class-map.js';
7
7
  import { css } from "lit";
8
- const styles = css `:host {\n display: block;\n background-color: var(--pf-c-code-block--BackgroundColor, #f0f0f0);\n font-size: var(--pf-c-code-block__pre--FontSize, 0.875rem);\n font-family: var(--pf-c-code-block__pre--FontFamily, "Liberation Mono", consolas, "SFMono-Regular", menlo, monaco, "Courier New", monospace);\n}\n\n[hidden] {\n display: none !important;\n}\n\n#container {\n margin: 0;\n padding-top: var(--pf-c-code-block__content--PaddingTop, 1rem);\n padding-right: var(--pf-c-code-block__content--PaddingRight, 1rem);\n padding-bottom: var(--pf-c-code-block__content--PaddingBottom, 1rem);\n padding-left: var(--pf-c-code-block__content--PaddingLeft, 1rem);\n}\n\n#header {\n border-bottom: var(--pf-c-code-block__header--BorderBottomWidth, 1px) solid var(--pf-c-code-block__header--BorderBottomColor, #d2d2d2);\n}\n\npre {\n margin: 0;\n}\n\nslot[name="actions"] {\n display: flex;\n justify-content: end;\n}\n\n#expanded {\n display: inline;\n}\n\nbutton {\n display: flex;\n background: none;\n border: none;\n padding: 6px 16px 6px 0;\n color: #06c;\n cursor: pointer;\n font-size: 16px;\n}\n\nbutton svg {\n color: #151515;\n margin-right: 12px;\n transition: .2s ease-in 0s;\n vertical-align: -0.125em;\n}\n\n.expanded button svg {\n transform: rotate(-90deg);\n}\n`;
8
+ const styles = css `:host {
9
+ display: block;
10
+ /** Background color for code block */
11
+ background-color: var(--pf-c-code-block--BackgroundColor, #f0f0f0);
12
+ /** Font size for code block pre element */
13
+ font-size: var(--pf-c-code-block__pre--FontSize, 0.875rem);
14
+ /** Font family for code block pre element */
15
+ font-family: var(--pf-c-code-block__pre--FontFamily, "Liberation Mono", consolas, "SFMono-Regular", menlo, monaco, "Courier New", monospace);
16
+ }
17
+
18
+ [hidden] {
19
+ display: none !important;
20
+ }
21
+
22
+ #container {
23
+ margin: 0;
24
+ /** Top padding for code block content */
25
+ padding-top: var(--pf-c-code-block__content--PaddingTop, 1rem);
26
+ /** Right padding for code block content */
27
+ padding-right: var(--pf-c-code-block__content--PaddingRight, 1rem);
28
+ /** Bottom padding for code block content */
29
+ padding-bottom: var(--pf-c-code-block__content--PaddingBottom, 1rem);
30
+ /** Left padding for code block content */
31
+ padding-left: var(--pf-c-code-block__content--PaddingLeft, 1rem);
32
+ }
33
+
34
+ #header {
35
+ /** Border bottom width for code block header */
36
+ border-bottom: var(--pf-c-code-block__header--BorderBottomWidth, 1px) solid
37
+ /** Border bottom color for code block header */
38
+ var(--pf-c-code-block__header--BorderBottomColor, #d2d2d2);
39
+ }
40
+
41
+ pre {
42
+ margin: 0;
43
+ }
44
+
45
+ slot[name="actions"] {
46
+ display: flex;
47
+ justify-content: end;
48
+ }
49
+
50
+ #expanded {
51
+ display: inline;
52
+ }
53
+
54
+ button {
55
+ display: flex;
56
+ background: none;
57
+ border: none;
58
+ padding: 6px 16px 6px 0;
59
+ color: #06c;
60
+ cursor: pointer;
61
+ font-size: 16px;
62
+ }
63
+
64
+ button svg {
65
+ color: #151515;
66
+ margin-right: 12px;
67
+ transition: .2s ease-in 0s;
68
+ vertical-align: -0.125em;
69
+ }
70
+
71
+ .expanded button svg {
72
+ transform: rotate(-90deg);
73
+ }
74
+ `;
9
75
  /**
10
76
  * A **code block** is a component that contains 2 or more lines of read-only code. The code in a code block can be copied to the clipboard.
11
- * @slot code
12
- * The slot to put the code in
13
- * @slot expandable-code
14
- * The slot to put the code in that should be revealed when the "Show more" button is
15
- * clicked to expand the code-block
16
- * @slot actions
17
- * Contains the actions for the code-block. For example, copy to clipboard.
77
+ * @alias Code Block
18
78
  * @attr {boolean} [expanded=false]
19
79
  * Indicates if the code-block has been expanded
20
- * @cssprop {<color>} [--pf-c-code-block--BackgroundColor=#f0f0f0]
21
- * @cssprop {<length>} [--pf-c-code-block__header--BorderBottomWidth=1px]
22
- * @cssprop {<color>} [--pf-c-code-block__header--BorderBottomColor=#d2d2d2]
23
- * @cssprop {<length>} [--pf-c-code-block__content--PaddingTop=1rem]
24
- * @cssprop {<length>} [--pf-c-code-block__content--PaddingRight=1rem]
25
- * @cssprop {<length>} [--pf-c-code-block__content--PaddingBottom=1rem]
26
- * @cssprop {<length>} [--pf-c-code-block__content--PaddingLeft=1rem]
27
- * @cssprop {<length>} [--pf-c-code-block__pre--FontSize=0.875rem]
28
- * @cssprop {<string>} [--pf-c-code-block__pre--FontFamily="Liberation Mono", consolas, "SFMono-Regular", menlo, monaco, "Courier New", monospace]
29
80
  */
30
81
  function dedent(str) {
31
82
  const stripped = str.replace(/^\n/, '');
@@ -44,6 +95,7 @@ let PfCodeBlock = class PfCodeBlock extends LitElement {
44
95
  return html `
45
96
  <div id="header">
46
97
  <div id="actions">
98
+ <!-- Contains the actions for the code-block. For example, copy to clipboard. -->
47
99
  <slot name="actions"></slot>
48
100
  </div>
49
101
  </div>
@@ -85,7 +137,7 @@ _PfCodeBlock_toggle = function _PfCodeBlock_toggle() {
85
137
  this.expanded = !this.expanded;
86
138
  };
87
139
  PfCodeBlock.styles = [styles];
88
- PfCodeBlock.version = "4.0.2";
140
+ PfCodeBlock.version = "4.2.0";
89
141
  __decorate([
90
142
  property({ type: Boolean, reflect: true })
91
143
  ], PfCodeBlock.prototype, "expanded", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"pf-code-block.js","sourceRoot":"","sources":["pf-code-block.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;;;AAGvD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,SAAS,MAAM,CAAC,GAAW;IACzB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9E,CAAC;AAGM,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAApC;;;QAGL,kDAAkD;QACN,aAAQ,GAAG,KAAK,CAAC;;IAgBpD,MAAM;QACb,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAA;;;;;;mCAMoB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;kCACvB,uBAAA,IAAI,wDAAS;uBACxB,CAAC,QAAQ,KAAK,uBAAA,IAAI,gEAAiB;2BAC/B,CAAC,uBAAA,IAAI,gEAAiB;yBACxB,uBAAA,IAAI,mDAAQ;gCACL,IAAI,CAAC,QAAQ;;;;;;;;;YASjC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW;;;KAGjD,CAAC;IACJ,CAAC;;;;IAvCC,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,qBAAqB,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;AACxE,CAAC;;IAGC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAoB,cAAc,CAAC,CAAC;IACvE,IAAI,MAAM,EAAE,IAAI,KAAK,wBAAwB;WACtC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,CAAC;IACZ,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;;IA+BC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjC,CAAC;AAjDe,kBAAM,GAAoB,CAAC,MAAM,CAAC,AAA5B,CAA6B;;AAGP;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;6CAAkB;AAJlD,WAAW;IADvB,aAAa,CAAC,eAAe,CAAC;GAClB,WAAW","sourcesContent":["import { LitElement, html, 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 styles from './pf-code-block.css';\n\n/**\n * A **code block** is a component that contains 2 or more lines of read-only code. The code in a code block can be copied to the clipboard.\n * @slot code\n * The slot to put the code in\n * @slot expandable-code\n * The slot to put the code in that should be revealed when the \"Show more\" button is\n * clicked to expand the code-block\n * @slot actions\n * Contains the actions for the code-block. For example, copy to clipboard.\n * @attr {boolean} [expanded=false]\n * Indicates if the code-block has been expanded\n * @cssprop {<color>} [--pf-c-code-block--BackgroundColor=#f0f0f0]\n * @cssprop {<length>} [--pf-c-code-block__header--BorderBottomWidth=1px]\n * @cssprop {<color>} [--pf-c-code-block__header--BorderBottomColor=#d2d2d2]\n * @cssprop {<length>} [--pf-c-code-block__content--PaddingTop=1rem]\n * @cssprop {<length>} [--pf-c-code-block__content--PaddingRight=1rem]\n * @cssprop {<length>} [--pf-c-code-block__content--PaddingBottom=1rem]\n * @cssprop {<length>} [--pf-c-code-block__content--PaddingLeft=1rem]\n * @cssprop {<length>} [--pf-c-code-block__pre--FontSize=0.875rem]\n * @cssprop {<string>} [--pf-c-code-block__pre--FontFamily=\"Liberation Mono\", consolas, \"SFMono-Regular\", menlo, monaco, \"Courier New\", monospace]\n */\n\nfunction dedent(str: string): string {\n const stripped = str.replace(/^\\n/, '');\n const match = stripped.match(/^\\s+/);\n return match ? stripped.replace(new RegExp(`^${match[0]}`, 'gm'), '') : str;\n}\n\n@customElement('pf-code-block')\nexport class PfCodeBlock extends LitElement {\n static readonly styles: CSSStyleSheet[] = [styles];\n\n /** Flag for whether the code block is expanded */\n @property({ type: Boolean, reflect: true }) expanded = false;\n\n get #expandedContent(): string {\n return this.querySelector?.('script[data-expand]')?.textContent ?? '';\n }\n\n get #content() {\n const script = this.querySelector?.<HTMLScriptElement>('script[type]');\n if (script?.type !== 'text/javascript-sample'\n && !!script?.type.match(/(j(ava)?|ecma|live)script/)) {\n return '';\n } else {\n return dedent(script?.textContent ?? '');\n }\n }\n\n override render(): TemplateResult<1> {\n const { expanded } = this;\n return html`\n <div id=\"header\">\n <div id=\"actions\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n <div id=\"container\" class=\"${classMap({ expanded })}\">\n <pre><code id=\"content\">${this.#content}</code><code id=\"code-block-expand\"\n ?hidden=\"${!expanded}\">${this.#expandedContent}</code></pre>\n <button ?hidden=\"${!this.#expandedContent}\"\n @click=${this.#toggle}\n aria-expanded=${this.expanded}\n aria-controls=\"code-block-expand\">\n <svg fill=\"currentColor\"\n height=\"1em\"\n width=\"1em\"\n viewBox=\"0 0 256 512\"\n aria-hidden=\"true\"\n role=\"img\"><path\n d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/></svg>\n ${!this.expanded ? 'Show more' : 'Show less'}\n </button>\n </div>\n `;\n }\n\n #toggle() {\n this.expanded = !this.expanded;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-code-block': PfCodeBlock;\n }\n}\n"]}
1
+ {"version":3,"file":"pf-code-block.js","sourceRoot":"","sources":["pf-code-block.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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGvD;;;;;GAKG;AAEH,SAAS,MAAM,CAAC,GAAW;IACzB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9E,CAAC;AAGM,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAApC;;;QAGL,kDAAkD;QACN,aAAQ,GAAG,KAAK,CAAC;;IAgBpD,MAAM;QACb,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAA;;;;;;;mCAOoB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;kCACvB,uBAAA,IAAI,wDAAS;uBACxB,CAAC,QAAQ,KAAK,uBAAA,IAAI,gEAAiB;2BAC/B,CAAC,uBAAA,IAAI,gEAAiB;yBACxB,uBAAA,IAAI,mDAAQ;gCACL,IAAI,CAAC,QAAQ;;;;;;;;;YASjC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW;;;KAGjD,CAAC;IACJ,CAAC;;;;IAxCC,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,qBAAqB,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;AACxE,CAAC;;IAGC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAoB,cAAc,CAAC,CAAC;IACvE,IAAI,MAAM,EAAE,IAAI,KAAK,wBAAwB;WACtC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,CAAC;IACZ,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;;IAgCC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjC,CAAC;AAlDe,kBAAM,GAAoB,CAAC,MAAM,CAAC,AAA5B,CAA6B;;AAGP;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;6CAAkB;AAJlD,WAAW;IADvB,aAAa,CAAC,eAAe,CAAC;GAClB,WAAW","sourcesContent":["import { LitElement, html, 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 styles from './pf-code-block.css';\n\n/**\n * A **code block** is a component that contains 2 or more lines of read-only code. The code in a code block can be copied to the clipboard.\n * @alias Code Block\n * @attr {boolean} [expanded=false]\n * Indicates if the code-block has been expanded\n */\n\nfunction dedent(str: string): string {\n const stripped = str.replace(/^\\n/, '');\n const match = stripped.match(/^\\s+/);\n return match ? stripped.replace(new RegExp(`^${match[0]}`, 'gm'), '') : str;\n}\n\n@customElement('pf-code-block')\nexport class PfCodeBlock extends LitElement {\n static readonly styles: CSSStyleSheet[] = [styles];\n\n /** Flag for whether the code block is expanded */\n @property({ type: Boolean, reflect: true }) expanded = false;\n\n get #expandedContent(): string {\n return this.querySelector?.('script[data-expand]')?.textContent ?? '';\n }\n\n get #content() {\n const script = this.querySelector?.<HTMLScriptElement>('script[type]');\n if (script?.type !== 'text/javascript-sample'\n && !!script?.type.match(/(j(ava)?|ecma|live)script/)) {\n return '';\n } else {\n return dedent(script?.textContent ?? '');\n }\n }\n\n override render(): TemplateResult<1> {\n const { expanded } = this;\n return html`\n <div id=\"header\">\n <div id=\"actions\">\n <!-- Contains the actions for the code-block. For example, copy to clipboard. -->\n <slot name=\"actions\"></slot>\n </div>\n </div>\n <div id=\"container\" class=\"${classMap({ expanded })}\">\n <pre><code id=\"content\">${this.#content}</code><code id=\"code-block-expand\"\n ?hidden=\"${!expanded}\">${this.#expandedContent}</code></pre>\n <button ?hidden=\"${!this.#expandedContent}\"\n @click=${this.#toggle}\n aria-expanded=${this.expanded}\n aria-controls=\"code-block-expand\">\n <svg fill=\"currentColor\"\n height=\"1em\"\n width=\"1em\"\n viewBox=\"0 0 256 512\"\n aria-hidden=\"true\"\n role=\"img\"><path\n d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/></svg>\n ${!this.expanded ? 'Show more' : 'Show less'}\n </button>\n </div>\n `;\n }\n\n #toggle() {\n this.expanded = !this.expanded;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-code-block': PfCodeBlock;\n }\n}\n"]}
@@ -3,7 +3,45 @@ import { LitElement, html } from 'lit';
3
3
  import { customElement } from 'lit/decorators/custom-element.js';
4
4
  import { property } from 'lit/decorators/property.js';
5
5
  import { css } from "lit";
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`;
6
+ const styles = css `:host {
7
+ display: block;
8
+ }
9
+
10
+ [hidden] {
11
+ display: none !important;
12
+ }
13
+
14
+ p {
15
+ margin: 0;
16
+ font-size: 14px;
17
+ font-weight: normal;
18
+ color: #777;
19
+ padding-top: 0.5rem;
20
+ padding-right: 1rem;
21
+ padding-bottom: 0.5rem;
22
+ padding-left: 1rem;
23
+ font-size: 0.75rem;
24
+ font-weight: 400;
25
+ color: #6a6e73;
26
+ }
27
+
28
+ ::slotted(hr) {
29
+ margin: 0;
30
+ border-color: var(--pf-c-divider--BackgroundColor, var(--pf-global--BorderColor--100, #d2d2d2));
31
+ border-style: solid;
32
+ }
33
+
34
+ ::slotted([role="separator"]:not(hr)) {
35
+ width: 100%;
36
+ height: 1px;
37
+ background-color: var(--pf-c-divider--BackgroundColor, var(--pf-global--BorderColor--100, #d2d2d2));
38
+ padding: 0px;
39
+ margin: 0px;
40
+ border: 0;
41
+ display: block;
42
+ pointer-events: none;
43
+ }
44
+ `;
7
45
  let PfDropdownGroup = class PfDropdownGroup extends LitElement {
8
46
  render() {
9
47
  return html `
@@ -17,7 +55,7 @@ PfDropdownGroup.shadowRootOptions = {
17
55
  ...LitElement.shadowRootOptions,
18
56
  delegatesFocus: true,
19
57
  };
20
- PfDropdownGroup.version = "4.0.2";
58
+ PfDropdownGroup.version = "4.2.0";
21
59
  __decorate([
22
60
  property({ reflect: true })
23
61
  ], 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,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
+ {"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"]}
@@ -5,22 +5,27 @@
5
5
  white-space: nowrap;
6
6
  border: none;
7
7
  cursor: pointer;
8
+ /** Dropdown item font size */
8
9
  font-size: var(
9
10
  --pf-c-dropdown__menu-item--FontSize,
10
11
  var(--pf-global--FontSize--md, 1rem)
11
12
  );
13
+ /** Dropdown item font weight */
12
14
  font-weight: var(
13
15
  --pf-c-dropdown__menu-item--FontWeight,
14
16
  var(--pf-global--FontWeight--normal, 400)
15
17
  );
18
+ /** Dropdown item line height */
16
19
  line-height: var(
17
20
  --pf-c-dropdown__menu-item--LineHeight,
18
21
  var(--pf-global--LineHeight--md, 1.5)
19
22
  );
23
+ /** Dropdown item color */
20
24
  color: var(
21
25
  --pf-c-dropdown__menu-item--Color,
22
26
  var(--pf-global--Color--dark-100, #151515)
23
27
  );
28
+ /** Dropdown item background color */
24
29
  background-color: var(
25
30
  --pf-c-dropdown__menu-item--BackgroundColor,
26
31
  transparent
@@ -73,19 +78,24 @@
73
78
  align-items: stretch;
74
79
  justify-content: space-between;
75
80
  flex-wrap: wrap;
81
+ /** Dropdown item padding */
76
82
  padding: var(
83
+ /** Dropdown item padding top */
77
84
  --pf-c-dropdown__menu-item--PaddingTop,
78
85
  var(--pf-global--spacer--sm, 0.5rem)
79
86
  )
80
87
  var(
88
+ /** Dropdown item padding right */
81
89
  --pf-c-dropdown__menu-item--PaddingRight,
82
90
  var(--pf-global--spacer--md, 1rem)
83
91
  )
84
92
  var(
93
+ /** Dropdown item padding bottom */
85
94
  --pf-c-dropdown__menu-item--PaddingBottom,
86
95
  var(--pf-global--spacer--sm, 0.5rem)
87
96
  )
88
97
  var(
98
+ /** Dropdown item padding left */
89
99
  --pf-c-dropdown__menu-item--PaddingLeft,
90
100
  var(--pf-global--spacer--md, 1rem)
91
101
  );
@@ -10,33 +10,6 @@ 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=1rem]
14
- * Dropdown item font size
15
- *
16
- * @cssprop {<length>} [--pf-c-dropdown__menu-item--FontWeight=400]
17
- * Dropdown item font weight
18
- *
19
- * @cssprop {<length>} [--pf-c-dropdown__menu-item--LineHeight=1.5]
20
- * Dropdown item line height
21
- *
22
- * @cssprop {<length>} [--pf-c-dropdown__menu-item--Color=#151515]
23
- * Dropdown item color
24
- *
25
- * @cssprop {<length>} [--pf-c-dropdown__menu-item--BackgroundColor=transparent]
26
- * Dropdown item background color
27
- *
28
- * @cssprop {<length>} [--pf-c-dropdown__menu-item--PaddingTop=0.5rem]
29
- * Dropdown item padding top
30
- *
31
- * @cssprop {<length>} [--pf-c-dropdown__menu-item--PaddingRight=1rem]
32
- * Dropdown item padding right
33
- *
34
- * @cssprop {<length>} [--pf-c-dropdown__menu-item--PaddingBottom=0.5rem]
35
- * Dropdown item padding bottom
36
- *
37
- * @cssprop {<length>} [--pf-c-dropdown__menu-item--PaddingLeft=1rem]
38
- * Dropdown item padding left
39
- *
40
13
  */
41
14
  export declare class PfDropdownItem extends LitElement {
42
15
  static readonly styles: CSSStyleSheet[];
@@ -7,7 +7,160 @@ import { query } from 'lit/decorators/query.js';
7
7
  import { consume } from '@lit/context';
8
8
  import { context } from './context.js';
9
9
  import { css } from "lit";
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`;
10
+ const styles = css `:host {
11
+ display: block;
12
+ width: 100%;
13
+ text-align: left;
14
+ white-space: nowrap;
15
+ border: none;
16
+ cursor: pointer;
17
+ /** Dropdown item font size */
18
+ font-size: var(
19
+ --pf-c-dropdown__menu-item--FontSize,
20
+ var(--pf-global--FontSize--md, 1rem)
21
+ );
22
+ /** Dropdown item font weight */
23
+ font-weight: var(
24
+ --pf-c-dropdown__menu-item--FontWeight,
25
+ var(--pf-global--FontWeight--normal, 400)
26
+ );
27
+ /** Dropdown item line height */
28
+ line-height: var(
29
+ --pf-c-dropdown__menu-item--LineHeight,
30
+ var(--pf-global--LineHeight--md, 1.5)
31
+ );
32
+ /** Dropdown item color */
33
+ color: var(
34
+ --pf-c-dropdown__menu-item--Color,
35
+ var(--pf-global--Color--dark-100, #151515)
36
+ );
37
+ /** Dropdown item background color */
38
+ background-color: var(
39
+ --pf-c-dropdown__menu-item--BackgroundColor,
40
+ transparent
41
+ );
42
+ border: 3px solid var(
43
+ --pf-c-dropdown__menu-item--BackgroundColor,
44
+ transparent
45
+ );
46
+ }
47
+
48
+ :host([hidden]),
49
+ [hidden] {
50
+ display: none !important;
51
+ }
52
+
53
+ :host([disabled]),
54
+ .disabled {
55
+ &, & a {
56
+ cursor: not-allowed;
57
+ }
58
+ --pf-c-dropdown__menu-item--Color: var(
59
+ --pf-c-dropdown__menu-item--disabled--Color,
60
+ var(--pf-global--Color--dark-200, #6a6e73)
61
+ );
62
+ --pf-c-dropdown__menu-item--BackgroundColor: var(
63
+ --pf-c-dropdown__menu-item--disabled--BackgroundColor,
64
+ transparent
65
+ );
66
+ }
67
+
68
+ :host(:hover) {
69
+ --pf-c-dropdown__menu-item--Color: var(
70
+ --pf-c-dropdown__menu-item--hover--Color,
71
+ var(--pf-global--Color--dark-100, #151515)
72
+ );
73
+ --pf-c-dropdown__menu-item--BackgroundColor: var(
74
+ --pf-c-dropdown__menu-item--hover--BackgroundColor,
75
+ var(--pf-global--BackgroundColor--light-300, #f0f0f0)
76
+ );
77
+ text-decoration: none;
78
+ }
79
+
80
+ :host(:focus-within) {
81
+ border: 3px solid var(--pf-global--link--Color, #0066cc);
82
+ }
83
+
84
+ #menuitem {
85
+ position: relative;
86
+ display: flex;
87
+ align-items: stretch;
88
+ justify-content: space-between;
89
+ flex-wrap: wrap;
90
+ /** Dropdown item padding */
91
+ padding: var(
92
+ /** Dropdown item padding top */
93
+ --pf-c-dropdown__menu-item--PaddingTop,
94
+ var(--pf-global--spacer--sm, 0.5rem)
95
+ )
96
+ var(
97
+ /** Dropdown item padding right */
98
+ --pf-c-dropdown__menu-item--PaddingRight,
99
+ var(--pf-global--spacer--md, 1rem)
100
+ )
101
+ var(
102
+ /** Dropdown item padding bottom */
103
+ --pf-c-dropdown__menu-item--PaddingBottom,
104
+ var(--pf-global--spacer--sm, 0.5rem)
105
+ )
106
+ var(
107
+ /** Dropdown item padding left */
108
+ --pf-c-dropdown__menu-item--PaddingLeft,
109
+ var(--pf-global--spacer--md, 1rem)
110
+ );
111
+ }
112
+
113
+ #item {
114
+ display: flex;
115
+ align-items: center;
116
+ }
117
+
118
+ #item:focus {
119
+ outline: none;
120
+ }
121
+
122
+ #item::after {
123
+ content: '';
124
+ position: absolute;
125
+ left: 0;
126
+ right: 0;
127
+ top: 0;
128
+ bottom: 0;
129
+ }
130
+
131
+ #description {
132
+ display: block;
133
+ flex: 1 0 100%;
134
+ font-size: var(
135
+ --pf-c-dropdown__menu-item-description--FontSize, var(
136
+ --pf-global--FontSize--sm, 0.75rem
137
+ )
138
+ );
139
+ color: var(
140
+ --pf-c-dropdown__menu-item-description--Color, var(
141
+ --pf-global--Color--dark-200, #6a6e73
142
+ )
143
+ );
144
+ word-break: break-all;
145
+ }
146
+
147
+ a {
148
+ color: var(
149
+ --pf-c-dropdown__menu-item--Color,
150
+ var(--pf-global--Color--dark-100, #151515)
151
+ ) !important;
152
+ text-decoration: none !important;
153
+ }
154
+
155
+ slot:not([name]){
156
+ flex: 1 0 44px;
157
+ min-height: 44px;
158
+ }
159
+
160
+ slot[name="icon"]::slotted(*) {
161
+ margin-inline-end: 0.5em;
162
+ }
163
+ `;
11
164
  export class DropdownItemChange extends Event {
12
165
  constructor() {
13
166
  super('change', { bubbles: true, cancelable: true });
@@ -54,7 +207,7 @@ PfDropdownItem.shadowRootOptions = {
54
207
  ...LitElement.shadowRootOptions,
55
208
  delegatesFocus: true,
56
209
  };
57
- PfDropdownItem.version = "4.0.2";
210
+ PfDropdownItem.version = "4.2.0";
58
211
  __decorate([
59
212
  property({ reflect: true })
60
213
  ], 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,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
+ {"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;AAYM,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 */\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"]}
@@ -10,7 +10,44 @@ import { InternalsController } from '@patternfly/pfe-core/controllers/internals-
10
10
  import { PfDropdownItem, DropdownItemChange } from './pf-dropdown-item.js';
11
11
  import { PfDropdownGroup } from './pf-dropdown-group.js';
12
12
  import { css } from "lit";
13
- const styles = css `:host {\n background: var(--pf-c-dropdown__menu--BackgroundColor, #fff);\n}\n\n.disabled {\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 ) !important;\n --pf-c-dropdown__menu-item--BackgroundColor: var(\n --pf-c-dropdown__menu-item--disabled--BackgroundColor,\n transparent\n ) !important;\n}\n\n:host([hidden]),\n[hidden] {\n display: none !important;\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\n`;
13
+ const styles = css `:host {
14
+ background: var(--pf-c-dropdown__menu--BackgroundColor, #fff);
15
+ }
16
+
17
+ .disabled {
18
+ --pf-c-dropdown__menu-item--Color: var(
19
+ --pf-c-dropdown__menu-item--disabled--Color,
20
+ var(--pf-global--Color--dark-200, #6a6e73)
21
+ ) !important;
22
+ --pf-c-dropdown__menu-item--BackgroundColor: var(
23
+ --pf-c-dropdown__menu-item--disabled--BackgroundColor,
24
+ transparent
25
+ ) !important;
26
+ }
27
+
28
+ :host([hidden]),
29
+ [hidden] {
30
+ display: none !important;
31
+ }
32
+
33
+ ::slotted(hr) {
34
+ margin: 0;
35
+ border-color: var(--pf-c-divider--BackgroundColor, var(--pf-global--BorderColor--100, #d2d2d2));
36
+ border-style: solid;
37
+ }
38
+
39
+ ::slotted([role="separator"]:not(hr)) {
40
+ width: 100%;
41
+ height: 1px;
42
+ background-color: var(--pf-c-divider--BackgroundColor, var(--pf-global--BorderColor--100, #d2d2d2));
43
+ padding: 0px;
44
+ margin: 0px;
45
+ border: 0;
46
+ display: block;
47
+ pointer-events: none;
48
+ }
49
+
50
+ `;
14
51
  import { classMap } from 'lit/directives/class-map.js';
15
52
  function isDisabledItemClick(event) {
16
53
  const item = event.composedPath().find((x) => x instanceof PfDropdownItem);
@@ -120,7 +157,7 @@ PfDropdownMenu.shadowRootOptions = {
120
157
  ...LitElement.shadowRootOptions,
121
158
  delegatesFocus: true,
122
159
  };
123
- PfDropdownMenu.version = "4.0.2";
160
+ PfDropdownMenu.version = "4.2.0";
124
161
  __decorate([
125
162
  consume({ context, subscribe: true }),
126
163
  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, 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
+ {"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"]}
@@ -94,15 +94,20 @@
94
94
  --pf-c-dropdown--m-plain__toggle-icon--Color: var(--pf-global--Color--200, #6a6e73);
95
95
  --pf-c-dropdown--m-plain--hover__toggle-icon--Color: var(--pf-global--Color--100, #151515);
96
96
  --pf-c-dropdown__menu--BackgroundColor: var(--pf-global--BackgroundColor--light-100, #fff);
97
+ /** Dropdown box shadow */
97
98
  --pf-c-dropdown__menu--BoxShadow: var(--pf-global--BoxShadow--md, 0 0.25rem 0.5rem 0rem rgba(3, 3, 3, 0.12), 0 0 0.25rem 0 rgba(3, 3, 3, 0.06));
99
+ /** Dropdown top padding */
98
100
  --pf-c-dropdown__menu--PaddingTop: var(--pf-global--spacer--sm, 0.5rem);
99
101
  --pf-c-dropdown__menu--PaddingBottom: var(--pf-global--spacer--sm, 0.5rem);
102
+ /** Dropdown top position */
100
103
  --pf-c-dropdown__menu--Top: calc(100% + var(--pf-global--spacer--xs, 0.25rem));
104
+ /** Dropdown z-index */
101
105
  --pf-c-dropdown__menu--ZIndex: var(--pf-global--ZIndex--sm, 200);
102
106
  --pf-c-dropdown--m-top__menu--Top: 0;
103
107
  --pf-c-dropdown--m-top__menu--TranslateY: calc(-100% - var(--pf-global--spacer--xs, 0.25rem));
104
108
  --pf-c-dropdown__menu-item--BackgroundColor: transparent;
105
109
  --pf-c-dropdown__menu-item--PaddingTop: var(--pf-global--spacer--sm, 0.5rem);
110
+ /** Dropdown menu item right padding */
106
111
  --pf-c-dropdown__menu-item--PaddingRight: var(--pf-global--spacer--md, 1rem);
107
112
  --pf-c-dropdown__menu-item--PaddingBottom: var(--pf-global--spacer--sm, 0.5rem);
108
113
  --pf-c-dropdown__menu-item--PaddingLeft: var(--pf-global--spacer--md, 1rem);
@@ -8,15 +8,7 @@ export declare class PfDropdownSelectEvent extends Event {
8
8
  /**
9
9
  * A **dropdown** presents a menu of actions or links in a constrained space that
10
10
  * will trigger a process or navigate to a new location.
11
- * @slot - Must contain one or more `<pf-dropdown-item>` or `<pf-dropdown-group>`
12
- * @slot toggle - Custom toggle button
13
- * @slot menu - when using a custom toggle, you must slot a `<pf-dropdown-menu>` in alongside it
14
- * @csspart menu - The dropdown menu wrapper
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
11
+ * @alias Dropdown
20
12
  * @fires {PfDropdownSelectEvent} select - when a user select dropdown value
21
13
  * @fires open - when the dropdown toggles open
22
14
  * @fires close - when the dropdown toggles closed