@patternfly/react-core 6.3.0-prerelease.8 → 6.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 (510) hide show
  1. package/CHANGELOG.md +151 -0
  2. package/CONTRIBUTING.md +3 -5
  3. package/components/package.json +1 -1
  4. package/deprecated/package.json +1 -1
  5. package/dist/dynamic/components/AboutModal/package.json +1 -1
  6. package/dist/dynamic/components/Accordion/package.json +1 -1
  7. package/dist/dynamic/components/ActionList/package.json +1 -1
  8. package/dist/dynamic/components/Alert/package.json +1 -1
  9. package/dist/dynamic/components/Avatar/package.json +1 -1
  10. package/dist/dynamic/components/BackToTop/package.json +1 -1
  11. package/dist/dynamic/components/Backdrop/package.json +1 -1
  12. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  13. package/dist/dynamic/components/Badge/package.json +1 -1
  14. package/dist/dynamic/components/Banner/package.json +1 -1
  15. package/dist/dynamic/components/Brand/package.json +1 -1
  16. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  17. package/dist/dynamic/components/Button/package.json +1 -1
  18. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  19. package/dist/dynamic/components/Card/package.json +1 -1
  20. package/dist/dynamic/components/Checkbox/package.json +1 -1
  21. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  22. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  23. package/dist/dynamic/components/Content/package.json +1 -1
  24. package/dist/dynamic/components/DataList/package.json +1 -1
  25. package/dist/dynamic/components/DatePicker/package.json +1 -1
  26. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  27. package/dist/dynamic/components/Divider/package.json +1 -1
  28. package/dist/dynamic/components/Drawer/package.json +1 -1
  29. package/dist/dynamic/components/Dropdown/package.json +1 -1
  30. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  31. package/dist/dynamic/components/EmptyState/package.json +1 -1
  32. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  33. package/dist/dynamic/components/FileUpload/package.json +1 -1
  34. package/dist/dynamic/components/Form/package.json +1 -1
  35. package/dist/dynamic/components/FormSelect/package.json +1 -1
  36. package/dist/dynamic/components/HelperText/package.json +1 -1
  37. package/dist/dynamic/components/Hint/package.json +1 -1
  38. package/dist/dynamic/components/Icon/package.json +1 -1
  39. package/dist/dynamic/components/InputGroup/package.json +1 -1
  40. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  41. package/dist/dynamic/components/Label/package.json +1 -1
  42. package/dist/dynamic/components/List/package.json +1 -1
  43. package/dist/dynamic/components/LoginPage/package.json +1 -1
  44. package/dist/dynamic/components/Masthead/package.json +1 -1
  45. package/dist/dynamic/components/Menu/package.json +1 -1
  46. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  47. package/dist/dynamic/components/Modal/package.json +1 -1
  48. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  49. package/dist/dynamic/components/Nav/package.json +1 -1
  50. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  51. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  52. package/dist/dynamic/components/NumberInput/package.json +1 -1
  53. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  54. package/dist/dynamic/components/Page/package.json +1 -1
  55. package/dist/dynamic/components/Pagination/package.json +1 -1
  56. package/dist/dynamic/components/Panel/package.json +1 -1
  57. package/dist/dynamic/components/Popover/package.json +1 -1
  58. package/dist/dynamic/components/Progress/package.json +1 -1
  59. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  60. package/dist/dynamic/components/Radio/package.json +1 -1
  61. package/dist/dynamic/components/SearchInput/package.json +1 -1
  62. package/dist/dynamic/components/Select/package.json +1 -1
  63. package/dist/dynamic/components/Sidebar/package.json +1 -1
  64. package/dist/dynamic/components/SimpleList/package.json +1 -1
  65. package/dist/dynamic/components/Skeleton/package.json +1 -1
  66. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  67. package/dist/dynamic/components/Slider/package.json +1 -1
  68. package/dist/dynamic/components/Spinner/package.json +1 -1
  69. package/dist/dynamic/components/Switch/package.json +1 -1
  70. package/dist/dynamic/components/Tabs/package.json +1 -1
  71. package/dist/dynamic/components/TextArea/package.json +1 -1
  72. package/dist/dynamic/components/TextInput/package.json +1 -1
  73. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  74. package/dist/dynamic/components/TimePicker/package.json +1 -1
  75. package/dist/dynamic/components/Timestamp/package.json +1 -1
  76. package/dist/dynamic/components/Title/package.json +1 -1
  77. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  78. package/dist/dynamic/components/Toolbar/package.json +1 -1
  79. package/dist/dynamic/components/Tooltip/package.json +1 -1
  80. package/dist/dynamic/components/TreeView/package.json +1 -1
  81. package/dist/dynamic/components/Truncate/package.json +1 -1
  82. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  83. package/dist/dynamic/components/Wizard/package.json +1 -1
  84. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/package.json +1 -1
  91. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  92. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  93. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  94. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  95. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  96. package/dist/dynamic/helpers/constants/package.json +1 -1
  97. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  98. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  99. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  100. package/dist/dynamic/helpers/package.json +1 -1
  101. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  102. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  103. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  104. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  105. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  106. package/dist/dynamic/helpers/util/package.json +1 -1
  107. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  108. package/dist/dynamic/layouts/Flex/package.json +1 -1
  109. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  110. package/dist/dynamic/layouts/Grid/package.json +1 -1
  111. package/dist/dynamic/layouts/Level/package.json +1 -1
  112. package/dist/dynamic/layouts/Split/package.json +1 -1
  113. package/dist/dynamic/layouts/Stack/package.json +1 -1
  114. package/dist/dynamic/styles/package.json +1 -1
  115. package/dist/dynamic-modules.json +2 -0
  116. package/dist/esm/components/Alert/AlertGroupInline.d.ts.map +1 -1
  117. package/dist/esm/components/Alert/AlertGroupInline.js +7 -1
  118. package/dist/esm/components/Alert/AlertGroupInline.js.map +1 -1
  119. package/dist/esm/components/Button/Button.d.ts +12 -0
  120. package/dist/esm/components/Button/Button.d.ts.map +1 -1
  121. package/dist/esm/components/Button/Button.js +33 -3
  122. package/dist/esm/components/Button/Button.js.map +1 -1
  123. package/dist/esm/components/Button/hamburgerIcon.d.ts +2 -0
  124. package/dist/esm/components/Button/hamburgerIcon.d.ts.map +1 -0
  125. package/dist/esm/components/Button/hamburgerIcon.js +7 -0
  126. package/dist/esm/components/Button/hamburgerIcon.js.map +1 -0
  127. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  128. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js +2 -2
  129. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  130. package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.js +1 -1
  131. package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.js.map +1 -1
  132. package/dist/esm/components/DualListSelector/DualListSelector.d.ts +5 -0
  133. package/dist/esm/components/DualListSelector/DualListSelector.d.ts.map +1 -1
  134. package/dist/esm/components/DualListSelector/DualListSelector.js +4 -3
  135. package/dist/esm/components/DualListSelector/DualListSelector.js.map +1 -1
  136. package/dist/esm/components/DualListSelector/DualListSelectorContext.d.ts +1 -0
  137. package/dist/esm/components/DualListSelector/DualListSelectorContext.d.ts.map +1 -1
  138. package/dist/esm/components/DualListSelector/DualListSelectorContext.js +1 -1
  139. package/dist/esm/components/DualListSelector/DualListSelectorContext.js.map +1 -1
  140. package/dist/esm/components/DualListSelector/DualListSelectorListWrapper.d.ts.map +1 -1
  141. package/dist/esm/components/DualListSelector/DualListSelectorListWrapper.js +1 -1
  142. package/dist/esm/components/DualListSelector/DualListSelectorListWrapper.js.map +1 -1
  143. package/dist/esm/components/DualListSelector/DualListSelectorTree.d.ts.map +1 -1
  144. package/dist/esm/components/DualListSelector/DualListSelectorTree.js +4 -1
  145. package/dist/esm/components/DualListSelector/DualListSelectorTree.js.map +1 -1
  146. package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.d.ts +5 -0
  147. package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -1
  148. package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.js +8 -4
  149. package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -1
  150. package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts +5 -1
  151. package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
  152. package/dist/esm/components/ExpandableSection/ExpandableSection.js +6 -2
  153. package/dist/esm/components/ExpandableSection/ExpandableSection.js.map +1 -1
  154. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.d.ts +2 -0
  155. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
  156. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js +4 -3
  157. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
  158. package/dist/esm/components/Form/FormFieldGroupExpandable.d.ts +5 -0
  159. package/dist/esm/components/Form/FormFieldGroupExpandable.d.ts.map +1 -1
  160. package/dist/esm/components/Form/FormFieldGroupExpandable.js +2 -2
  161. package/dist/esm/components/Form/FormFieldGroupExpandable.js.map +1 -1
  162. package/dist/esm/components/Form/InternalFormFieldGroup.d.ts +5 -0
  163. package/dist/esm/components/Form/InternalFormFieldGroup.d.ts.map +1 -1
  164. package/dist/esm/components/Form/InternalFormFieldGroup.js +2 -2
  165. package/dist/esm/components/Form/InternalFormFieldGroup.js.map +1 -1
  166. package/dist/esm/components/Label/Label.js +57 -57
  167. package/dist/esm/components/Label/Label.js.map +1 -1
  168. package/dist/esm/components/Menu/Menu.js +3 -3
  169. package/dist/esm/components/Menu/Menu.js.map +1 -1
  170. package/dist/esm/components/MenuToggle/MenuToggle.d.ts +2 -0
  171. package/dist/esm/components/MenuToggle/MenuToggle.d.ts.map +1 -1
  172. package/dist/esm/components/MenuToggle/MenuToggle.js +4 -3
  173. package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
  174. package/dist/esm/components/Nav/NavExpandable.d.ts.map +1 -1
  175. package/dist/esm/components/Nav/NavExpandable.js +1 -1
  176. package/dist/esm/components/Nav/NavExpandable.js.map +1 -1
  177. package/dist/esm/components/Page/PageToggleButton.d.ts +4 -0
  178. package/dist/esm/components/Page/PageToggleButton.d.ts.map +1 -1
  179. package/dist/esm/components/Page/PageToggleButton.js +2 -2
  180. package/dist/esm/components/Page/PageToggleButton.js.map +1 -1
  181. package/dist/esm/components/Popover/Popover.d.ts.map +1 -1
  182. package/dist/esm/components/Popover/Popover.js +11 -1
  183. package/dist/esm/components/Popover/Popover.js.map +1 -1
  184. package/dist/esm/components/SearchInput/AdvancedSearchMenu.d.ts.map +1 -1
  185. package/dist/esm/components/SearchInput/AdvancedSearchMenu.js +13 -19
  186. package/dist/esm/components/SearchInput/AdvancedSearchMenu.js.map +1 -1
  187. package/dist/esm/components/SearchInput/SearchInput.d.ts +4 -0
  188. package/dist/esm/components/SearchInput/SearchInput.d.ts.map +1 -1
  189. package/dist/esm/components/SearchInput/SearchInput.js +37 -13
  190. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  191. package/dist/esm/components/Tabs/OverflowTab.d.ts +26 -0
  192. package/dist/esm/components/Tabs/OverflowTab.d.ts.map +1 -1
  193. package/dist/esm/components/Tabs/OverflowTab.js +2 -2
  194. package/dist/esm/components/Tabs/OverflowTab.js.map +1 -1
  195. package/dist/esm/components/Tabs/Tab.d.ts.map +1 -1
  196. package/dist/esm/components/Tabs/Tab.js +5 -2
  197. package/dist/esm/components/Tabs/Tab.js.map +1 -1
  198. package/dist/esm/components/Tabs/Tabs.d.ts +10 -0
  199. package/dist/esm/components/Tabs/Tabs.d.ts.map +1 -1
  200. package/dist/esm/components/Tabs/Tabs.js +46 -12
  201. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  202. package/dist/esm/components/Tabs/TabsContext.d.ts +1 -0
  203. package/dist/esm/components/Tabs/TabsContext.d.ts.map +1 -1
  204. package/dist/esm/components/Tabs/TabsContext.js +1 -0
  205. package/dist/esm/components/Tabs/TabsContext.js.map +1 -1
  206. package/dist/esm/components/TreeView/TreeView.d.ts +5 -0
  207. package/dist/esm/components/TreeView/TreeView.d.ts.map +1 -1
  208. package/dist/esm/components/TreeView/TreeView.js +5 -5
  209. package/dist/esm/components/TreeView/TreeView.js.map +1 -1
  210. package/dist/esm/components/TreeView/TreeViewListItem.d.ts +5 -0
  211. package/dist/esm/components/TreeView/TreeViewListItem.d.ts.map +1 -1
  212. package/dist/esm/components/TreeView/TreeViewListItem.js +8 -4
  213. package/dist/esm/components/TreeView/TreeViewListItem.js.map +1 -1
  214. package/dist/esm/components/TreeView/TreeViewRoot.d.ts.map +1 -1
  215. package/dist/esm/components/TreeView/TreeViewRoot.js +2 -2
  216. package/dist/esm/components/TreeView/TreeViewRoot.js.map +1 -1
  217. package/dist/esm/components/Truncate/Truncate.d.ts +11 -8
  218. package/dist/esm/components/Truncate/Truncate.d.ts.map +1 -1
  219. package/dist/esm/components/Truncate/Truncate.js +16 -9
  220. package/dist/esm/components/Truncate/Truncate.js.map +1 -1
  221. package/dist/esm/demos/DashboardHeader.d.ts.map +1 -1
  222. package/dist/esm/demos/DashboardHeader.js +1 -2
  223. package/dist/esm/demos/DashboardHeader.js.map +1 -1
  224. package/dist/esm/demos/sampleData.d.ts.map +1 -1
  225. package/dist/esm/demos/sampleData.js +225 -226
  226. package/dist/esm/demos/sampleData.js.map +1 -1
  227. package/dist/esm/demos/sampleDataRTL.d.ts +7 -0
  228. package/dist/esm/demos/sampleDataRTL.d.ts.map +1 -0
  229. package/dist/esm/demos/sampleDataRTL.js +128 -0
  230. package/dist/esm/demos/sampleDataRTL.js.map +1 -0
  231. package/dist/esm/helpers/KeyboardHandler.js +3 -2
  232. package/dist/esm/helpers/KeyboardHandler.js.map +1 -1
  233. package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
  234. package/dist/esm/helpers/Popper/Popper.js +1 -0
  235. package/dist/esm/helpers/Popper/Popper.js.map +1 -1
  236. package/dist/esm/helpers/util.d.ts +17 -0
  237. package/dist/esm/helpers/util.d.ts.map +1 -1
  238. package/dist/esm/helpers/util.js +36 -0
  239. package/dist/esm/helpers/util.js.map +1 -1
  240. package/dist/js/components/Alert/AlertGroupInline.d.ts.map +1 -1
  241. package/dist/js/components/Alert/AlertGroupInline.js +6 -0
  242. package/dist/js/components/Alert/AlertGroupInline.js.map +1 -1
  243. package/dist/js/components/Button/Button.d.ts +12 -0
  244. package/dist/js/components/Button/Button.d.ts.map +1 -1
  245. package/dist/js/components/Button/Button.js +33 -3
  246. package/dist/js/components/Button/Button.js.map +1 -1
  247. package/dist/js/components/Button/hamburgerIcon.d.ts +2 -0
  248. package/dist/js/components/Button/hamburgerIcon.d.ts.map +1 -0
  249. package/dist/js/components/Button/hamburgerIcon.js +11 -0
  250. package/dist/js/components/Button/hamburgerIcon.js.map +1 -0
  251. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  252. package/dist/js/components/ClipboardCopy/ClipboardCopy.js +2 -2
  253. package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  254. package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.js +1 -1
  255. package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.js.map +1 -1
  256. package/dist/js/components/DualListSelector/DualListSelector.d.ts +5 -0
  257. package/dist/js/components/DualListSelector/DualListSelector.d.ts.map +1 -1
  258. package/dist/js/components/DualListSelector/DualListSelector.js +4 -3
  259. package/dist/js/components/DualListSelector/DualListSelector.js.map +1 -1
  260. package/dist/js/components/DualListSelector/DualListSelectorContext.d.ts +1 -0
  261. package/dist/js/components/DualListSelector/DualListSelectorContext.d.ts.map +1 -1
  262. package/dist/js/components/DualListSelector/DualListSelectorContext.js +1 -1
  263. package/dist/js/components/DualListSelector/DualListSelectorContext.js.map +1 -1
  264. package/dist/js/components/DualListSelector/DualListSelectorListWrapper.d.ts.map +1 -1
  265. package/dist/js/components/DualListSelector/DualListSelectorListWrapper.js +1 -1
  266. package/dist/js/components/DualListSelector/DualListSelectorListWrapper.js.map +1 -1
  267. package/dist/js/components/DualListSelector/DualListSelectorTree.d.ts.map +1 -1
  268. package/dist/js/components/DualListSelector/DualListSelectorTree.js +4 -1
  269. package/dist/js/components/DualListSelector/DualListSelectorTree.js.map +1 -1
  270. package/dist/js/components/DualListSelector/DualListSelectorTreeItem.d.ts +5 -0
  271. package/dist/js/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -1
  272. package/dist/js/components/DualListSelector/DualListSelectorTreeItem.js +7 -3
  273. package/dist/js/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -1
  274. package/dist/js/components/ExpandableSection/ExpandableSection.d.ts +5 -1
  275. package/dist/js/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
  276. package/dist/js/components/ExpandableSection/ExpandableSection.js +6 -2
  277. package/dist/js/components/ExpandableSection/ExpandableSection.js.map +1 -1
  278. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts +2 -0
  279. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
  280. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js +4 -3
  281. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
  282. package/dist/js/components/Form/FormFieldGroupExpandable.d.ts +5 -0
  283. package/dist/js/components/Form/FormFieldGroupExpandable.d.ts.map +1 -1
  284. package/dist/js/components/Form/FormFieldGroupExpandable.js +2 -2
  285. package/dist/js/components/Form/FormFieldGroupExpandable.js.map +1 -1
  286. package/dist/js/components/Form/InternalFormFieldGroup.d.ts +5 -0
  287. package/dist/js/components/Form/InternalFormFieldGroup.d.ts.map +1 -1
  288. package/dist/js/components/Form/InternalFormFieldGroup.js +2 -2
  289. package/dist/js/components/Form/InternalFormFieldGroup.js.map +1 -1
  290. package/dist/js/components/Label/Label.js +57 -57
  291. package/dist/js/components/Label/Label.js.map +1 -1
  292. package/dist/js/components/Menu/Menu.js +3 -3
  293. package/dist/js/components/Menu/Menu.js.map +1 -1
  294. package/dist/js/components/MenuToggle/MenuToggle.d.ts +2 -0
  295. package/dist/js/components/MenuToggle/MenuToggle.d.ts.map +1 -1
  296. package/dist/js/components/MenuToggle/MenuToggle.js +4 -3
  297. package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
  298. package/dist/js/components/Nav/NavExpandable.d.ts.map +1 -1
  299. package/dist/js/components/Nav/NavExpandable.js +1 -1
  300. package/dist/js/components/Nav/NavExpandable.js.map +1 -1
  301. package/dist/js/components/Page/PageToggleButton.d.ts +4 -0
  302. package/dist/js/components/Page/PageToggleButton.d.ts.map +1 -1
  303. package/dist/js/components/Page/PageToggleButton.js +2 -2
  304. package/dist/js/components/Page/PageToggleButton.js.map +1 -1
  305. package/dist/js/components/Popover/Popover.d.ts.map +1 -1
  306. package/dist/js/components/Popover/Popover.js +11 -1
  307. package/dist/js/components/Popover/Popover.js.map +1 -1
  308. package/dist/js/components/SearchInput/AdvancedSearchMenu.d.ts.map +1 -1
  309. package/dist/js/components/SearchInput/AdvancedSearchMenu.js +12 -18
  310. package/dist/js/components/SearchInput/AdvancedSearchMenu.js.map +1 -1
  311. package/dist/js/components/SearchInput/SearchInput.d.ts +4 -0
  312. package/dist/js/components/SearchInput/SearchInput.d.ts.map +1 -1
  313. package/dist/js/components/SearchInput/SearchInput.js +36 -12
  314. package/dist/js/components/SearchInput/SearchInput.js.map +1 -1
  315. package/dist/js/components/Tabs/OverflowTab.d.ts +26 -0
  316. package/dist/js/components/Tabs/OverflowTab.d.ts.map +1 -1
  317. package/dist/js/components/Tabs/OverflowTab.js +2 -2
  318. package/dist/js/components/Tabs/OverflowTab.js.map +1 -1
  319. package/dist/js/components/Tabs/Tab.d.ts.map +1 -1
  320. package/dist/js/components/Tabs/Tab.js +4 -1
  321. package/dist/js/components/Tabs/Tab.js.map +1 -1
  322. package/dist/js/components/Tabs/Tabs.d.ts +10 -0
  323. package/dist/js/components/Tabs/Tabs.d.ts.map +1 -1
  324. package/dist/js/components/Tabs/Tabs.js +45 -11
  325. package/dist/js/components/Tabs/Tabs.js.map +1 -1
  326. package/dist/js/components/Tabs/TabsContext.d.ts +1 -0
  327. package/dist/js/components/Tabs/TabsContext.d.ts.map +1 -1
  328. package/dist/js/components/Tabs/TabsContext.js +1 -0
  329. package/dist/js/components/Tabs/TabsContext.js.map +1 -1
  330. package/dist/js/components/TreeView/TreeView.d.ts +5 -0
  331. package/dist/js/components/TreeView/TreeView.d.ts.map +1 -1
  332. package/dist/js/components/TreeView/TreeView.js +5 -5
  333. package/dist/js/components/TreeView/TreeView.js.map +1 -1
  334. package/dist/js/components/TreeView/TreeViewListItem.d.ts +5 -0
  335. package/dist/js/components/TreeView/TreeViewListItem.d.ts.map +1 -1
  336. package/dist/js/components/TreeView/TreeViewListItem.js +7 -3
  337. package/dist/js/components/TreeView/TreeViewListItem.js.map +1 -1
  338. package/dist/js/components/TreeView/TreeViewRoot.d.ts.map +1 -1
  339. package/dist/js/components/TreeView/TreeViewRoot.js +2 -2
  340. package/dist/js/components/TreeView/TreeViewRoot.js.map +1 -1
  341. package/dist/js/components/Truncate/Truncate.d.ts +11 -8
  342. package/dist/js/components/Truncate/Truncate.d.ts.map +1 -1
  343. package/dist/js/components/Truncate/Truncate.js +15 -9
  344. package/dist/js/components/Truncate/Truncate.js.map +1 -1
  345. package/dist/js/demos/DashboardHeader.d.ts.map +1 -1
  346. package/dist/js/demos/DashboardHeader.js +1 -2
  347. package/dist/js/demos/DashboardHeader.js.map +1 -1
  348. package/dist/js/demos/sampleData.d.ts.map +1 -1
  349. package/dist/js/demos/sampleData.js +225 -226
  350. package/dist/js/demos/sampleData.js.map +1 -1
  351. package/dist/js/demos/sampleDataRTL.d.ts +7 -0
  352. package/dist/js/demos/sampleDataRTL.d.ts.map +1 -0
  353. package/dist/js/demos/sampleDataRTL.js +131 -0
  354. package/dist/js/demos/sampleDataRTL.js.map +1 -0
  355. package/dist/js/helpers/KeyboardHandler.js +3 -2
  356. package/dist/js/helpers/KeyboardHandler.js.map +1 -1
  357. package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
  358. package/dist/js/helpers/Popper/Popper.js +1 -0
  359. package/dist/js/helpers/Popper/Popper.js.map +1 -1
  360. package/dist/js/helpers/util.d.ts +17 -0
  361. package/dist/js/helpers/util.d.ts.map +1 -1
  362. package/dist/js/helpers/util.js +39 -1
  363. package/dist/js/helpers/util.js.map +1 -1
  364. package/dist/styles/assets/images/icon-help.hbs +3 -0
  365. package/dist/styles/assets/images/icon-outlined-star.hbs +3 -0
  366. package/dist/styles/assets/images/icon-star.hbs +3 -0
  367. package/dist/styles/base-no-reset.css +52 -11
  368. package/dist/styles/base.css +52 -11
  369. package/dist/umd/assets/{output-B5tbNQwm.css → output-BvTy70LD.css} +15500 -14758
  370. package/dist/umd/react-core.min.js +3 -3
  371. package/helpers/package.json +1 -1
  372. package/layouts/package.json +1 -1
  373. package/next/package.json +1 -1
  374. package/package.json +6 -6
  375. package/src/components/Alert/AlertGroupInline.tsx +13 -2
  376. package/src/components/Button/Button.tsx +78 -5
  377. package/src/components/Button/__tests__/Button.test.tsx +380 -74
  378. package/src/components/Button/__tests__/__snapshots__/Button.test.tsx.snap +1 -1
  379. package/src/components/Button/examples/Button.md +57 -14
  380. package/src/components/Button/examples/ButtonFavorite.tsx +18 -0
  381. package/src/components/Button/examples/ButtonHamburger.tsx +9 -0
  382. package/src/components/Button/examples/ButtonSettings.tsx +10 -0
  383. package/src/components/Button/hamburgerIcon.tsx +13 -0
  384. package/src/components/Card/examples/Card.md +1 -1
  385. package/src/components/Card/examples/CardSelectable.tsx +73 -60
  386. package/src/components/Card/examples/CardSingleSelectable.tsx +65 -48
  387. package/src/components/ClipboardCopy/ClipboardCopy.tsx +2 -1
  388. package/src/components/ClipboardCopy/ClipboardCopyToggle.tsx +1 -1
  389. package/src/components/ClipboardCopy/__tests__/ClipboardCopyToggle.test.tsx +7 -1
  390. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyToggle.test.tsx.snap +0 -1
  391. package/src/components/DualListSelector/DualListSelector.tsx +18 -4
  392. package/src/components/DualListSelector/DualListSelectorContext.ts +2 -1
  393. package/src/components/DualListSelector/DualListSelectorListWrapper.tsx +8 -5
  394. package/src/components/DualListSelector/DualListSelectorTree.tsx +4 -0
  395. package/src/components/DualListSelector/DualListSelectorTreeItem.tsx +17 -2
  396. package/src/components/DualListSelector/__tests__/DualListSelector.test.tsx +32 -1
  397. package/src/components/DualListSelector/__tests__/DualListSelectorTreeItem.test.tsx +55 -0
  398. package/src/components/DualListSelector/examples/DualListSelectorTree.tsx +1 -1
  399. package/src/components/ExpandableSection/ExpandableSection.tsx +13 -1
  400. package/src/components/ExpandableSection/ExpandableSectionToggle.tsx +5 -1
  401. package/src/components/ExpandableSection/__tests__/ExpandableSection.test.tsx +85 -23
  402. package/src/components/ExpandableSection/__tests__/ExpandableSectionToggle.test.tsx +32 -0
  403. package/src/components/ExpandableSection/__tests__/__snapshots__/ExpandableSection.test.tsx.snap +1 -63
  404. package/src/components/ExpandableSection/examples/ExpandableSection.md +2 -0
  405. package/src/components/ExpandableSection/examples/ExpandableSectionDetached.tsx +1 -1
  406. package/src/components/Form/FormFieldGroupExpandable.tsx +7 -0
  407. package/src/components/Form/InternalFormFieldGroup.tsx +19 -3
  408. package/src/components/Form/__tests__/FormFieldGroupExpandable.test.tsx +55 -0
  409. package/src/components/Form/examples/FormFieldGroups.tsx +7 -1
  410. package/src/components/Label/Label.tsx +63 -63
  411. package/src/components/Masthead/examples/MastheadBasic.tsx +1 -2
  412. package/src/components/Masthead/examples/MastheadBasicMixedContent.tsx +1 -2
  413. package/src/components/Masthead/examples/MastheadDisplayInline.tsx +1 -2
  414. package/src/components/Masthead/examples/MastheadDisplayStack.tsx +1 -2
  415. package/src/components/Masthead/examples/MastheadDisplayStackInlineResponsive.tsx +1 -2
  416. package/src/components/Masthead/examples/MastheadInsets.tsx +1 -2
  417. package/src/components/Masthead/examples/MastheadLogoCustomComponent.tsx +1 -2
  418. package/src/components/Menu/Menu.tsx +3 -3
  419. package/src/components/MenuToggle/MenuToggle.tsx +6 -1
  420. package/src/components/MenuToggle/__tests__/MenuToggle.test.tsx +59 -45
  421. package/src/components/MenuToggle/__tests__/__snapshots__/MenuToggle.test.tsx.snap +9 -9
  422. package/src/components/MenuToggle/examples/MenuToggle.md +14 -30
  423. package/src/components/MenuToggle/examples/MenuToggleCustomIcon.tsx +17 -0
  424. package/src/components/MenuToggle/examples/MenuToggleSettings.tsx +8 -0
  425. package/src/components/Nav/NavExpandable.tsx +6 -1
  426. package/src/components/Nav/__tests__/Generated/__snapshots__/NavExpandable.test.tsx.snap +1 -0
  427. package/src/components/Nav/__tests__/NavExpandable.test.tsx +15 -0
  428. package/src/components/Nav/__tests__/__snapshots__/Nav.test.tsx.snap +3 -0
  429. package/src/components/Page/PageToggleButton.tsx +9 -2
  430. package/src/components/Page/examples/Page.md +1 -1
  431. package/src/components/Page/examples/PageCenteredSection.tsx +4 -8
  432. package/src/components/Page/examples/PageGroupSection.tsx +2 -5
  433. package/src/components/Page/examples/PageMainSectionPadding.tsx +2 -5
  434. package/src/components/Page/examples/PageMainSectionVariations.tsx +2 -5
  435. package/src/components/Page/examples/PageMultipleSidebarBody.tsx +2 -5
  436. package/src/components/Page/examples/PageUncontrolledNav.tsx +1 -4
  437. package/src/components/Page/examples/PageVerticalNav.tsx +2 -5
  438. package/src/components/Page/examples/PageWithOrWithoutFill.tsx +2 -5
  439. package/src/components/Popover/Popover.tsx +13 -1
  440. package/src/components/SearchInput/AdvancedSearchMenu.tsx +15 -23
  441. package/src/components/SearchInput/SearchInput.tsx +111 -15
  442. package/src/components/SearchInput/__tests__/SearchInput.test.tsx +84 -0
  443. package/src/components/SearchInput/examples/SearchInput.md +11 -2
  444. package/src/components/SearchInput/examples/SearchInputWithExpandable.tsx +6 -1
  445. package/src/components/Skeleton/examples/SkeletonText.tsx +0 -1
  446. package/src/components/Tabs/OverflowTab.tsx +29 -0
  447. package/src/components/Tabs/Tab.tsx +6 -2
  448. package/src/components/Tabs/Tabs.tsx +76 -11
  449. package/src/components/Tabs/TabsContext.ts +2 -0
  450. package/src/components/Tabs/__tests__/Tabs.test.tsx +65 -1
  451. package/src/components/Tabs/__tests__/__snapshots__/Tabs.test.tsx.snap +39 -26
  452. package/src/components/Tabs/examples/Tabs.md +1 -1
  453. package/src/components/Timestamp/examples/TimestampBasicFormats.tsx +1 -1
  454. package/src/components/Timestamp/examples/TimestampDefaultTooltip.tsx +1 -1
  455. package/src/components/TreeView/TreeView.tsx +9 -0
  456. package/src/components/TreeView/TreeViewListItem.tsx +18 -5
  457. package/src/components/TreeView/TreeViewRoot.tsx +4 -2
  458. package/src/components/TreeView/__tests__/TreeView.test.tsx +8 -1
  459. package/src/components/TreeView/__tests__/TreeViewList.test.tsx +39 -0
  460. package/src/components/TreeView/__tests__/TreeViewListItem.test.tsx +17 -3
  461. package/src/components/TreeView/__tests__/__snapshots__/TreeView.test.tsx.snap +3 -0
  462. package/src/components/TreeView/examples/TreeViewCompact.tsx +1 -1
  463. package/src/components/TreeView/examples/TreeViewCompactNoBackground.tsx +8 -1
  464. package/src/components/TreeView/examples/TreeViewGuides.tsx +1 -1
  465. package/src/components/TreeView/examples/TreeViewMultiselectable.tsx +1 -0
  466. package/src/components/TreeView/examples/TreeViewSelectionExpansion.tsx +1 -0
  467. package/src/components/TreeView/examples/TreeViewSingleSelectable.tsx +1 -0
  468. package/src/components/TreeView/examples/TreeViewWithActionItems.tsx +1 -0
  469. package/src/components/TreeView/examples/TreeViewWithBadges.tsx +1 -0
  470. package/src/components/TreeView/examples/TreeViewWithCheckboxes.tsx +9 -1
  471. package/src/components/TreeView/examples/TreeViewWithCustomBadges.tsx +1 -0
  472. package/src/components/TreeView/examples/TreeViewWithIconPerItem.tsx +1 -0
  473. package/src/components/TreeView/examples/TreeViewWithIcons.tsx +1 -0
  474. package/src/components/TreeView/examples/TreeViewWithMemoization.tsx +1 -0
  475. package/src/components/TreeView/examples/TreeViewWithSearch.tsx +1 -0
  476. package/src/components/Truncate/Truncate.tsx +40 -19
  477. package/src/components/Truncate/__tests__/Truncate.test.tsx +24 -0
  478. package/src/components/Truncate/examples/Truncate.md +8 -0
  479. package/src/components/Truncate/examples/TruncateLinks.tsx +22 -0
  480. package/src/demos/CardDemos.md +1 -1
  481. package/src/demos/DashboardHeader.tsx +2 -5
  482. package/src/demos/NotificationDrawer/examples/NotificationDrawerBasic.tsx +2 -5
  483. package/src/demos/NotificationDrawer/examples/NotificationDrawerGrouped.tsx +2 -5
  484. package/src/demos/RTL/RTL.md +1 -0
  485. package/src/demos/RTL/examples/PaginatedTable.tsx +18 -53
  486. package/src/demos/examples/Card/CardAggregateStatus.tsx +2 -6
  487. package/src/demos/examples/Card/CardDetails.tsx +2 -3
  488. package/src/demos/examples/Card/CardEventsView.tsx +2 -3
  489. package/src/demos/examples/Card/CardLogView.tsx +2 -3
  490. package/src/demos/examples/Card/CardStatus.tsx +0 -1
  491. package/src/demos/examples/Card/CardUtilizationDemo3.tsx +0 -1
  492. package/src/demos/examples/Masthead/MastheadWithHorizontalNav.tsx +1 -1
  493. package/src/demos/examples/Masthead/MastheadWithUtilitiesAndUserDropdownMenu.tsx +2 -5
  494. package/src/demos/examples/Nav/NavFlyout.tsx +3 -6
  495. package/src/demos/examples/Nav/NavHorizontal.tsx +1 -1
  496. package/src/demos/examples/Nav/NavHorizontalWithSubnav.tsx +2 -5
  497. package/src/demos/examples/Nav/NavManual.tsx +3 -6
  498. package/src/demos/examples/Page/PageContextSelector.tsx +3 -6
  499. package/src/demos/examples/Page/PageStickySectionBreadcrumb.tsx +2 -5
  500. package/src/demos/examples/Page/PageStickySectionGroup.tsx +2 -5
  501. package/src/demos/examples/Page/PageStickySectionGroupAlternate.tsx +2 -5
  502. package/src/demos/examples/Toolbar/ConsoleLogViewerToolbar.tsx +2 -3
  503. package/src/demos/examples/Wizard/InPageWithDrawer.tsx +1 -4
  504. package/src/demos/examples/Wizard/InPageWithDrawerInformationalStep.tsx +1 -4
  505. package/src/demos/sampleData.tsx +225 -227
  506. package/src/demos/sampleDataRTL.tsx +133 -0
  507. package/src/helpers/KeyboardHandler.tsx +2 -2
  508. package/src/helpers/Popper/Popper.tsx +1 -0
  509. package/src/helpers/util.ts +45 -0
  510. package/src/demos/RTL/examples/PaginatedTable.jsx +0 -504
