@patternfly/elements 4.1.0 → 4.3.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 (318) hide show
  1. package/custom-elements.json +14909 -12588
  2. package/package.json +26 -17
  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-alert/pf-alert.css +193 -0
  16. package/pf-alert/pf-alert.d.ts +95 -0
  17. package/pf-alert/pf-alert.js +406 -0
  18. package/pf-alert/pf-alert.js.map +1 -0
  19. package/pf-alert/test/pf-alert.e2e.d.ts +1 -0
  20. package/pf-alert/test/pf-alert.e2e.js +45 -0
  21. package/pf-alert/test/pf-alert.e2e.js.map +1 -0
  22. package/pf-alert/test/pf-alert.spec.d.ts +1 -0
  23. package/pf-alert/test/pf-alert.spec.js +42 -0
  24. package/pf-alert/test/pf-alert.spec.js.map +1 -0
  25. package/pf-avatar/pf-avatar.css +14 -0
  26. package/pf-avatar/pf-avatar.d.ts +1 -14
  27. package/pf-avatar/pf-avatar.js +82 -2
  28. package/pf-avatar/pf-avatar.js.map +1 -1
  29. package/pf-back-to-top/pf-back-to-top.css +12 -0
  30. package/pf-back-to-top/pf-back-to-top.d.ts +1 -17
  31. package/pf-back-to-top/pf-back-to-top.js +87 -3
  32. package/pf-back-to-top/pf-back-to-top.js.map +1 -1
  33. package/pf-back-to-top/test/pf-back-to-top.spec.js +3 -2
  34. package/pf-back-to-top/test/pf-back-to-top.spec.js.map +1 -1
  35. package/pf-background-image/pf-background-image.css +7 -0
  36. package/pf-background-image/pf-background-image.d.ts +1 -8
  37. package/pf-background-image/pf-background-image.js +76 -2
  38. package/pf-background-image/pf-background-image.js.map +1 -1
  39. package/pf-badge/pf-badge.css +13 -0
  40. package/pf-badge/pf-badge.d.ts +1 -13
  41. package/pf-badge/pf-badge.js +53 -2
  42. package/pf-badge/pf-badge.js.map +1 -1
  43. package/pf-banner/pf-banner.css +21 -0
  44. package/pf-banner/pf-banner.d.ts +1 -19
  45. package/pf-banner/pf-banner.js +122 -2
  46. package/pf-banner/pf-banner.js.map +1 -1
  47. package/pf-button/pf-button-tokens.css +38 -0
  48. package/pf-button/pf-button.d.ts +1 -106
  49. package/pf-button/pf-button.js +837 -4
  50. package/pf-button/pf-button.js.map +1 -1
  51. package/pf-card/pf-card.css +24 -0
  52. package/pf-card/pf-card.d.ts +1 -38
  53. package/pf-card/pf-card.js +248 -2
  54. package/pf-card/pf-card.js.map +1 -1
  55. package/pf-chip/pf-chip-group.css +15 -0
  56. package/pf-chip/pf-chip-group.d.ts +0 -15
  57. package/pf-chip/pf-chip-group.js +111 -2
  58. package/pf-chip/pf-chip-group.js.map +1 -1
  59. package/pf-chip/pf-chip.css +30 -1
  60. package/pf-chip/pf-chip.d.ts +1 -20
  61. package/pf-chip/pf-chip.js +135 -2
  62. package/pf-chip/pf-chip.js.map +1 -1
  63. package/pf-clipboard-copy/pf-clipboard-copy.css +25 -0
  64. package/pf-clipboard-copy/pf-clipboard-copy.d.ts +1 -27
  65. package/pf-clipboard-copy/pf-clipboard-copy.js +318 -3
  66. package/pf-clipboard-copy/pf-clipboard-copy.js.map +1 -1
  67. package/pf-code-block/pf-code-block.css +11 -1
  68. package/pf-code-block/pf-code-block.js +70 -18
  69. package/pf-code-block/pf-code-block.js.map +1 -1
  70. package/pf-dropdown/pf-dropdown-group.js +40 -2
  71. package/pf-dropdown/pf-dropdown-group.js.map +1 -1
  72. package/pf-dropdown/pf-dropdown-item.css +10 -0
  73. package/pf-dropdown/pf-dropdown-item.d.ts +0 -27
  74. package/pf-dropdown/pf-dropdown-item.js +155 -2
  75. package/pf-dropdown/pf-dropdown-item.js.map +1 -1
  76. package/pf-dropdown/pf-dropdown-menu.js +39 -2
  77. package/pf-dropdown/pf-dropdown-menu.js.map +1 -1
  78. package/pf-dropdown/pf-dropdown.css +13 -1
  79. package/pf-dropdown/pf-dropdown.d.ts +1 -9
  80. package/pf-dropdown/pf-dropdown.js +357 -2
  81. package/pf-dropdown/pf-dropdown.js.map +1 -1
  82. package/pf-helper-text/pf-helper-text.css +35 -0
  83. package/pf-helper-text/pf-helper-text.d.ts +41 -0
  84. package/pf-helper-text/pf-helper-text.js +107 -0
  85. package/pf-helper-text/pf-helper-text.js.map +1 -0
  86. package/pf-helper-text/test/pf-helper-text.e2e.d.ts +1 -0
  87. package/pf-helper-text/test/pf-helper-text.e2e.js +23 -0
  88. package/pf-helper-text/test/pf-helper-text.e2e.js.map +1 -0
  89. package/pf-helper-text/test/pf-helper-text.spec.d.ts +1 -0
  90. package/pf-helper-text/test/pf-helper-text.spec.js +57 -0
  91. package/pf-helper-text/test/pf-helper-text.spec.js.map +1 -0
  92. package/pf-hint/pf-hint.css +120 -0
  93. package/pf-hint/pf-hint.d.ts +19 -0
  94. package/pf-hint/pf-hint.js +180 -0
  95. package/pf-hint/pf-hint.js.map +1 -0
  96. package/pf-hint/test/pf-hint.e2e.d.ts +1 -0
  97. package/pf-hint/test/pf-hint.e2e.js +23 -0
  98. package/pf-hint/test/pf-hint.e2e.js.map +1 -0
  99. package/pf-hint/test/pf-hint.spec.d.ts +1 -0
  100. package/pf-hint/test/pf-hint.spec.js +87 -0
  101. package/pf-hint/test/pf-hint.spec.js.map +1 -0
  102. package/pf-icon/pf-icon.css +1 -0
  103. package/pf-icon/pf-icon.d.ts +1 -3
  104. package/pf-icon/pf-icon.js +44 -4
  105. package/pf-icon/pf-icon.js.map +1 -1
  106. package/pf-jump-links/pf-jump-links-item.css +7 -1
  107. package/pf-jump-links/pf-jump-links-item.d.ts +0 -8
  108. package/pf-jump-links/pf-jump-links-item.js +77 -2
  109. package/pf-jump-links/pf-jump-links-item.js.map +1 -1
  110. package/pf-jump-links/pf-jump-links-list.css +3 -0
  111. package/pf-jump-links/pf-jump-links-list.d.ts +0 -5
  112. package/pf-jump-links/pf-jump-links-list.js +20 -2
  113. package/pf-jump-links/pf-jump-links-list.js.map +1 -1
  114. package/pf-jump-links/pf-jump-links.css +36 -0
  115. package/pf-jump-links/pf-jump-links.d.ts +1 -38
  116. package/pf-jump-links/pf-jump-links.js +179 -2
  117. package/pf-jump-links/pf-jump-links.js.map +1 -1
  118. package/pf-label/pf-label.css +51 -1
  119. package/pf-label/pf-label.d.ts +1 -58
  120. package/pf-label/pf-label.js +257 -2
  121. package/pf-label/pf-label.js.map +1 -1
  122. package/pf-modal/pf-modal.css +11 -0
  123. package/pf-modal/pf-modal.d.ts +2 -25
  124. package/pf-modal/pf-modal.js +215 -2
  125. package/pf-modal/pf-modal.js.map +1 -1
  126. package/pf-panel/pf-panel.css +29 -0
  127. package/pf-panel/pf-panel.d.ts +1 -32
  128. package/pf-panel/pf-panel.js +204 -2
  129. package/pf-panel/pf-panel.js.map +1 -1
  130. package/pf-popover/pf-popover.css +33 -0
  131. package/pf-popover/pf-popover.d.ts +1 -108
  132. package/pf-popover/pf-popover.js +251 -3
  133. package/pf-popover/pf-popover.js.map +1 -1
  134. package/pf-progress/pf-progress.css +19 -0
  135. package/pf-progress/pf-progress.d.ts +1 -57
  136. package/pf-progress/pf-progress.js +231 -2
  137. package/pf-progress/pf-progress.js.map +1 -1
  138. package/pf-progress-stepper/pf-progress-step.js +126 -2
  139. package/pf-progress-stepper/pf-progress-step.js.map +1 -1
  140. package/pf-progress-stepper/pf-progress-stepper.css +96 -0
  141. package/pf-progress-stepper/pf-progress-stepper.d.ts +1 -115
  142. package/pf-progress-stepper/pf-progress-stepper.js +326 -2
  143. package/pf-progress-stepper/pf-progress-stepper.js.map +1 -1
  144. package/pf-search-input/pf-search-input.css +308 -0
  145. package/pf-search-input/pf-search-input.d.ts +75 -0
  146. package/pf-search-input/pf-search-input.js +630 -0
  147. package/pf-search-input/pf-search-input.js.map +1 -0
  148. package/pf-search-input/test/pf-search-input.e2e.d.ts +1 -0
  149. package/pf-search-input/test/pf-search-input.e2e.js +23 -0
  150. package/pf-search-input/test/pf-search-input.e2e.js.map +1 -0
  151. package/pf-search-input/test/pf-search-input.spec.d.ts +1 -0
  152. package/pf-search-input/test/pf-search-input.spec.js +1021 -0
  153. package/pf-search-input/test/pf-search-input.spec.js.map +1 -0
  154. package/pf-select/pf-option-group.js +27 -2
  155. package/pf-select/pf-option-group.js.map +1 -1
  156. package/pf-select/pf-option.css +9 -1
  157. package/pf-select/pf-option.js +83 -2
  158. package/pf-select/pf-option.js.map +1 -1
  159. package/pf-select/pf-select.css +157 -0
  160. package/pf-select/pf-select.d.ts +1 -158
  161. package/pf-select/pf-select.js +542 -5
  162. package/pf-select/pf-select.js.map +1 -1
  163. package/pf-spinner/pf-spinner.css +13 -0
  164. package/pf-spinner/pf-spinner.d.ts +1 -14
  165. package/pf-spinner/pf-spinner.js +101 -2
  166. package/pf-spinner/pf-spinner.js.map +1 -1
  167. package/pf-switch/pf-switch.css +22 -0
  168. package/pf-switch/pf-switch.d.ts +1 -30
  169. package/pf-switch/pf-switch.js +156 -2
  170. package/pf-switch/pf-switch.js.map +1 -1
  171. package/pf-table/pf-caption.js +10 -2
  172. package/pf-table/pf-caption.js.map +1 -1
  173. package/pf-table/pf-table.css +211 -0
  174. package/pf-table/pf-table.d.ts +1 -635
  175. package/pf-table/pf-table.js +437 -2
  176. package/pf-table/pf-table.js.map +1 -1
  177. package/pf-table/pf-tbody.js +18 -2
  178. package/pf-table/pf-tbody.js.map +1 -1
  179. package/pf-table/pf-td.js +107 -2
  180. package/pf-table/pf-td.js.map +1 -1
  181. package/pf-table/pf-th.js +95 -2
  182. package/pf-table/pf-th.js.map +1 -1
  183. package/pf-table/pf-thead.js +20 -2
  184. package/pf-table/pf-thead.js.map +1 -1
  185. package/pf-table/pf-tr.js +89 -2
  186. package/pf-table/pf-tr.js.map +1 -1
  187. package/pf-tabs/pf-tab-panel.css +1 -0
  188. package/pf-tabs/pf-tab-panel.d.ts +0 -2
  189. package/pf-tabs/pf-tab-panel.js +19 -3
  190. package/pf-tabs/pf-tab-panel.js.map +1 -1
  191. package/pf-tabs/pf-tab.css +33 -0
  192. package/pf-tabs/pf-tab.d.ts +0 -40
  193. package/pf-tabs/pf-tab.js +231 -2
  194. package/pf-tabs/pf-tab.js.map +1 -1
  195. package/pf-tabs/pf-tabs.css +26 -0
  196. package/pf-tabs/pf-tabs.d.ts +1 -34
  197. package/pf-tabs/pf-tabs.js +307 -2
  198. package/pf-tabs/pf-tabs.js.map +1 -1
  199. package/pf-text-area/pf-text-area.css +125 -0
  200. package/pf-text-area/pf-text-area.d.ts +1 -125
  201. package/pf-text-area/pf-text-area.js +320 -2
  202. package/pf-text-area/pf-text-area.js.map +1 -1
  203. package/pf-text-input/pf-text-input.css +126 -0
  204. package/pf-text-input/pf-text-input.d.ts +1 -126
  205. package/pf-text-input/pf-text-input.js +395 -2
  206. package/pf-text-input/pf-text-input.js.map +1 -1
  207. package/pf-tile/pf-tile.css +28 -8
  208. package/pf-tile/pf-tile.d.ts +1 -24
  209. package/pf-tile/pf-tile.js +156 -2
  210. package/pf-tile/pf-tile.js.map +1 -1
  211. package/pf-timestamp/pf-timestamp.d.ts +1 -0
  212. package/pf-timestamp/pf-timestamp.js +10 -2
  213. package/pf-timestamp/pf-timestamp.js.map +1 -1
  214. package/pf-tooltip/pf-tooltip.css +10 -0
  215. package/pf-tooltip/pf-tooltip.d.ts +1 -79
  216. package/pf-tooltip/pf-tooltip.js +113 -3
  217. package/pf-tooltip/pf-tooltip.js.map +1 -1
  218. package/pfe.min.js +0 -7439
  219. package/pfe.min.js.LEGAL.txt +0 -57
  220. package/pfe.min.js.map +0 -7
  221. package/react/pf-accordion/pf-accordion-header.d.ts +0 -5
  222. package/react/pf-accordion/pf-accordion-header.js +0 -12
  223. package/react/pf-accordion/pf-accordion-panel.d.ts +0 -5
  224. package/react/pf-accordion/pf-accordion-panel.js +0 -10
  225. package/react/pf-accordion/pf-accordion.d.ts +0 -5
  226. package/react/pf-accordion/pf-accordion.js +0 -13
  227. package/react/pf-avatar/pf-avatar.d.ts +0 -5
  228. package/react/pf-avatar/pf-avatar.js +0 -12
  229. package/react/pf-back-to-top/pf-back-to-top.d.ts +0 -5
  230. package/react/pf-back-to-top/pf-back-to-top.js +0 -10
  231. package/react/pf-background-image/pf-background-image.d.ts +0 -5
  232. package/react/pf-background-image/pf-background-image.js +0 -10
  233. package/react/pf-badge/pf-badge.d.ts +0 -5
  234. package/react/pf-badge/pf-badge.js +0 -10
  235. package/react/pf-banner/pf-banner.d.ts +0 -5
  236. package/react/pf-banner/pf-banner.js +0 -10
  237. package/react/pf-button/pf-button.d.ts +0 -5
  238. package/react/pf-button/pf-button.js +0 -12
  239. package/react/pf-card/pf-card.d.ts +0 -5
  240. package/react/pf-card/pf-card.js +0 -10
  241. package/react/pf-chip/pf-chip-group.d.ts +0 -5
  242. package/react/pf-chip/pf-chip-group.js +0 -13
  243. package/react/pf-chip/pf-chip.d.ts +0 -5
  244. package/react/pf-chip/pf-chip.js +0 -13
  245. package/react/pf-clipboard-copy/pf-clipboard-copy.d.ts +0 -5
  246. package/react/pf-clipboard-copy/pf-clipboard-copy.js +0 -12
  247. package/react/pf-code-block/pf-code-block.d.ts +0 -5
  248. package/react/pf-code-block/pf-code-block.js +0 -10
  249. package/react/pf-dropdown/pf-dropdown-group.d.ts +0 -5
  250. package/react/pf-dropdown/pf-dropdown-group.js +0 -10
  251. package/react/pf-dropdown/pf-dropdown-item.d.ts +0 -5
  252. package/react/pf-dropdown/pf-dropdown-item.js +0 -10
  253. package/react/pf-dropdown/pf-dropdown-menu.d.ts +0 -5
  254. package/react/pf-dropdown/pf-dropdown-menu.js +0 -10
  255. package/react/pf-dropdown/pf-dropdown.d.ts +0 -5
  256. package/react/pf-dropdown/pf-dropdown.js +0 -14
  257. package/react/pf-icon/pf-icon.d.ts +0 -5
  258. package/react/pf-icon/pf-icon.js +0 -13
  259. package/react/pf-jump-links/pf-jump-links-item.d.ts +0 -5
  260. package/react/pf-jump-links/pf-jump-links-item.js +0 -13
  261. package/react/pf-jump-links/pf-jump-links-list.d.ts +0 -5
  262. package/react/pf-jump-links/pf-jump-links-list.js +0 -10
  263. package/react/pf-jump-links/pf-jump-links.d.ts +0 -5
  264. package/react/pf-jump-links/pf-jump-links.js +0 -12
  265. package/react/pf-label/pf-label.d.ts +0 -5
  266. package/react/pf-label/pf-label.js +0 -12
  267. package/react/pf-modal/pf-modal.d.ts +0 -5
  268. package/react/pf-modal/pf-modal.js +0 -13
  269. package/react/pf-panel/pf-panel.d.ts +0 -5
  270. package/react/pf-panel/pf-panel.js +0 -10
  271. package/react/pf-popover/pf-popover.d.ts +0 -5
  272. package/react/pf-popover/pf-popover.js +0 -10
  273. package/react/pf-progress/pf-progress.d.ts +0 -5
  274. package/react/pf-progress/pf-progress.js +0 -10
  275. package/react/pf-progress-stepper/pf-progress-step.d.ts +0 -5
  276. package/react/pf-progress-stepper/pf-progress-step.js +0 -10
  277. package/react/pf-progress-stepper/pf-progress-stepper.d.ts +0 -5
  278. package/react/pf-progress-stepper/pf-progress-stepper.js +0 -10
  279. package/react/pf-select/pf-option-group.d.ts +0 -5
  280. package/react/pf-select/pf-option-group.js +0 -10
  281. package/react/pf-select/pf-option.d.ts +0 -5
  282. package/react/pf-select/pf-option.js +0 -10
  283. package/react/pf-select/pf-select.d.ts +0 -5
  284. package/react/pf-select/pf-select.js +0 -13
  285. package/react/pf-spinner/pf-spinner.d.ts +0 -5
  286. package/react/pf-spinner/pf-spinner.js +0 -10
  287. package/react/pf-switch/pf-switch.d.ts +0 -5
  288. package/react/pf-switch/pf-switch.js +0 -12
  289. package/react/pf-table/pf-caption.d.ts +0 -5
  290. package/react/pf-table/pf-caption.js +0 -10
  291. package/react/pf-table/pf-table.d.ts +0 -5
  292. package/react/pf-table/pf-table.js +0 -10
  293. package/react/pf-table/pf-tbody.d.ts +0 -5
  294. package/react/pf-table/pf-tbody.js +0 -10
  295. package/react/pf-table/pf-td.d.ts +0 -5
  296. package/react/pf-table/pf-td.js +0 -10
  297. package/react/pf-table/pf-th.d.ts +0 -5
  298. package/react/pf-table/pf-th.js +0 -10
  299. package/react/pf-table/pf-thead.d.ts +0 -5
  300. package/react/pf-table/pf-thead.js +0 -10
  301. package/react/pf-table/pf-tr.d.ts +0 -5
  302. package/react/pf-table/pf-tr.js +0 -10
  303. package/react/pf-tabs/pf-tab-panel.d.ts +0 -5
  304. package/react/pf-tabs/pf-tab-panel.js +0 -10
  305. package/react/pf-tabs/pf-tab.d.ts +0 -5
  306. package/react/pf-tabs/pf-tab.js +0 -12
  307. package/react/pf-tabs/pf-tabs.d.ts +0 -5
  308. package/react/pf-tabs/pf-tabs.js +0 -10
  309. package/react/pf-text-area/pf-text-area.d.ts +0 -5
  310. package/react/pf-text-area/pf-text-area.js +0 -10
  311. package/react/pf-text-input/pf-text-input.d.ts +0 -5
  312. package/react/pf-text-input/pf-text-input.js +0 -10
  313. package/react/pf-tile/pf-tile.d.ts +0 -5
  314. package/react/pf-tile/pf-tile.js +0 -10
  315. package/react/pf-timestamp/pf-timestamp.d.ts +0 -5
  316. package/react/pf-timestamp/pf-timestamp.js +0 -10
  317. package/react/pf-tooltip/pf-tooltip.d.ts +0 -5
  318. package/react/pf-tooltip/pf-tooltip.js +0 -10
