@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,5 +1,6 @@
1
1
  import { test } from '@playwright/test';
2
2
  import { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';
3
+ import { SSRPage } from '@patternfly/pfe-tools/test/playwright/SSRPage.js';
3
4
  const tagName = 'pf-dropdown';
4
5
  test.describe(tagName, () => {
5
6
  test('snapshot', async ({ page }) => {
@@ -7,5 +8,16 @@ test.describe(tagName, () => {
7
8
  await componentPage.navigate();
8
9
  await componentPage.snapshot();
9
10
  });
11
+ test('ssr', async ({ browser }) => {
12
+ const fixture = new SSRPage({
13
+ tagName,
14
+ browser,
15
+ demoDir: new URL('../demo/', import.meta.url),
16
+ importSpecifiers: [
17
+ `@patternfly/elements/${tagName}/${tagName}.js`,
18
+ ],
19
+ });
20
+ await fixture.snapshots();
21
+ });
10
22
  });
11
23
  //# sourceMappingURL=pf-dropdown.e2e.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pf-dropdown.e2e.js","sourceRoot":"","sources":["pf-dropdown.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;AAEnF,MAAM,OAAO,GAAG,aAAa,CAAC;AAE9B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAClC,MAAM,aAAa,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { test } from '@playwright/test';\nimport { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';\n\nconst tagName = 'pf-dropdown';\n\ntest.describe(tagName, () => {\n test('snapshot', async ({ page }) => {\n const componentPage = new PfeDemoPage(page, tagName);\n await componentPage.navigate();\n await componentPage.snapshot();\n });\n});\n"]}
1
+ {"version":3,"file":"pf-dropdown.e2e.js","sourceRoot":"","sources":["pf-dropdown.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,MAAM,kDAAkD,CAAC;AAE3E,MAAM,OAAO,GAAG,aAAa,CAAC;AAE9B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAClC,MAAM,aAAa,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;YAC1B,OAAO;YACP,OAAO;YACP,OAAO,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YAC7C,gBAAgB,EAAE;gBAChB,wBAAwB,OAAO,IAAI,OAAO,KAAK;aAChD;SACF,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { test } from '@playwright/test';\nimport { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';\nimport { SSRPage } from '@patternfly/pfe-tools/test/playwright/SSRPage.js';\n\nconst tagName = 'pf-dropdown';\n\ntest.describe(tagName, () => {\n test('snapshot', async ({ page }) => {\n const componentPage = new PfeDemoPage(page, tagName);\n await componentPage.navigate();\n await componentPage.snapshot();\n });\n\n test('ssr', async ({ browser }) => {\n const fixture = new SSRPage({\n tagName,\n browser,\n demoDir: new URL('../demo/', import.meta.url),\n importSpecifiers: [\n `@patternfly/elements/${tagName}/${tagName}.js`,\n ],\n });\n await fixture.snapshots();\n });\n});\n"]}
@@ -1,3 +1,25 @@
1
+ :host {
2
+ position: relative;
3
+ display: inline-block;
4
+ line-height: 0;
5
+ height: fit-content !important;
6
+ width: fit-content !important;
7
+ }
8
+
9
+ #container {
10
+ display: grid;
11
+ grid-template: 1fr / 1fr;
12
+ place-content: center;
13
+ }
14
+
15
+ #container.content ::slotted(*) {
16
+ display: none;
17
+ }
18
+
19
+ svg {
20
+ fill: currentcolor;
21
+ }
22
+
1
23
  :host([size=sm]) #container { --_size: var(--pf-global--icon--FontSize--sm, 10px); }
2
24
  :host([size=md]) #container { --_size: var(--pf-global--icon--FontSize--md, 18px); }
3
25
  :host([size=lg]) #container { --_size: var(--pf-global--icon--FontSize--lg, 24px); }
@@ -1,21 +1,110 @@
1
- import { BaseIcon } from './BaseIcon.js';
1
+ import { LitElement, type PropertyValues, type TemplateResult } from 'lit';
2
+ type Renderable = unknown;
3
+ export type IconResolverFunction = (set: string, icon: string) => Renderable | Promise<Renderable>;
4
+ /** Fired when an icon fails to load */
5
+ export declare class IconResolveError extends ErrorEvent {
6
+ /** The original error when importing the icon module */
7
+ originalError: Error;
8
+ constructor(set: string, icon: string,
9
+ /** The original error when importing the icon module */
10
+ originalError: Error);
11
+ }
2
12
  /**
3
13
  * An **icon** component is a container that allows for icons of varying dimensions to
4
14
  * seamlessly replace each other without shifting surrounding content.
5
- *
6
15
  * @slot - Slotted content is used as a fallback in case the icon doesn't load
7
16
  * @fires load - Fired when an icon is loaded and rendered
8
17
  * @fires error - Fired when an icon fails to load
9
18
  * @csspart fallback - Container for the fallback (i.e. slotted) content
19
+ * @cssprop {<length>} --pf-icon--size - size of the icon
10
20
  */
11
- export declare class PfIcon extends BaseIcon {
21
+ export declare class PfIcon extends LitElement {
22
+ #private;
12
23
  static readonly styles: CSSStyleSheet[];
13
- static defaultIconSet: string;
24
+ private static onIntersect;
25
+ private static defaultResolve;
26
+ private static io;
27
+ private static resolvers;
28
+ private static instances;
29
+ /**
30
+ * Register a new icon set
31
+ * @param setName - The name of the icon set
32
+ * @param resolver - A function that returns the URL of an icon
33
+ * @example returning a URL object
34
+ * ```js
35
+ * PfIcon.addIconSet('rh', (set, icon) =>
36
+ * new URL(`./icons/${set}/${icon}.js`, import.meta.url));
37
+ * ```
38
+ * @example returning a string
39
+ * ```js
40
+ * PfIcon.addIconSet('rh', (set, icon) =>
41
+ * `/assets/icons/${set}/${icon}.js`);
42
+ * ```
43
+ */
44
+ static addIconSet(setName: string, resolver: IconResolverFunction): void;
45
+ /** Removes all added icon sets and resets resolve function */
46
+ static reset(): void;
47
+ /**
48
+ * Gets a renderable icon. Override this to customize how icons are resolved.
49
+ * @param set - The name of the icon set
50
+ * @param icon - The name of the icon
51
+ * @returns The icon content, a node or anything else which lit-html can render
52
+ * @example resolving an icon node from an icon module
53
+ * ```js
54
+ * PfIcon.resolve = (set, icon) =>
55
+ * import(`/assets/icons/${set}/${icon}.js`)
56
+ * .then(mod => mod.default.cloneNode(true));
57
+ * ```
58
+ * @example resolving a named export from an icon collection module
59
+ * ```js
60
+ * PfIcon.resolve = (set, icon) =>
61
+ * import(`/assets/icons.js`)
62
+ * .then(module => module[icon]?.cloneNode(true));
63
+ * ```
64
+ * @example resolving a new node from an svg file
65
+ * ```js
66
+ * const iconCacne = new Map();
67
+ * function getCachedIconOrNewNode(set, icon, svg) {
68
+ * const key = `${set}_${icon}`;
69
+ * if (!iconCache.has(key)) {
70
+ * const template = document.createElement('template');
71
+ * template.innerHTML = svg;
72
+ * iconCache.set(key, template);
73
+ * }
74
+ * return iconCache.get(key);
75
+ * }
76
+ * PfIcon.resolve = (set, icon) =>
77
+ * fetch(`/assets/icons/${set}/${icon}.svg`)
78
+ * .then(response => response.text())
79
+ * .then(svg => getCachedIconOrNewNode(set, icon, svg))
80
+ * .then(node => node.content.cloneNode(true));
81
+ * ```
82
+ */
83
+ static resolve: IconResolverFunction;
84
+ /** Icon set */
85
+ set: string;
86
+ /** Icon name */
87
+ icon: string;
14
88
  /** Size of the icon */
15
89
  size: 'sm' | 'md' | 'lg' | 'xl';
90
+ /**
91
+ * Controls how eager the element will be to load the icon data
92
+ * - `eager`: eagerly load the icon, blocking the main thread
93
+ * - `idle`: wait for the browser to attain an idle state before loading
94
+ * - `lazy` (default): wait for the element to enter the viewport before loading
95
+ */
96
+ loading?: 'idle' | 'lazy' | 'eager';
97
+ /** Icon content. Any value that lit can render */
98
+ private content?;
99
+ connectedCallback(): void;
100
+ willUpdate(changed: PropertyValues<this>): void;
101
+ disconnectedCallback(): void;
102
+ render(): TemplateResult<1>;
103
+ protected load(): Promise<void>;
16
104
  }
17
105
  declare global {
18
106
  interface HTMLElementTagNameMap {
19
107
  'pf-icon': PfIcon;
20
108
  }
21
109
  }
110
+ export {};
@@ -1,30 +1,208 @@
1
- import { __decorate } from "tslib";
2
- import { BaseIcon } from './BaseIcon.js';
1
+ var _PfIcon_instances, _a, _PfIcon_intersecting, _PfIcon_logger, _PfIcon_lazyLoad, _PfIcon_load, _PfIcon_contentChanged;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from "tslib";
3
+ import { LitElement, html } from 'lit';
3
4
  import { customElement } from 'lit/decorators/custom-element.js';
4
5
  import { property } from 'lit/decorators/property.js';
6
+ import { state } from 'lit/decorators/state.js';
7
+ import { Logger } from '@patternfly/pfe-core/controllers/logger.js';
5
8
  import { css } from "lit";
6
- const style = css `:host([size=sm]) #container { --_size: var(--pf-global--icon--FontSize--sm, 10px); }\n:host([size=md]) #container { --_size: var(--pf-global--icon--FontSize--md, 18px); }\n:host([size=lg]) #container { --_size: var(--pf-global--icon--FontSize--lg, 24px); }\n:host([size=xl]) #container { --_size: var(--pf-global--icon--FontSize--xl, 54px); }\n\n#container, svg {\n width: var(--pf-icon--size, var(--_size));\n height: var(--pf-icon--size, var(--_size));\n min-width: var(--pf-icon--size, var(--_size));\n min-height: var(--pf-icon--size, var(--_size));\n}\n\n`;
9
+ const style = css `:host {\n position: relative;\n display: inline-block;\n line-height: 0;\n height: fit-content !important;\n width: fit-content !important;\n}\n\n#container {\n display: grid;\n grid-template: 1fr / 1fr;\n place-content: center;\n}\n\n#container.content ::slotted(*) {\n display: none;\n}\n\nsvg {\n fill: currentcolor;\n}\n\n:host([size=sm]) #container { --_size: var(--pf-global--icon--FontSize--sm, 10px); }\n:host([size=md]) #container { --_size: var(--pf-global--icon--FontSize--md, 18px); }\n:host([size=lg]) #container { --_size: var(--pf-global--icon--FontSize--lg, 24px); }\n:host([size=xl]) #container { --_size: var(--pf-global--icon--FontSize--xl, 54px); }\n\n#container, svg {\n width: var(--pf-icon--size, var(--_size));\n height: var(--pf-icon--size, var(--_size));\n min-width: var(--pf-icon--size, var(--_size));\n min-height: var(--pf-icon--size, var(--_size));\n}\n\n`;
7
10
  /**
8
- * An **icon** component is a container that allows for icons of varying dimensions to
9
- * seamlessly replace each other without shifting surrounding content.
10
- *
11
- * @slot - Slotted content is used as a fallback in case the icon doesn't load
12
- * @fires load - Fired when an icon is loaded and rendered
13
- * @fires error - Fired when an icon fails to load
14
- * @csspart fallback - Container for the fallback (i.e. slotted) content
11
+ * requestIdleCallback when available, requestAnimationFrame when not
12
+ * @param f callback
15
13
  */
16
- let PfIcon = class PfIcon extends BaseIcon {
14
+ const ric = globalThis.requestIdleCallback
15
+ ?? globalThis.requestAnimationFrame
16
+ ?? (async (f) => Promise.resolve().then(f));
17
+ /** Fired when an icon fails to load */
18
+ export class IconResolveError extends ErrorEvent {
19
+ constructor(set, icon,
20
+ /** The original error when importing the icon module */
21
+ originalError) {
22
+ super('error', { message: `Could not load icon "${icon}" from set "${set}".` });
23
+ this.originalError = originalError;
24
+ }
25
+ }
26
+ let PfIcon = _a = class PfIcon extends LitElement {
17
27
  constructor() {
18
28
  super(...arguments);
29
+ _PfIcon_instances.add(this);
30
+ /** Icon set */
31
+ this.set = 'fas';
32
+ /** Icon name */
33
+ this.icon = '';
19
34
  /** Size of the icon */
20
35
  this.size = 'sm';
36
+ /**
37
+ * Controls how eager the element will be to load the icon data
38
+ * - `eager`: eagerly load the icon, blocking the main thread
39
+ * - `idle`: wait for the browser to attain an idle state before loading
40
+ * - `lazy` (default): wait for the element to enter the viewport before loading
41
+ */
42
+ this.loading = 'lazy';
43
+ _PfIcon_intersecting.set(this, false);
44
+ _PfIcon_logger.set(this, new Logger(this));
45
+ }
46
+ /**
47
+ * Register a new icon set
48
+ * @param setName - The name of the icon set
49
+ * @param resolver - A function that returns the URL of an icon
50
+ * @example returning a URL object
51
+ * ```js
52
+ * PfIcon.addIconSet('rh', (set, icon) =>
53
+ * new URL(`./icons/${set}/${icon}.js`, import.meta.url));
54
+ * ```
55
+ * @example returning a string
56
+ * ```js
57
+ * PfIcon.addIconSet('rh', (set, icon) =>
58
+ * `/assets/icons/${set}/${icon}.js`);
59
+ * ```
60
+ */
61
+ static addIconSet(setName, resolver) {
62
+ if (typeof setName !== 'string') {
63
+ Logger.warn(`[${this.name}]: the first argument to addIconSet must be a string.`);
64
+ }
65
+ else if (typeof resolver !== 'function') {
66
+ Logger.warn(`[${this.name}]: the second argument to addIconSet must be a function.`);
67
+ }
68
+ else {
69
+ this.resolvers.set(setName, resolver);
70
+ for (const instance of this.instances) {
71
+ __classPrivateFieldGet(instance, _PfIcon_instances, "m", _PfIcon_load).call(instance);
72
+ }
73
+ }
74
+ }
75
+ /** Removes all added icon sets and resets resolve function */
76
+ static reset() {
77
+ this.resolvers.clear();
78
+ this.resolve = this.defaultResolve;
79
+ }
80
+ connectedCallback() {
81
+ super.connectedCallback();
82
+ PfIcon.instances.add(this);
83
+ }
84
+ willUpdate(changed) {
85
+ if (changed.has('icon')) {
86
+ __classPrivateFieldGet(this, _PfIcon_instances, "m", _PfIcon_load).call(this);
87
+ }
88
+ }
89
+ disconnectedCallback() {
90
+ super.disconnectedCallback();
91
+ PfIcon.io.unobserve(this);
92
+ PfIcon.instances.delete(this);
93
+ }
94
+ render() {
95
+ const content = this.content ?? '';
96
+ return html `
97
+ <div id="container" aria-hidden="true">${content}<span part="fallback"
98
+ ?hidden=${!!content}><slot></slot>
99
+ </span>
100
+ </div>
101
+ `;
102
+ }
103
+ async load() {
104
+ const { set, icon } = this;
105
+ const resolver = PfIcon.resolvers.get(set) ?? PfIcon.resolve;
106
+ if (set && icon && typeof resolver === 'function') {
107
+ try {
108
+ this.content = await resolver(set, icon);
109
+ __classPrivateFieldGet(this, _PfIcon_instances, "m", _PfIcon_contentChanged).call(this);
110
+ }
111
+ catch (error) {
112
+ __classPrivateFieldGet(this, _PfIcon_logger, "f").error(error.message);
113
+ this.dispatchEvent?.(new IconResolveError(set, icon, error));
114
+ }
115
+ }
116
+ }
117
+ };
118
+ _PfIcon_intersecting = new WeakMap();
119
+ _PfIcon_logger = new WeakMap();
120
+ _PfIcon_instances = new WeakSet();
121
+ _PfIcon_lazyLoad = function _PfIcon_lazyLoad() {
122
+ PfIcon.io.observe(this);
123
+ if (__classPrivateFieldGet(this, _PfIcon_intersecting, "f")) {
124
+ this.load();
21
125
  }
22
126
  };
23
- PfIcon.styles = [...BaseIcon.styles, style];
24
- PfIcon.defaultIconSet = 'fas';
127
+ _PfIcon_load = function _PfIcon_load() {
128
+ switch (this.loading) {
129
+ case 'idle': return void ric(() => this.load());
130
+ case 'lazy': return void __classPrivateFieldGet(this, _PfIcon_instances, "m", _PfIcon_lazyLoad).call(this);
131
+ case 'eager': return void this.load();
132
+ }
133
+ };
134
+ _PfIcon_contentChanged = async function _PfIcon_contentChanged() {
135
+ await this.updateComplete;
136
+ this.dispatchEvent?.(new Event('load', { bubbles: true }));
137
+ };
138
+ PfIcon.styles = [style];
139
+ PfIcon.onIntersect = records => records.forEach(({ isIntersecting, target }) => {
140
+ const icon = target;
141
+ __classPrivateFieldSet(icon, _PfIcon_intersecting, isIntersecting, "f");
142
+ ric(() => {
143
+ if (__classPrivateFieldGet(icon, _PfIcon_intersecting, "f")) {
144
+ icon.load();
145
+ }
146
+ });
147
+ });
148
+ PfIcon.defaultResolve = (set, icon) => import(`@patternfly/icons/${set}/${icon}.js`)
149
+ .then(mod => mod.default.cloneNode(true));
150
+ PfIcon.io = new IntersectionObserver(PfIcon.onIntersect);
151
+ PfIcon.resolvers = new Map();
152
+ PfIcon.instances = new Set();
153
+ /**
154
+ * Gets a renderable icon. Override this to customize how icons are resolved.
155
+ * @param set - The name of the icon set
156
+ * @param icon - The name of the icon
157
+ * @returns The icon content, a node or anything else which lit-html can render
158
+ * @example resolving an icon node from an icon module
159
+ * ```js
160
+ * PfIcon.resolve = (set, icon) =>
161
+ * import(`/assets/icons/${set}/${icon}.js`)
162
+ * .then(mod => mod.default.cloneNode(true));
163
+ * ```
164
+ * @example resolving a named export from an icon collection module
165
+ * ```js
166
+ * PfIcon.resolve = (set, icon) =>
167
+ * import(`/assets/icons.js`)
168
+ * .then(module => module[icon]?.cloneNode(true));
169
+ * ```
170
+ * @example resolving a new node from an svg file
171
+ * ```js
172
+ * const iconCacne = new Map();
173
+ * function getCachedIconOrNewNode(set, icon, svg) {
174
+ * const key = `${set}_${icon}`;
175
+ * if (!iconCache.has(key)) {
176
+ * const template = document.createElement('template');
177
+ * template.innerHTML = svg;
178
+ * iconCache.set(key, template);
179
+ * }
180
+ * return iconCache.get(key);
181
+ * }
182
+ * PfIcon.resolve = (set, icon) =>
183
+ * fetch(`/assets/icons/${set}/${icon}.svg`)
184
+ * .then(response => response.text())
185
+ * .then(svg => getCachedIconOrNewNode(set, icon, svg))
186
+ * .then(node => node.content.cloneNode(true));
187
+ * ```
188
+ */
189
+ PfIcon.resolve = PfIcon.defaultResolve;
190
+ PfIcon.version = "4.0.0";
191
+ __decorate([
192
+ property()
193
+ ], PfIcon.prototype, "set", void 0);
194
+ __decorate([
195
+ property({ reflect: true })
196
+ ], PfIcon.prototype, "icon", void 0);
25
197
  __decorate([
26
198
  property({ reflect: true })
27
199
  ], PfIcon.prototype, "size", void 0);
200
+ __decorate([
201
+ property()
202
+ ], PfIcon.prototype, "loading", void 0);
203
+ __decorate([
204
+ state()
205
+ ], PfIcon.prototype, "content", void 0);
28
206
  PfIcon = __decorate([
29
207
  customElement('pf-icon')
30
208
  ], PfIcon);
@@ -1 +1 @@
1
- {"version":3,"file":"pf-icon.js","sourceRoot":"","sources":["pf-icon.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;;;AAItD;;;;;;;;GAQG;AAEI,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,QAAQ;IAA7B;;QAKL,uBAAuB;QACM,SAAI,GAA8B,IAAI,CAAC;IACtE,CAAC;;AANwB,aAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,AAA9B,CAA+B;AAE9C,qBAAc,GAAG,KAAK,AAAR,CAAS;AAGR;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oCAAwC;AANzD,MAAM;IADlB,aAAa,CAAC,SAAS,CAAC;GACZ,MAAM,CAOlB","sourcesContent":["import { BaseIcon } from './BaseIcon.js';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\n\nimport style from './pf-icon.css';\n\n/**\n * An **icon** component is a container that allows for icons of varying dimensions to\n * seamlessly replace each other without shifting surrounding content.\n *\n * @slot - Slotted content is used as a fallback in case the icon doesn't load\n * @fires load - Fired when an icon is loaded and rendered\n * @fires error - Fired when an icon fails to load\n * @csspart fallback - Container for the fallback (i.e. slotted) content\n */\n@customElement('pf-icon')\nexport class PfIcon extends BaseIcon {\n public static readonly styles = [...BaseIcon.styles, style];\n\n public static defaultIconSet = 'fas';\n\n /** Size of the icon */\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' | 'xl' = 'sm';\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-icon': PfIcon;\n }\n}\n"]}
1
+ {"version":3,"file":"pf-icon.js","sourceRoot":"","sources":["pf-icon.ts"],"names":[],"mappings":"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","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 { state } from 'lit/decorators/state.js';\n\nimport { Logger } from '@patternfly/pfe-core/controllers/logger.js';\n\nimport style from './pf-icon.css';\n\ntype Renderable = unknown;\n\nexport type IconResolverFunction = (set: string, icon: string) =>\n Renderable | Promise<Renderable>;\n\n/**\n * requestIdleCallback when available, requestAnimationFrame when not\n * @param f callback\n */\nconst ric: typeof globalThis.requestIdleCallback =\n globalThis.requestIdleCallback\n ?? globalThis.requestAnimationFrame\n ?? (async (f: () => void) => Promise.resolve().then(f));\n\n/** Fired when an icon fails to load */\nexport class IconResolveError extends ErrorEvent {\n constructor(\n set: string,\n icon: string,\n /** The original error when importing the icon module */\n public originalError: Error\n ) {\n super('error', { message: `Could not load icon \"${icon}\" from set \"${set}\".` });\n }\n}\n\n/**\n * An **icon** component is a container that allows for icons of varying dimensions to\n * seamlessly replace each other without shifting surrounding content.\n * @slot - Slotted content is used as a fallback in case the icon doesn't load\n * @fires load - Fired when an icon is loaded and rendered\n * @fires error - Fired when an icon fails to load\n * @csspart fallback - Container for the fallback (i.e. slotted) content\n * @cssprop {<length>} --pf-icon--size - size of the icon\n */\n@customElement('pf-icon')\nexport class PfIcon extends LitElement {\n public static readonly styles: CSSStyleSheet[] = [style];\n\n private static onIntersect: IntersectionObserverCallback = records =>\n records.forEach(({ isIntersecting, target }) => {\n const icon = target as PfIcon;\n icon.#intersecting = isIntersecting;\n ric(() => {\n if (icon.#intersecting) {\n icon.load();\n }\n });\n });\n\n private static defaultResolve: IconResolverFunction = (set: string, icon: string): Renderable =>\n import(`@patternfly/icons/${set}/${icon}.js`)\n .then(mod => mod.default.cloneNode(true));\n\n private static io = new IntersectionObserver(PfIcon.onIntersect);\n\n private static resolvers = new Map<string, IconResolverFunction>();\n\n private static instances = new Set<PfIcon>();\n\n /**\n * Register a new icon set\n * @param setName - The name of the icon set\n * @param resolver - A function that returns the URL of an icon\n * @example returning a URL object\n * ```js\n * PfIcon.addIconSet('rh', (set, icon) =>\n * new URL(`./icons/${set}/${icon}.js`, import.meta.url));\n * ```\n * @example returning a string\n * ```js\n * PfIcon.addIconSet('rh', (set, icon) =>\n * `/assets/icons/${set}/${icon}.js`);\n * ```\n */\n public static addIconSet(setName: string, resolver: IconResolverFunction): void {\n if (typeof setName !== 'string') {\n Logger.warn(`[${this.name}]: the first argument to addIconSet must be a string.`);\n } else if (typeof resolver !== 'function') {\n Logger.warn(`[${this.name}]: the second argument to addIconSet must be a function.`);\n } else {\n this.resolvers.set(setName, resolver);\n for (const instance of this.instances) {\n instance.#load();\n }\n }\n }\n\n /** Removes all added icon sets and resets resolve function */\n public static reset(): void {\n this.resolvers.clear();\n this.resolve = this.defaultResolve;\n }\n\n /**\n * Gets a renderable icon. Override this to customize how icons are resolved.\n * @param set - The name of the icon set\n * @param icon - The name of the icon\n * @returns The icon content, a node or anything else which lit-html can render\n * @example resolving an icon node from an icon module\n * ```js\n * PfIcon.resolve = (set, icon) =>\n * import(`/assets/icons/${set}/${icon}.js`)\n * .then(mod => mod.default.cloneNode(true));\n * ```\n * @example resolving a named export from an icon collection module\n * ```js\n * PfIcon.resolve = (set, icon) =>\n * import(`/assets/icons.js`)\n * .then(module => module[icon]?.cloneNode(true));\n * ```\n * @example resolving a new node from an svg file\n * ```js\n * const iconCacne = new Map();\n * function getCachedIconOrNewNode(set, icon, svg) {\n * const key = `${set}_${icon}`;\n * if (!iconCache.has(key)) {\n * const template = document.createElement('template');\n * template.innerHTML = svg;\n * iconCache.set(key, template);\n * }\n * return iconCache.get(key);\n * }\n * PfIcon.resolve = (set, icon) =>\n * fetch(`/assets/icons/${set}/${icon}.svg`)\n * .then(response => response.text())\n * .then(svg => getCachedIconOrNewNode(set, icon, svg))\n * .then(node => node.content.cloneNode(true));\n * ```\n */\n public static resolve: IconResolverFunction = PfIcon.defaultResolve;\n\n /** Icon set */\n @property() set = 'fas';\n\n /** Icon name */\n @property({ reflect: true }) icon = '';\n\n /** Size of the icon */\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' | 'xl' = 'sm';\n\n /**\n * Controls how eager the element will be to load the icon data\n * - `eager`: eagerly load the icon, blocking the main thread\n * - `idle`: wait for the browser to attain an idle state before loading\n * - `lazy` (default): wait for the element to enter the viewport before loading\n */\n @property() loading?: 'idle' | 'lazy' | 'eager' = 'lazy';\n\n /** Icon content. Any value that lit can render */\n @state() private content?: unknown;\n\n #intersecting = false;\n\n #logger = new Logger(this);\n\n #lazyLoad() {\n PfIcon.io.observe(this);\n if (this.#intersecting) {\n this.load();\n }\n }\n\n #load() {\n switch (this.loading) {\n case 'idle': return void ric(() => this.load());\n case 'lazy': return void this.#lazyLoad();\n case 'eager': return void this.load();\n }\n }\n\n async #contentChanged() {\n await this.updateComplete;\n this.dispatchEvent?.(new Event('load', { bubbles: true }));\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n PfIcon.instances.add(this);\n }\n\n willUpdate(changed: PropertyValues<this>): void {\n if (changed.has('icon')) {\n this.#load();\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n PfIcon.io.unobserve(this);\n PfIcon.instances.delete(this);\n }\n\n render(): TemplateResult<1> {\n const content = this.content ?? '';\n return html`\n <div id=\"container\" aria-hidden=\"true\">${content}<span part=\"fallback\"\n ?hidden=${!!content}><slot></slot>\n </span>\n </div>\n `;\n }\n\n protected async load(): Promise<void> {\n const { set, icon } = this;\n const resolver = PfIcon.resolvers.get(set) ?? PfIcon.resolve;\n if (set && icon && typeof resolver === 'function') {\n try {\n this.content = await resolver(set, icon);\n this.#contentChanged();\n } catch (error: unknown) {\n this.#logger.error((error as IconResolveError).message);\n this.dispatchEvent?.(new IconResolveError(set, icon, error as Error));\n }\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-icon': PfIcon;\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { test } from '@playwright/test';
2
2
  import { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';
3
+ import { SSRPage } from '@patternfly/pfe-tools/test/playwright/SSRPage.js';
3
4
  const tagName = 'pf-icon';
4
5
  test.describe(tagName, () => {
5
6
  test('snapshot', async ({ page }) => {
@@ -7,5 +8,16 @@ test.describe(tagName, () => {
7
8
  await componentPage.navigate();
8
9
  await componentPage.snapshot();
9
10
  });
11
+ test('ssr', async ({ browser }) => {
12
+ const fixture = new SSRPage({
13
+ tagName,
14
+ browser,
15
+ demoDir: new URL('../demo/', import.meta.url),
16
+ importSpecifiers: [
17
+ `@patternfly/elements/${tagName}/${tagName}.js`,
18
+ ],
19
+ });
20
+ await fixture.snapshots();
21
+ });
10
22
  });
11
23
  //# sourceMappingURL=pf-icon.e2e.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pf-icon.e2e.js","sourceRoot":"","sources":["pf-icon.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;AAEnF,MAAM,OAAO,GAAG,SAAS,CAAC;AAE1B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAClC,MAAM,aAAa,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { test } from '@playwright/test';\nimport { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';\n\nconst tagName = 'pf-icon';\n\ntest.describe(tagName, () => {\n test('snapshot', async ({ page }) => {\n const componentPage = new PfeDemoPage(page, tagName);\n await componentPage.navigate();\n await componentPage.snapshot();\n });\n});\n"]}
1
+ {"version":3,"file":"pf-icon.e2e.js","sourceRoot":"","sources":["pf-icon.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,MAAM,kDAAkD,CAAC;AAE3E,MAAM,OAAO,GAAG,SAAS,CAAC;AAE1B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAClC,MAAM,aAAa,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;YAC1B,OAAO;YACP,OAAO;YACP,OAAO,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YAC7C,gBAAgB,EAAE;gBAChB,wBAAwB,OAAO,IAAI,OAAO,KAAK;aAChD;SACF,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { test } from '@playwright/test';\nimport { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';\nimport { SSRPage } from '@patternfly/pfe-tools/test/playwright/SSRPage.js';\n\nconst tagName = 'pf-icon';\n\ntest.describe(tagName, () => {\n test('snapshot', async ({ page }) => {\n const componentPage = new PfeDemoPage(page, tagName);\n await componentPage.navigate();\n await componentPage.snapshot();\n });\n\n test('ssr', async ({ browser }) => {\n const fixture = new SSRPage({\n tagName,\n browser,\n demoDir: new URL('../demo/', import.meta.url),\n importSpecifiers: [\n `@patternfly/elements/${tagName}/${tagName}.js`,\n ],\n });\n await fixture.snapshots();\n });\n});\n"]}