@@ -2,17 +2,22 @@ import { render, screen } from '@testing-library/react';
2
2
  import { Button, ButtonState, ButtonVariant } from '../Button';
3
3
  import styles from '@patternfly/react-styles/css/components/Button/button';
4
4
 
5
+ const { primary, secondary, tertiary, danger, warning, link, plain, control, stateful } = ButtonVariant;
6
+ const validDangerVariants = [secondary, link];
7
+ const invalidDangerVariants = [primary, tertiary, warning, plain, control, stateful];
8
+ const invalidInlineVariants = [primary, secondary, tertiary, danger, warning, plain, control, stateful];
9
+
5
10
  Object.values(ButtonVariant).forEach((variant) => {
6
11
  if (variant !== 'primary') {
7
- test(`Does not render with class pf-m-${variant} by default`, () => {
12
+ test(`Does not render with class ${styles.modifiers[variant]} by default`, () => {
8
13
  render(<Button>Not {variant} Button</Button>);
9
- expect(screen.getByRole('button')).not.toHaveClass(`pf-m-${variant}`);
14
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers[variant]);
10
15
  });
11
16
  }
12
17
 
13
- test(`Renders with class pf-m-${variant} when variant=${variant}`, () => {
18
+ test(`Renders with class ${styles.modifiers[variant]} when variant=${variant}`, () => {
14
19
  render(<Button variant={variant}>{variant} Button</Button>);
15
- expect(screen.getByRole('button')).toHaveClass(`pf-m-${variant}`);
20
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers[variant]);
16
21
  });
17
22
  });
18
23
 
@@ -26,14 +31,14 @@ test('Renders without children', () => {
26
31
  expect(screen.getByTestId('container').firstChild).toBeVisible();
27
32
  });
28
33
 
29
- test('Renders with class pf-v6-c-button by default', () => {
34
+ test(`Renders with class ${styles.button} by default`, () => {
30
35
  render(<Button>Button</Button>);
31
- expect(screen.getByRole('button')).toHaveClass('pf-v6-c-button');
36
+ expect(screen.getByRole('button')).toHaveClass(styles.button);
32
37
  });
33
38
 
34
- test('Renders with class pf-m-primary by default', () => {
39
+ test(`Renders with class ${styles.modifiers.primary} by default`, () => {
35
40
  render(<Button>Button</Button>);
36
- expect(screen.getByText('Button').parentElement).toHaveClass('pf-m-primary');
41
+ expect(screen.getByText('Button').parentElement).toHaveClass(styles.modifiers.primary);
37
42
  });
38
43
 
39
44
  test('Renders with custom class', () => {
@@ -48,28 +53,28 @@ test('Renders with an aria-label', () => {
48
53
  expect(screen.getByLabelText(label)).toHaveAccessibleName('aria-label test');
49
54
  });
50
55
 
51
- test('Renders with class pf-m-block when isBlock = true', () => {
56
+ test(`Renders with class ${styles.modifiers.block} when isBlock = true`, () => {
52
57
  render(<Button isBlock>Block Button</Button>);
53
- expect(screen.getByRole('button')).toHaveClass('pf-m-block');
58
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.block);
54
59
  });
55
60
 
56
- test('Renders with class pf-m-clicked when isClicked = true', () => {
61
+ test(`Renders with class ${styles.modifiers.clicked} when isClicked = true`, () => {
57
62
  render(<Button isClicked>Clicked Button</Button>);
58
- expect(screen.getByRole('button')).toHaveClass('pf-m-clicked');
63
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.clicked);
59
64
  });
60
65
 
61
- test('Does not render with class pf-m-disabled by default when isDisabled = true', () => {
66
+ test(`Does not render with class ${styles.modifiers.disabled} by default when isDisabled = true`, () => {
62
67
  render(<Button isDisabled>Disabled Button</Button>);
63
- expect(screen.getByRole('button')).not.toHaveClass('pf-m-disabled');
68
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers.disabled);
64
69
  });
65
70
 
66
- test('Renders with class pf-m-disabled when isDisabled = true and component is not a button', () => {
71
+ test(`Renders with class ${styles.modifiers.disabled} when isDisabled = true and component is not a button`, () => {
67
72
  render(
68
73
  <Button isDisabled component="a">
69
74
  Disabled Anchor Button
70
75
  </Button>
71
76
  );
72
- expect(screen.getByText('Disabled Anchor Button').parentElement).toHaveClass('pf-m-disabled');
77
+ expect(screen.getByText('Disabled Anchor Button').parentElement).toHaveClass(styles.modifiers.disabled);
73
78
  });
74
79
 
75
80
  test(`aria-disabled and class ${styles.modifiers.ariaDisabled} are not rendered when isAriaDisabled is not passed by default`, () => {
@@ -105,120 +110,117 @@ test('Does not disable button when isDisabled = true and component = a', () => {
105
110
  expect(screen.getByText('Disabled yet focusable button')).not.toHaveProperty('disabled');
106
111
  });
107
112
 
108
- test('Renders with class pf-m-unread by default when variant = stateful', () => {
113
+ test(`Renders with class ${styles.modifiers.unread} by default when variant = stateful`, () => {
109
114
  render(<Button variant="stateful">Stateful Button</Button>);
110
- expect(screen.getByRole('button')).toHaveClass('pf-m-stateful', 'pf-m-unread');
115
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.unread);
111
116
  });
112
117
 
113
118
  Object.values(ButtonState).forEach((state) => {
114
- test(`Renders with class pf-m-${state} when state = ${state} and variant = stateful`, () => {
119
+ test(`Renders with class ${styles.modifiers[state]} when state = ${state} and variant = stateful`, () => {
115
120
  render(
116
121
  <Button variant="stateful" state={state}>
117
122
  Stateful Button - {state}
118
123
  </Button>
119
124
  );
120
- expect(screen.getByRole('button')).toHaveClass('pf-m-stateful', `pf-m-${state}`);
125
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers[state]);
121
126
  });
122
127
  });
123
128
 
124
- test('Renders with class pf-m-danger when isDanger = true and variant = secondary', () => {
125
- render(
126
- <Button variant="secondary" isDanger>
127
- Danger Button
128
- </Button>
129
- );
130
- expect(screen.getByRole('button')).toHaveClass('pf-m-danger', 'pf-m-secondary');
129
+ Object.values(validDangerVariants).forEach((validDangerVariant) => {
130
+ test(`Renders with class ${styles.modifiers.danger} when isDanger is true and variant = ${validDangerVariant}`, () => {
131
+ render(
132
+ <Button variant={validDangerVariant} isDanger>
133
+ Danger Button
134
+ </Button>
135
+ );
136
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.danger);
137
+ });
131
138
  });
132
139
 
133
- test('Renders with class pf-m-danger when isDanger = true and variant = link', () => {
134
- render(
135
- <Button variant="link" isDanger>
136
- Danger Button
137
- </Button>
138
- );
139
- expect(screen.getByRole('button')).toHaveClass('pf-m-danger', 'pf-m-link');
140
+ Object.values(invalidDangerVariants).forEach((invalidDangerVariant) => {
141
+ test(`Does not render with class ${styles.modifiers.danger} when isDanger is true and variant = ${invalidDangerVariant}`, () => {
142
+ render(
143
+ <Button variant={invalidDangerVariant} isDanger>
144
+ Danger Button
145
+ </Button>
146
+ );
147
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers.danger);
148
+ });
140
149
  });
141
150
 
142
- test('Does not render with class pf-m-danger when isDanger = true and variant != secondary or link', () => {
151
+ test(`Renders with class ${styles.modifiers.inline} when isInline = true and variant = link`, () => {
143
152
  render(
144
- <Button variant="primary" isDanger>
145
- Danger Button
153
+ <Button variant={ButtonVariant.link} isInline>
154
+ Inline Button
146
155
  </Button>
147
156
  );
148
- expect(screen.getByRole('button')).not.toHaveClass('pf-m-danger');
157
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.inline);
149
158
  });
150
159
 
151
- test('Does not render with class pf-m-danger when isDanger = true and variant = tertiary', () => {
152
- render(
153
- <Button variant="tertiary" isDanger>
154
- Danger Button
155
- </Button>
156
- );
157
- expect(screen.getByRole('button')).not.toHaveClass('pf-m-danger');
160
+ Object.values(invalidInlineVariants).forEach((invalidInlineVariant) => {
161
+ test(`Does not render with class ${styles.modifiers.inline} when isInline is true and variant = ${invalidInlineVariants}`, () => {
162
+ render(
163
+ <Button variant={invalidInlineVariants} isInline>
164
+ Inline Button
165
+ </Button>
166
+ );
167
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers.inline);
168
+ });
158
169
  });
159
170
 
160
- test('Does not render with class pf-m-danger when isDanger = true and variant = control', () => {
161
- render(
162
- <Button variant="control" isDanger>
163
- Danger Button
164
- </Button>
165
- );
166
- expect(screen.getByRole('button')).not.toHaveClass('pf-m-danger');
171
+ test(`Renders with class ${styles.modifiers.small} when size = sm`, () => {
172
+ render(<Button size="sm">Small Button</Button>);
173
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.small);
167
174
  });
168
175
 
169
- test('Renders with class pf-m-inline when isInline = true and variant = link', () => {
176
+ test(`Renders with class ${styles.modifiers.displayLg} when size = lg`, () => {
177
+ render(<Button size="lg">Large Button</Button>);
178
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.displayLg);
179
+ });
180
+
181
+ test(`Renders with classes ${styles.modifiers.inProgress} when isLoading = true`, () => {
170
182
  render(
171
- <Button variant={ButtonVariant.link} isInline>
172
- Hovered Button
183
+ <Button isLoading spinnerAriaValueText="Loading">
184
+ Loading Button
173
185
  </Button>
174
186
  );
175
- expect(screen.getByRole('button')).toHaveClass('pf-m-inline');
176
- });
177
-
178
- test('Renders with class pf-m-small when size = sm', () => {
179
- render(<Button size="sm">Small Button</Button>);
180
- expect(screen.getByRole('button')).toHaveClass('pf-m-small');
181
- });
182
-
183
- test('Renders with class pf-m-display-lg when size = lg', () => {
184
- render(<Button size="lg">Large Button</Button>);
185
- expect(screen.getByRole('button')).toHaveClass('pf-m-display-lg');
187
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.inProgress);
186
188
  });
187
189
 
188
- test('Renders with class pf-m-in-progress when isLoading = true', () => {
190
+ test(`Renders with class ${styles.modifiers.progress} when isLoading is true`, () => {
189
191
  render(
190
192
  <Button isLoading spinnerAriaValueText="Loading">
191
193
  Loading Button
192
194
  </Button>
193
195
  );
194
- expect(screen.getByRole('button')).toHaveClass('pf-m-in-progress');
196
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.progress);
195
197
  });
196
198
 
197
- test('Renders with class pf-m-progress when isLoading is defined and isLoading = false', () => {
199
+ test(`Renders with class ${styles.modifiers.progress} when isLoading is defined and isLoading = false`, () => {
198
200
  render(
199
201
  <Button isLoading={false} spinnerAriaValueText="Loading">
200
202
  Loading Button
201
203
  </Button>
202
204
  );
203
- expect(screen.getByRole('button')).toHaveClass('pf-m-progress');
205
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.progress);
204
206
  });
205
207
 
206
- test('Renders without class pf-m-progress when isLoading = false and variant = plain', () => {
208
+ test(`Renders without class ${styles.modifiers.progress} when isLoading = false and variant = plain`, () => {
207
209
  render(
208
210
  <Button variant="plain" isInline isLoading={false} aria-label="Loading" spinnerAriaValueText="Loading">
209
211
  Loading Button
210
212
  </Button>
211
213
  );
212
- expect(screen.getByRole('button')).not.toHaveClass('pf-m-progress');
214
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers.progress);
213
215
  });
214
216
 
215
- test('Renders custom icon with class pf-m-in-progress when isLoading = true and icon is present', () => {
217
+ test(`Renders custom icon with class ${styles.modifiers.inProgress} when isLoading = true and icon is present`, () => {
216
218
  render(
217
219
  <Button variant="plain" isLoading aria-label="Upload" spinnerAriaValueText="Loading" icon={<div>ICON</div>} />
218
220
  );
219
221
 
220
222
  expect(screen.getByText('ICON')).toBeVisible();
221
- expect(screen.getByText('ICON').parentElement?.parentElement).toHaveClass('pf-m-in-progress');
223
+ expect(screen.getByText('ICON').parentElement?.parentElement).toHaveClass(styles.modifiers.inProgress);
222
224
  });
223
225
 
224
226
  test('Renders as custom component when component is passed', () => {
@@ -244,6 +246,310 @@ test('setting tab index through props', () => {
244
246
  expect(screen.getByRole('button')).toHaveAttribute('tabindex', '0');
245
247
  });
246
248
 
249
+ test('Does not render aria-expanded by default', () => {
250
+ render(<Button>Test</Button>);
251
+
252
+ expect(screen.getByRole('button')).not.toHaveAttribute('aria-expanded');
253
+ });
254
+
255
+ test('Renders with aria-expanded when isExpanded is true', () => {
256
+ render(<Button isExpanded>Test</Button>);
257
+
258
+ expect(screen.getByRole('button')).toHaveAttribute('aria-expanded', 'true');
259
+ });
260
+
261
+ test('Renders with aria-expanded when isExpanded is false', () => {
262
+ render(<Button isExpanded={false}>Test</Button>);
263
+
264
+ expect(screen.getByRole('button')).toHaveAttribute('aria-expanded', 'false');
265
+ });
266
+
267
+ // Remove this test when isExpanded prop in Button code is moved to after the spread props
268
+ test('Passing aria-expanded overrides isExpanded', () => {
269
+ render(
270
+ <Button aria-expanded={false} isExpanded>
271
+ Test
272
+ </Button>
273
+ );
274
+
275
+ expect(screen.getByRole('button')).toHaveAttribute('aria-expanded', 'false');
276
+ });
277
+
278
+ describe('Hamburger button', () => {
279
+ test('Throws console error when isHamburger is true and isExpanded is not passed', () => {
280
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
281
+
282
+ render(<Button isHamburger aria-label="Test" />);
283
+
284
+ expect(consoleError).toHaveBeenCalledWith(
285
+ 'Button: when the isHamburger property is passed in, you must also pass in a boolean value to the isExpanded property. It is expected that a hamburger button controls the expansion of other content.'
286
+ );
287
+ });
288
+
289
+ test('Does not throw console error when isHamburger is true and isExpanded is false', () => {
290
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
291
+
292
+ render(<Button isExpanded={false} isHamburger aria-label="Test" />);
293
+
294
+ expect(consoleError).not.toHaveBeenCalledWith(
295
+ 'Button: when the isHamburger property is passed in, you must also pass in a boolean value to the isExpanded property. It is expected that a hamburger button controls the expansion of other content..'
296
+ );
297
+ });
298
+
299
+ test('Does not throw console error when isHamburger is true and isExpanded is true', () => {
300
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
301
+
302
+ render(<Button isExpanded isHamburger aria-label="Test" />);
303
+
304
+ expect(consoleError).not.toHaveBeenCalledWith(
305
+ 'Button: when the isHamburger property is passed in, you must also pass in a boolean value to the isExpanded property. It is expected that a hamburger button controls the expansion of other content..'
306
+ );
307
+ });
308
+
309
+ // TODO: Remove isHamburger in breaking change to throw error for any button that does not have children or aria name
310
+ test('Throws console error when isHamburger is true and neither children, aria-label nor aria-lablledby are passed', () => {
311
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
312
+
313
+ render(<Button isHamburger isExpanded />);
314
+
315
+ expect(consoleError).toHaveBeenCalledWith(
316
+ 'Button: you must provide either visible text content or an accessible name via the aria-label or aria-labelledby properties.'
317
+ );
318
+ });
319
+ // TODO: Remove isHamburger in breaking change to throw error for any button that does not have children or aria name
320
+ test('Does not throw console error when isHamburger is true and children is passed', () => {
321
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
322
+
323
+ render(
324
+ <Button isHamburger isExpanded>
325
+ Test
326
+ </Button>
327
+ );
328
+
329
+ expect(consoleError).not.toHaveBeenCalledWith(
330
+ 'Button: you must provide either visible text content or an accessible name via the aria-label or aria-labelledby properties.'
331
+ );
332
+ });
333
+
334
+ // TODO: Remove isHamburger in breaking change to throw error for any button that does not have children or aria name
335
+ test('Does not throw console error when isHamburger is true and aria-label is passed', () => {
336
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
337
+
338
+ render(<Button isHamburger isExpanded aria-label="Test" />);
339
+
340
+ expect(consoleError).not.toHaveBeenCalledWith(
341
+ 'Button: you must provide either visible text content or an accessible name via the aria-label or aria-labelledby properties.'
342
+ );
343
+ });
344
+
345
+ // TODO: Remove isHamburger in breaking change to throw error for any button that does not have children or aria name
346
+ test('Does not throw console error when isHamburger is true and aria-labelledby is passed', () => {
347
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
348
+
349
+ render(
350
+ <>
351
+ <div id="label">Test</div>
352
+ <Button isHamburger isExpanded aria-labelledby="label" />
353
+ </>
354
+ );
355
+
356
+ expect(consoleError).not.toHaveBeenCalledWith(
357
+ 'Button: you must provide either visible text content or an accessible name via the aria-label or aria-labelledby properties.'
358
+ );
359
+ });
360
+
361
+ test(`Does not render with class ${styles.modifiers.hamburger} by default`, () => {
362
+ render(<Button aria-label="test" />);
363
+
364
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers.hamburger);
365
+ });
366
+
367
+ test(`Renders with class ${styles.modifiers.hamburger} when isHamburger is true`, () => {
368
+ render(<Button isHamburger isExpanded aria-label="test" />);
369
+
370
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.hamburger);
371
+ });
372
+
373
+ test('Does not render with hamburgerVariant class when isHamburger is true and hamburgerVariant is not passed', () => {
374
+ render(<Button isHamburger isExpanded aria-label="test" />);
375
+
376
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers.expand);
377
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers.collapse);
378
+ });
379
+
380
+ test('Does not render with hamburgerVariant class when isHamburger is false and hamburgerVariant is passed', () => {
381
+ render(<Button hamburgerVariant="expand" isExpanded aria-label="test" />);
382
+
383
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers.expand);
384
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers.collapse);
385
+ });
386
+
387
+ test(`Renders with class ${styles.modifiers.expand} when isHamburger is true and hamburgerVariant = expand`, () => {
388
+ render(<Button isHamburger hamburgerVariant="expand" isExpanded aria-label="test" />);
389
+
390
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.expand);
391
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers.collapse);
392
+ });
393
+
394
+ test(`Renders with class ${styles.modifiers.collapse} when isHamburger is true and hamburgerVariant = collapse`, () => {
395
+ render(<Button isHamburger hamburgerVariant="collapse" isExpanded aria-label="test" />);
396
+
397
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers.expand);
398
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.collapse);
399
+ });
400
+
401
+ test('Does not render custom icon when icon prop and isHamburger are passed', () => {
402
+ render(<Button isHamburger isExpanded aria-label="test" icon={<div>Custom icon</div>} />);
403
+
404
+ expect(screen.queryByText('Custom icon')).not.toBeInTheDocument();
405
+ });
406
+ });
407
+
408
+ describe('Settings button', () => {
409
+ // TODO: Remove isSettings in breaking change to throw error for any button that does not have children or aria name
410
+ test('Throws console error when isSettings is true and neither children, aria-label nor aria-lablledby are passed', () => {
411
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
412
+
413
+ render(<Button isSettings />);
414
+
415
+ expect(consoleError).toHaveBeenCalledWith(
416
+ 'Button: you must provide either visible text content or an accessible name via the aria-label or aria-labelledby properties.'
417
+ );
418
+ });
419
+
420
+ // TODO: Remove isSettings in breaking change to throw error for any button that does not have children or aria name
421
+ test('Does not throw console error when isSettings is true and children is passed', () => {
422
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
423
+
424
+ render(<Button isSettings>Settings</Button>);
425
+
426
+ expect(consoleError).not.toHaveBeenCalledWith(
427
+ 'Button: you must provide either visible text content or an accessible name via the aria-label or aria-labelledby properties.'
428
+ );
429
+ });
430
+
431
+ // TODO: Remove isSettings in breaking change to throw error for any button that does not have children or aria name
432
+ test('Does not throw console error when isSettings is true and aria-label is passed', () => {
433
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
434
+
435
+ render(<Button isSettings aria-label="Test" />);
436
+
437
+ expect(consoleError).not.toHaveBeenCalledWith(
438
+ 'Button: you must provide either visible text content or an accessible name via the aria-label or aria-labelledby properties.'
439
+ );
440
+ });
441
+
442
+ // TODO: Remove isSettings in breaking change to throw error for any button that does not have children or aria name
443
+ test('Does not throw console error when isSettings is true and aria-labelledby is passed', () => {
444
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
445
+
446
+ render(
447
+ <>
448
+ <div id="label">Test</div>
449
+ <Button isSettings aria-labelledby="label" />
450
+ </>
451
+ );
452
+
453
+ expect(consoleError).not.toHaveBeenCalledWith(
454
+ 'Button: you must provide either visible text content or an accessible name via the aria-label or aria-labelledby properties.'
455
+ );
456
+ });
457
+
458
+ test(`Does not render with class ${styles.modifiers.settings} by default`, () => {
459
+ render(<Button aria-label="test" />);
460
+
461
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers.settings);
462
+ });
463
+
464
+ test(`Renders with class ${styles.modifiers.settings} when isSettings is true`, () => {
465
+ render(<Button isSettings aria-label="test" />);
466
+
467
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.settings);
468
+ });
469
+
470
+ test('Does not render custom icon when icon prop and isSettings are passed', () => {
471
+ render(<Button isSettings aria-label="test" icon={<div>Custom icon</div>} />);
472
+
473
+ expect(screen.queryByText('Custom icon')).not.toBeInTheDocument();
474
+ });
475
+ });
476
+
477
+ describe('Favorite button', () => {
478
+ // TODO: Remove isFavorite in breaking change to throw error for any button that does not have children or aria name
479
+ test('Throws console error when isFavorite is true and neither children, aria-label nor aria-lablledby are passed', () => {
480
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
481
+
482
+ render(<Button isFavorite />);
483
+
484
+ expect(consoleError).toHaveBeenCalledWith(
485
+ 'Button: you must provide either visible text content or an accessible name via the aria-label or aria-labelledby properties.'
486
+ );
487
+ });
488
+
489
+ // TODO: Remove isFavorite in breaking change to throw error for any button that does not have children or aria name
490
+ test('Does not throw console error when isFavorite is true and children is passed', () => {
491
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
492
+
493
+ render(<Button isFavorite>Settings</Button>);
494
+
495
+ expect(consoleError).not.toHaveBeenCalledWith(
496
+ 'Button: you must provide either visible text content or an accessible name via the aria-label or aria-labelledby properties.'
497
+ );
498
+ });
499
+
500
+ // TODO: Remove isFavorite in breaking change to throw error for any button that does not have children or aria name
501
+ test('Does not throw console error when isFavorite is true and aria-label is passed', () => {
502
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
503
+
504
+ render(<Button isFavorite aria-label="Test" />);
505
+
506
+ expect(consoleError).not.toHaveBeenCalledWith(
507
+ 'Button: you must provide either visible text content or an accessible name via the aria-label or aria-labelledby properties.'
508
+ );
509
+ });
510
+
511
+ // TODO: Remove isFavorite in breaking change to throw error for any button that does not have children or aria name
512
+ test('Does not throw console error when isFavorite is true and aria-labelledby is passed', () => {
513
+ const consoleError = jest.spyOn(console, 'error').mockImplementation();
514
+
515
+ render(
516
+ <>
517
+ <div id="label">Test</div>
518
+ <Button isFavorite aria-labelledby="label" />
519
+ </>
520
+ );
521
+
522
+ expect(consoleError).not.toHaveBeenCalledWith(
523
+ 'Button: you must provide either visible text content or an accessible name via the aria-label or aria-labelledby properties.'
524
+ );
525
+ });
526
+
527
+ test(`Renders with class ${styles.modifiers.favorite} when isFavorite is true`, () => {
528
+ render(<Button isFavorite />);
529
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.favorite);
530
+ });
531
+
532
+ test(`Renders with class ${styles.modifiers.favorited} when isFavorite is true and isFavorited is true`, () => {
533
+ render(<Button isFavorite isFavorited />);
534
+ expect(screen.getByRole('button')).toHaveClass(styles.modifiers.favorited);
535
+ });
536
+
537
+ test(`Does not render with class ${styles.modifiers.favorite} when isFavorite is false`, () => {
538
+ render(<Button />);
539
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers.favorite);
540
+ });
541
+
542
+ test(`Does not render with class ${styles.modifiers.favorited} when isFavorite is true and isFavorited is false`, () => {
543
+ render(<Button isFavorite />);
544
+ expect(screen.getByRole('button')).not.toHaveClass(styles.modifiers.favorited);
545
+ });
546
+
547
+ test('Overrides icon prop when isFavorite is true', () => {
548
+ render(<Button isFavorite icon={<div>Icon content</div>} />);
549
+ expect(screen.queryByText('Icon content')).not.toBeInTheDocument();
550
+ });
551
+ });
552
+
247
553
  test(`Renders basic button`, () => {
248
554
  const { asFragment } = render(<Button aria-label="basic button">Basic Button</Button>);
249
555
  expect(asFragment()).toMatchSnapshot();
@@ -5,7 +5,7 @@ exports[`Renders basic button 1`] = `
5
5
  <button
6
6
  aria-label="basic button"
7
7
  class="pf-v6-c-button pf-m-primary"
8
- data-ouia-component-id="OUIA-Generated-Button-primary-31"
8
+ data-ouia-component-id="OUIA-Generated-Button-primary-66"
9
9
  data-ouia-component-type="PF6/Button"
10
10
  data-ouia-safe="true"
11
11
  type="button"