@@ -0,0 +1,107 @@
1
+ var _PfHelperText_slots;
2
+ import { __classPrivateFieldGet, __decorate } from "tslib";
3
+ import { LitElement, html } from 'lit';
4
+ import { customElement } from 'lit/decorators/custom-element.js';
5
+ import { property } from 'lit/decorators/property.js';
6
+ import { ifDefined } from 'lit/directives/if-defined.js';
7
+ import { SlotController } from '@patternfly/pfe-core/controllers/slot-controller.js';
8
+ import '@patternfly/elements/pf-icon/pf-icon.js';
9
+ import { css } from "lit";
10
+ const styles = css `:host {
11
+ display: flex;
12
+ align-items: center;
13
+ gap: var(--pf-c-helper-text--Gap, 0.25rem);
14
+ font-size: var(--pf-c-helper-text--FontSize, 0.875rem);
15
+ color: var(--pf-c-helper-text__item-text--Color, #151515);
16
+ line-height: 1.4;
17
+ }
18
+
19
+ /* Color variants */
20
+ :host([variant='indeterminate']) {
21
+ color: var(--pf-c-helper-text__item-text--m-indeterminate--Color, #6a6e73);
22
+ }
23
+
24
+ :host([variant='warning']) {
25
+ color: var(--pf-c-helper-text__item-text--m-warning--Color, #795600);
26
+ }
27
+
28
+ :host([variant='success']) {
29
+ color: var(--pf-c-helper-text__item-text--m-success--Color, #1e4f18);
30
+ }
31
+
32
+ :host([variant='error']) {
33
+ color: var(--pf-c-helper-text__item-text--m-error--Color, #a30000);
34
+ }
35
+
36
+ ::slotted(ul) {
37
+ margin: 0;
38
+ padding: 0;
39
+ list-style-type: none;
40
+ }
41
+
42
+ pf-icon {
43
+ fill: currentColor;
44
+ }
45
+ `;
46
+ /** Map of status to default icons (Font Awesome solid set). */
47
+ const StatusIconMap = {
48
+ success: 'check-circle',
49
+ warning: 'exclamation-triangle',
50
+ error: 'exclamation-circle',
51
+ indeterminate: 'info-circle',
52
+ };
53
+ let PfHelperText = class PfHelperText extends LitElement {
54
+ constructor() {
55
+ super(...arguments);
56
+ /**
57
+ * Defines the helper text status and its corresponding color and icon.
58
+ */
59
+ this.variant = 'default';
60
+ _PfHelperText_slots.set(this, new SlotController(this, 'icon', null));
61
+ }
62
+ /**
63
+ * Determine the effective icon to display.
64
+ */
65
+ get _resolvedIcon() {
66
+ if (this.icon) {
67
+ return this.icon;
68
+ }
69
+ if (this.variant !== 'default') {
70
+ return StatusIconMap[this.variant];
71
+ }
72
+ return undefined;
73
+ }
74
+ render() {
75
+ const iconName = this._resolvedIcon;
76
+ const showIcon = !!this.icon || __classPrivateFieldGet(this, _PfHelperText_slots, "f").hasSlotted('icon');
77
+ return html `
78
+ <span id="icon" ?hidden="${!showIcon}">
79
+ <slot name="icon">
80
+ <pf-icon icon="${iconName}"
81
+ set="${ifDefined(this.iconSet)}"
82
+ role="presentation"></pf-icon>
83
+ </slot>
84
+ </span>
85
+ <span id="text" aria-live="polite">
86
+ <slot></slot>
87
+ </span>
88
+ `;
89
+ }
90
+ };
91
+ _PfHelperText_slots = new WeakMap();
92
+ PfHelperText.styles = [styles];
93
+ PfHelperText.version = "4.3.0";
94
+ __decorate([
95
+ property({ reflect: true })
96
+ ], PfHelperText.prototype, "variant", void 0);
97
+ __decorate([
98
+ property()
99
+ ], PfHelperText.prototype, "icon", void 0);
100
+ __decorate([
101
+ property({ attribute: 'icon-set' })
102
+ ], PfHelperText.prototype, "iconSet", void 0);
103
+ PfHelperText = __decorate([
104
+ customElement('pf-helper-text')
105
+ ], PfHelperText);
106
+ export { PfHelperText };
107
+ //# sourceMappingURL=pf-helper-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pf-helper-text.js","sourceRoot":"","sources":["pf-helper-text.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,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAC;AAErF,OAAO,yCAAyC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIjD,+DAA+D;AAC/D,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE,cAAc;IACvB,OAAO,EAAE,sBAAsB;IAC/B,KAAK,EAAE,oBAAoB;IAC3B,aAAa,EAAE,aAAa;CAC7B,CAAC;AAeK,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,UAAU;IAArC;;QAGL;;WAEG;QAC0B,YAAO,GAKhB,SAAS,CAAC;QAa9B,8BAAS,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAC;;IAEhD;;OAEG;IACH,IAAY,aAAa;QACvB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,MAAM;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QACpC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,uBAAA,IAAI,2BAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE/D,OAAO,IAAI,CAAA;iCACkB,CAAC,QAAQ;;2BAEf,QAAQ;0BACT,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;;;;;;;KAO5C,CAAC;IACJ,CAAC;;;AAtDsB,mBAAM,GAAoB,CAAC,MAAM,CAAC,AAA5B,CAA6B;;AAK7B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;6CAKE;AAMlB;IAAX,QAAQ,EAAE;0CAAe;AAKW;IAApC,QAAQ,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;6CAAkB;AAtB3C,YAAY;IADxB,aAAa,CAAC,gBAAgB,CAAC;GACnB,YAAY","sourcesContent":["import { LitElement, html, type TemplateResult } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport { SlotController } from '@patternfly/pfe-core/controllers/slot-controller.js';\n\nimport '@patternfly/elements/pf-icon/pf-icon.js';\n\nimport styles from './pf-helper-text.css';\n\n/** Map of status to default icons (Font Awesome solid set). */\nconst StatusIconMap = {\n success: 'check-circle',\n warning: 'exclamation-triangle',\n error: 'exclamation-circle',\n indeterminate: 'info-circle',\n};\n\n/**\n * Displays contextual feedback for form fields with optional icon and status color.\n *\n * @slot icon - Optional custom icon to override the default icon.\n * @slot - Default slot for the helper text content.\n *\n * @fires icon-load - Fired when the icon successfully loads.\n * @fires icon-error - Fired if loading the icon fails.\n *\n * @csspart icon - The container for the icon.\n * @csspart text - The container for the text.\n */\n@customElement('pf-helper-text')\nexport class PfHelperText extends LitElement {\n public static readonly styles: CSSStyleSheet[] = [styles];\n\n /**\n * Defines the helper text status and its corresponding color and icon.\n */\n @property({ reflect: true }) variant:\n | 'default'\n | 'success'\n | 'warning'\n | 'error'\n | 'indeterminate' = 'default';\n\n /**\n * Custom icon name to override the default icon.\n * Requires `<pf-icon>` to be imported.\n */\n @property() icon?: string;\n\n /**\n * Icon set for custom icons (e.g., 'fas', 'patternfly').\n */\n @property({ attribute: 'icon-set' }) iconSet?: string;\n\n #slots = new SlotController(this, 'icon', null);\n\n /**\n * Determine the effective icon to display.\n */\n private get _resolvedIcon(): string | undefined {\n if (this.icon) {\n return this.icon;\n }\n if (this.variant !== 'default') {\n return StatusIconMap[this.variant];\n }\n return undefined;\n }\n\n protected render(): TemplateResult<1> {\n const iconName = this._resolvedIcon;\n const showIcon = !!this.icon || this.#slots.hasSlotted('icon');\n\n return html`\n <span id=\"icon\" ?hidden=\"${!showIcon}\">\n <slot name=\"icon\">\n <pf-icon icon=\"${iconName}\"\n set=\"${ifDefined(this.iconSet)}\"\n role=\"presentation\"></pf-icon>\n </slot>\n </span>\n <span id=\"text\" aria-live=\"polite\">\n <slot></slot>\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-helper-text': PfHelperText;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ import { test } from '@playwright/test';
2
+ import { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';
3
+ import { SSRPage } from '@patternfly/pfe-tools/test/playwright/SSRPage.js';
4
+ const tagName = 'pf-helper-text';
5
+ test.describe(tagName, () => {
6
+ test('snapshot', async ({ page }) => {
7
+ const componentPage = new PfeDemoPage(page, tagName);
8
+ await componentPage.navigate();
9
+ await componentPage.snapshot();
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
+ });
22
+ });
23
+ //# sourceMappingURL=pf-helper-text.e2e.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pf-helper-text.e2e.js","sourceRoot":"","sources":["pf-helper-text.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,gBAAgB,CAAC;AAEjC,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-helper-text';\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"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,57 @@
1
+ import { expect, html } from '@open-wc/testing';
2
+ import { createFixture } from '@patternfly/pfe-tools/test/create-fixture.js';
3
+ import { PfHelperText } from '@patternfly/elements/pf-helper-text/pf-helper-text.js';
4
+ describe('<pf-helper-text>', function () {
5
+ describe('simply instantiating', function () {
6
+ let element;
7
+ it('imperatively instantiates', function () {
8
+ expect(document.createElement('pf-helper-text')).to.be.an.instanceof(PfHelperText);
9
+ });
10
+ it('should upgrade', async function () {
11
+ element = await createFixture(html `<pf-helper-text></pf-helper-text>`);
12
+ const klass = customElements.get('pf-helper-text');
13
+ expect(element)
14
+ .to.be.an.instanceOf(klass)
15
+ .and
16
+ .to.be.an.instanceOf(PfHelperText);
17
+ });
18
+ });
19
+ describe('variant property', function () {
20
+ it('should default to "default" variant', async function () {
21
+ const element = await createFixture(html `<pf-helper-text></pf-helper-text>`);
22
+ expect(element.variant).to.equal('default');
23
+ });
24
+ it('should reflect variant attribute', async function () {
25
+ const element = await createFixture(html `<pf-helper-text variant="success"></pf-helper-text>`);
26
+ expect(element.variant).to.equal('success');
27
+ expect(element.getAttribute('variant')).to.equal('success');
28
+ });
29
+ });
30
+ describe('icon display', function () {
31
+ it('should show icon when icon property is set', async function () {
32
+ const element = await createFixture(html `<pf-helper-text icon="check-circle">Success</pf-helper-text>`);
33
+ await element.updateComplete;
34
+ const iconContainer = element.shadowRoot?.querySelector('#icon');
35
+ expect(iconContainer?.hasAttribute('hidden')).to.be.false;
36
+ });
37
+ it('should hide icon when no icon or slotted icon is present', async function () {
38
+ const element = await createFixture(html `<pf-helper-text variant="default">Text</pf-helper-text>`);
39
+ await element.updateComplete;
40
+ const iconContainer = element.shadowRoot?.querySelector('#icon');
41
+ expect(iconContainer?.hasAttribute('hidden')).to.be.true;
42
+ });
43
+ });
44
+ describe('text content', function () {
45
+ it('should render text content in default slot', async function () {
46
+ const element = await createFixture(html `<pf-helper-text>Helper text content</pf-helper-text>`);
47
+ expect(element.textContent?.trim()).to.equal('Helper text content');
48
+ });
49
+ it('should have aria-live on text container', async function () {
50
+ const element = await createFixture(html `<pf-helper-text>Text</pf-helper-text>`);
51
+ await element.updateComplete;
52
+ const textContainer = element.shadowRoot?.querySelector('#text');
53
+ expect(textContainer?.getAttribute('aria-live')).to.equal('polite');
54
+ });
55
+ });
56
+ });
57
+ //# sourceMappingURL=pf-helper-text.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pf-helper-text.spec.js","sourceRoot":"","sources":["pf-helper-text.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, html } from '@open-wc/testing';\nimport { createFixture } from '@patternfly/pfe-tools/test/create-fixture.js';\nimport { PfHelperText } from '@patternfly/elements/pf-helper-text/pf-helper-text.js';\n\ndescribe('<pf-helper-text>', function() {\n describe('simply instantiating', function() {\n let element: PfHelperText;\n it('imperatively instantiates', function() {\n expect(document.createElement('pf-helper-text')).to.be.an.instanceof(PfHelperText);\n });\n\n it('should upgrade', async function() {\n element = await createFixture<PfHelperText>(html`<pf-helper-text></pf-helper-text>`);\n const klass = customElements.get('pf-helper-text');\n expect(element)\n .to.be.an.instanceOf(klass)\n .and\n .to.be.an.instanceOf(PfHelperText);\n });\n });\n\n describe('variant property', function() {\n it('should default to \"default\" variant', async function() {\n const element = await createFixture<PfHelperText>(html`<pf-helper-text></pf-helper-text>`);\n expect(element.variant).to.equal('default');\n });\n\n it('should reflect variant attribute', async function() {\n const element = await createFixture<PfHelperText>(html`<pf-helper-text variant=\"success\"></pf-helper-text>`);\n expect(element.variant).to.equal('success');\n expect(element.getAttribute('variant')).to.equal('success');\n });\n });\n\n describe('icon display', function() {\n it('should show icon when icon property is set', async function() {\n const element = await createFixture<PfHelperText>(html`<pf-helper-text icon=\"check-circle\">Success</pf-helper-text>`);\n await element.updateComplete;\n const iconContainer = element.shadowRoot?.querySelector('#icon');\n expect(iconContainer?.hasAttribute('hidden')).to.be.false;\n });\n\n it('should hide icon when no icon or slotted icon is present', async function() {\n const element = await createFixture<PfHelperText>(html`<pf-helper-text variant=\"default\">Text</pf-helper-text>`);\n await element.updateComplete;\n const iconContainer = element.shadowRoot?.querySelector('#icon');\n expect(iconContainer?.hasAttribute('hidden')).to.be.true;\n });\n });\n\n describe('text content', function() {\n it('should render text content in default slot', async function() {\n const element = await createFixture<PfHelperText>(html`<pf-helper-text>Helper text content</pf-helper-text>`);\n expect(element.textContent?.trim()).to.equal('Helper text content');\n });\n\n it('should have aria-live on text container', async function() {\n const element = await createFixture<PfHelperText>(html`<pf-helper-text>Text</pf-helper-text>`);\n await element.updateComplete;\n const textContainer = element.shadowRoot?.querySelector('#text');\n expect(textContainer?.getAttribute('aria-live')).to.equal('polite');\n });\n });\n});\n"]}
@@ -0,0 +1,120 @@
1
+ :host {
2
+ display: block;
3
+
4
+ /* Container */
5
+ --pf-c-hint--GridRowGap: var(--pf-global--spacer--md, 1rem);
6
+ --pf-c-hint--PaddingTop: var(--pf-global--spacer--lg, 1.5rem);
7
+ --pf-c-hint--PaddingRight: var(--pf-global--spacer--lg, 1.5rem);
8
+ --pf-c-hint--PaddingBottom: var(--pf-global--spacer--lg, 1.5rem);
9
+ --pf-c-hint--PaddingLeft: var(--pf-global--spacer--lg, 1.5rem);
10
+ --pf-c-hint--BackgroundColor: var(--pf-global--palette--blue-50, #e7f1fa);
11
+ --pf-c-hint--BorderColor: var(--pf-global--palette--blue-100, #bee1f4);
12
+ --pf-c-hint--BorderWidth: 1px;
13
+ --pf-c-hint--BorderRadius: var(--pf-global--BorderRadius--sm, 3px);
14
+ --pf-c-hint--BoxShadow: var(--pf-global--BoxShadow--sm, 0 0.0625rem 0.125rem 0 rgba(3, 3, 3, 0.12), 0 0 0.125rem 0 rgba(3, 3, 3, 0.06));
15
+
16
+ /* Title */
17
+ --pf-c-hint__title--FontSize: 1.125rem;
18
+ --pf-c-hint__title--FontWeight: var(--pf-global--FontWeight--semi-bold, 700);
19
+ --pf-c-hint__title--Color: var(--pf-global--Color--100, #151515);
20
+ --pf-c-hint__title--LineHeight: var(--pf-global--LineHeight--md, 1.5);
21
+
22
+ /* Body */
23
+ --pf-c-hint__body--FontSize: 1rem;
24
+ --pf-c-hint__body--Color: var(--pf-global--Color--100, #151515);
25
+ --pf-c-hint__body--LineHeight: var(--pf-global--LineHeight--md, 1.5);
26
+
27
+ /* Footer */
28
+ --pf-c-hint__footer--MarginTop: 0;
29
+ --pf-c-hint__footer--child--MarginRight: 1rem;
30
+
31
+ /* Actions */
32
+ --pf-c-hint__actions--Top: var(--pf-global--spacer--lg, 1.5rem);
33
+ --pf-c-hint__actions--Right: var(--pf-global--spacer--lg, 1.5rem);
34
+ --pf-c-hint__actions--MarginLeft: 3rem;
35
+ --pf-c-hint__actions--c-dropdown--MarginTop: calc(0.375rem * -1);
36
+ }
37
+
38
+ #container {
39
+ position: relative;
40
+ display: grid;
41
+ grid-template-columns: 1fr auto;
42
+ gap: var(--pf-c-hint--GridRowGap);
43
+ padding:
44
+ var(--pf-c-hint--PaddingTop)
45
+ var(--pf-c-hint--PaddingRight)
46
+ var(--pf-c-hint--PaddingBottom)
47
+ var(--pf-c-hint--PaddingLeft);
48
+ background-color: var(--pf-c-hint--BackgroundColor);
49
+ border: var(--pf-c-hint--BorderWidth) solid var(--pf-c-hint--BorderColor);
50
+ border-radius: var(--pf-c-hint--BorderRadius);
51
+ box-shadow: var(--pf-c-hint--BoxShadow);
52
+ overflow: visible;
53
+ }
54
+
55
+ #container > * {
56
+ grid-column: 1;
57
+ }
58
+
59
+ #actions {
60
+ grid-column: 2;
61
+ grid-row: 1 / -1;
62
+ align-self: start;
63
+ position: relative;
64
+ z-index: 1000;
65
+ }
66
+
67
+ #actions ::slotted(pf-dropdown) {
68
+ margin-top: var(--pf-c-hint__actions--c-dropdown--MarginTop);
69
+ --pf-c-dropdown__menu--MinWidth: auto;
70
+ --pf-c-dropdown__menu--Left: auto;
71
+ --pf-c-dropdown__menu--Right: 0;
72
+ }
73
+
74
+ #title {
75
+ font-size: var(--pf-c-hint__title--FontSize);
76
+ font-weight: var(--pf-c-hint__title--FontWeight);
77
+ color: var(--pf-c-hint__title--Color);
78
+ line-height: var(--pf-c-hint__title--LineHeight);
79
+ }
80
+
81
+ #body {
82
+ font-size: var(--pf-c-hint__body--FontSize);
83
+ color: var(--pf-c-hint__body--Color);
84
+ line-height: var(--pf-c-hint__body--LineHeight);
85
+ }
86
+
87
+ #footer {
88
+ margin-top: var(--pf-c-hint__footer--MarginTop);
89
+ font-size: var(--pf-c-hint__body--FontSize);
90
+ line-height: var(--pf-c-hint__body--LineHeight);
91
+ }
92
+
93
+ #footer ::slotted(*) {
94
+ margin-right: var(--pf-c-hint__footer--child--MarginRight);
95
+ }
96
+
97
+ #footer ::slotted(*:last-child) {
98
+ margin-right: 0;
99
+ }
100
+
101
+ /* Hidden elements */
102
+ [hidden] {
103
+ display: none !important;
104
+ }
105
+
106
+ /* Link styling within hint */
107
+ ::slotted(a) {
108
+ color: var(--pf-global--link--Color, #06c);
109
+ text-decoration: none;
110
+ }
111
+
112
+ ::slotted(a:hover) {
113
+ color: var(--pf-global--link--Color--hover, #004080);
114
+ text-decoration: underline;
115
+ }
116
+
117
+ /* Button styling in footer */
118
+ ::slotted(pf-button) {
119
+ --pf-c-button--m-link--Color: var(--pf-global--link--Color, #06c);
120
+ }
@@ -0,0 +1,19 @@
1
+ import { LitElement, type TemplateResult } from 'lit';
2
+ /**
3
+ * A **hint** is in-app messaging that provides a one-step reminder, explanation,
4
+ * or call to action for a page or modal. Hints provide information about an interaction
5
+ * or prerequisite step that might not be immediately obvious to the user.
6
+ *
7
+ * @summary Provides inline contextual help or information to users
8
+ * @alias Hint
9
+ */
10
+ export declare class PfHint extends LitElement {
11
+ #private;
12
+ static readonly styles: CSSStyleSheet[];
13
+ render(): TemplateResult<1>;
14
+ }
15
+ declare global {
16
+ interface HTMLElementTagNameMap {
17
+ 'pf-hint': PfHint;
18
+ }
19
+ }
@@ -0,0 +1,180 @@
1
+ var _PfHint_slots;
2
+ import { __classPrivateFieldGet, __decorate } from "tslib";
3
+ import { LitElement, html } from 'lit';
4
+ import { customElement } from 'lit/decorators/custom-element.js';
5
+ import { classMap } from 'lit/directives/class-map.js';
6
+ import { SlotController } from '@patternfly/pfe-core/controllers/slot-controller.js';
7
+ import { css } from "lit";
8
+ const styles = css `:host {
9
+ display: block;
10
+
11
+ /* Container */
12
+ --pf-c-hint--GridRowGap: var(--pf-global--spacer--md, 1rem);
13
+ --pf-c-hint--PaddingTop: var(--pf-global--spacer--lg, 1.5rem);
14
+ --pf-c-hint--PaddingRight: var(--pf-global--spacer--lg, 1.5rem);
15
+ --pf-c-hint--PaddingBottom: var(--pf-global--spacer--lg, 1.5rem);
16
+ --pf-c-hint--PaddingLeft: var(--pf-global--spacer--lg, 1.5rem);
17
+ --pf-c-hint--BackgroundColor: var(--pf-global--palette--blue-50, #e7f1fa);
18
+ --pf-c-hint--BorderColor: var(--pf-global--palette--blue-100, #bee1f4);
19
+ --pf-c-hint--BorderWidth: 1px;
20
+ --pf-c-hint--BorderRadius: var(--pf-global--BorderRadius--sm, 3px);
21
+ --pf-c-hint--BoxShadow: var(--pf-global--BoxShadow--sm, 0 0.0625rem 0.125rem 0 rgba(3, 3, 3, 0.12), 0 0 0.125rem 0 rgba(3, 3, 3, 0.06));
22
+
23
+ /* Title */
24
+ --pf-c-hint__title--FontSize: 1.125rem;
25
+ --pf-c-hint__title--FontWeight: var(--pf-global--FontWeight--semi-bold, 700);
26
+ --pf-c-hint__title--Color: var(--pf-global--Color--100, #151515);
27
+ --pf-c-hint__title--LineHeight: var(--pf-global--LineHeight--md, 1.5);
28
+
29
+ /* Body */
30
+ --pf-c-hint__body--FontSize: 1rem;
31
+ --pf-c-hint__body--Color: var(--pf-global--Color--100, #151515);
32
+ --pf-c-hint__body--LineHeight: var(--pf-global--LineHeight--md, 1.5);
33
+
34
+ /* Footer */
35
+ --pf-c-hint__footer--MarginTop: 0;
36
+ --pf-c-hint__footer--child--MarginRight: 1rem;
37
+
38
+ /* Actions */
39
+ --pf-c-hint__actions--Top: var(--pf-global--spacer--lg, 1.5rem);
40
+ --pf-c-hint__actions--Right: var(--pf-global--spacer--lg, 1.5rem);
41
+ --pf-c-hint__actions--MarginLeft: 3rem;
42
+ --pf-c-hint__actions--c-dropdown--MarginTop: calc(0.375rem * -1);
43
+ }
44
+
45
+ #container {
46
+ position: relative;
47
+ display: grid;
48
+ grid-template-columns: 1fr auto;
49
+ gap: var(--pf-c-hint--GridRowGap);
50
+ padding:
51
+ var(--pf-c-hint--PaddingTop)
52
+ var(--pf-c-hint--PaddingRight)
53
+ var(--pf-c-hint--PaddingBottom)
54
+ var(--pf-c-hint--PaddingLeft);
55
+ background-color: var(--pf-c-hint--BackgroundColor);
56
+ border: var(--pf-c-hint--BorderWidth) solid var(--pf-c-hint--BorderColor);
57
+ border-radius: var(--pf-c-hint--BorderRadius);
58
+ box-shadow: var(--pf-c-hint--BoxShadow);
59
+ overflow: visible;
60
+ }
61
+
62
+ #container > * {
63
+ grid-column: 1;
64
+ }
65
+
66
+ #actions {
67
+ grid-column: 2;
68
+ grid-row: 1 / -1;
69
+ align-self: start;
70
+ position: relative;
71
+ z-index: 1000;
72
+ }
73
+
74
+ #actions ::slotted(pf-dropdown) {
75
+ margin-top: var(--pf-c-hint__actions--c-dropdown--MarginTop);
76
+ --pf-c-dropdown__menu--MinWidth: auto;
77
+ --pf-c-dropdown__menu--Left: auto;
78
+ --pf-c-dropdown__menu--Right: 0;
79
+ }
80
+
81
+ #title {
82
+ font-size: var(--pf-c-hint__title--FontSize);
83
+ font-weight: var(--pf-c-hint__title--FontWeight);
84
+ color: var(--pf-c-hint__title--Color);
85
+ line-height: var(--pf-c-hint__title--LineHeight);
86
+ }
87
+
88
+ #body {
89
+ font-size: var(--pf-c-hint__body--FontSize);
90
+ color: var(--pf-c-hint__body--Color);
91
+ line-height: var(--pf-c-hint__body--LineHeight);
92
+ }
93
+
94
+ #footer {
95
+ margin-top: var(--pf-c-hint__footer--MarginTop);
96
+ font-size: var(--pf-c-hint__body--FontSize);
97
+ line-height: var(--pf-c-hint__body--LineHeight);
98
+ }
99
+
100
+ #footer ::slotted(*) {
101
+ margin-right: var(--pf-c-hint__footer--child--MarginRight);
102
+ }
103
+
104
+ #footer ::slotted(*:last-child) {
105
+ margin-right: 0;
106
+ }
107
+
108
+ /* Hidden elements */
109
+ [hidden] {
110
+ display: none !important;
111
+ }
112
+
113
+ /* Link styling within hint */
114
+ ::slotted(a) {
115
+ color: var(--pf-global--link--Color, #06c);
116
+ text-decoration: none;
117
+ }
118
+
119
+ ::slotted(a:hover) {
120
+ color: var(--pf-global--link--Color--hover, #004080);
121
+ text-decoration: underline;
122
+ }
123
+
124
+ /* Button styling in footer */
125
+ ::slotted(pf-button) {
126
+ --pf-c-button--m-link--Color: var(--pf-global--link--Color, #06c);
127
+ }
128
+ `;
129
+ let PfHint = class PfHint extends LitElement {
130
+ constructor() {
131
+ super(...arguments);
132
+ _PfHint_slots.set(this, new SlotController(this, 'title', null, 'footer', 'actions'));
133
+ }
134
+ render() {
135
+ const hasActions = !__classPrivateFieldGet(this, _PfHint_slots, "f").isEmpty('actions');
136
+ return html `
137
+ <div id="container"
138
+ part="container"
139
+ class=${classMap({
140
+ 'has-actions': hasActions,
141
+ })}>
142
+ <div id="actions"
143
+ part="actions"
144
+ class="pf-c-hint__actions"
145
+ ?hidden=${__classPrivateFieldGet(this, _PfHint_slots, "f").isEmpty('actions')}>
146
+ <!-- summary: Actions menu (e.g., kebab dropdown) -->
147
+ <slot name="actions"></slot>
148
+ </div>
149
+ <div id="title"
150
+ part="title"
151
+ class="pf-c-hint__title"
152
+ ?hidden=${__classPrivateFieldGet(this, _PfHint_slots, "f").isEmpty('title')}>
153
+ <!-- summary: Optional title for the hint -->
154
+ <slot name="title"></slot>
155
+ </div>
156
+ <div id="body"
157
+ part="body"
158
+ class="pf-c-hint__body">
159
+ <!-- summary: Body content of the hint. Main informational text. -->
160
+ <slot></slot>
161
+ </div>
162
+ <div id="footer"
163
+ part="footer"
164
+ class="pf-c-hint__footer"
165
+ ?hidden=${__classPrivateFieldGet(this, _PfHint_slots, "f").isEmpty('footer')}>
166
+ <!-- summary: Optional footer content, typically containing action links or buttons -->
167
+ <slot name="footer"></slot>
168
+ </div>
169
+ </div>
170
+ `;
171
+ }
172
+ };
173
+ _PfHint_slots = new WeakMap();
174
+ PfHint.styles = [styles];
175
+ PfHint.version = "4.3.0";
176
+ PfHint = __decorate([
177
+ customElement('pf-hint')
178
+ ], PfHint);
179
+ export { PfHint };
180
+ //# sourceMappingURL=pf-hint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pf-hint.js","sourceRoot":"","sources":["pf-hint.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,6BAA6B,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAa9E,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,UAAU;IAA/B;;QAGL,wBAAS,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAC;;IAEtE,MAAM;QACJ,MAAM,UAAU,GAAG,CAAC,uBAAA,IAAI,qBAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAA;;;mBAGI,QAAQ,CAAC;YACf,aAAa,EAAE,UAAU;SAC1B,CAAC;;;;uBAIU,uBAAA,IAAI,qBAAO,CAAC,OAAO,CAAC,SAAS,CAAC;;;;;;;uBAO9B,uBAAA,IAAI,qBAAO,CAAC,OAAO,CAAC,OAAO,CAAC;;;;;;;;;;;;;uBAa5B,uBAAA,IAAI,qBAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;;;;;KAK/C,CAAC;IACJ,CAAC;;;AA1Ce,aAAM,GAAoB,CAAC,MAAM,CAAC,AAA5B,CAA6B;;AADxC,MAAM;IADlB,aAAa,CAAC,SAAS,CAAC;GACZ,MAAM","sourcesContent":["import { LitElement, html, type TemplateResult } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { SlotController } from '@patternfly/pfe-core/controllers/slot-controller.js';\n\nimport styles from './pf-hint.css';\n\n/**\n * A **hint** is in-app messaging that provides a one-step reminder, explanation,\n * or call to action for a page or modal. Hints provide information about an interaction\n * or prerequisite step that might not be immediately obvious to the user.\n *\n * @summary Provides inline contextual help or information to users\n * @alias Hint\n */\n@customElement('pf-hint')\nexport class PfHint extends LitElement {\n static readonly styles: CSSStyleSheet[] = [styles];\n\n #slots = new SlotController(this, 'title', null, 'footer', 'actions');\n\n render(): TemplateResult<1> {\n const hasActions = !this.#slots.isEmpty('actions');\n\n return html`\n <div id=\"container\"\n part=\"container\"\n class=${classMap({\n 'has-actions': hasActions,\n })}>\n <div id=\"actions\"\n part=\"actions\"\n class=\"pf-c-hint__actions\"\n ?hidden=${this.#slots.isEmpty('actions')}>\n <!-- summary: Actions menu (e.g., kebab dropdown) -->\n <slot name=\"actions\"></slot>\n </div>\n <div id=\"title\"\n part=\"title\"\n class=\"pf-c-hint__title\"\n ?hidden=${this.#slots.isEmpty('title')}>\n <!-- summary: Optional title for the hint -->\n <slot name=\"title\"></slot>\n </div>\n <div id=\"body\"\n part=\"body\"\n class=\"pf-c-hint__body\">\n <!-- summary: Body content of the hint. Main informational text. -->\n <slot></slot>\n </div>\n <div id=\"footer\"\n part=\"footer\"\n class=\"pf-c-hint__footer\"\n ?hidden=${this.#slots.isEmpty('footer')}>\n <!-- summary: Optional footer content, typically containing action links or buttons -->\n <slot name=\"footer\"></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-hint': PfHint;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ import { test } from '@playwright/test';
2
+ import { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';
3
+ import { SSRPage } from '@patternfly/pfe-tools/test/playwright/SSRPage.js';
4
+ const tagName = 'pf-hint';
5
+ test.describe(tagName, () => {
6
+ test('snapshot', async ({ page }) => {
7
+ const componentPage = new PfeDemoPage(page, tagName);
8
+ await componentPage.navigate();
9
+ await componentPage.snapshot();
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
+ });
22
+ });
23
+ //# sourceMappingURL=pf-hint.e2e.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pf-hint.e2e.js","sourceRoot":"","sources":["pf-hint.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-hint';\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"]}
@@ -0,0 +1 @@
1
+ export {};