@patternfly/react-core 6.3.0-prerelease.9 → 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 (500) hide show
  1. package/CHANGELOG.md +147 -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/Page/PageToggleButton.d.ts +4 -0
  175. package/dist/esm/components/Page/PageToggleButton.d.ts.map +1 -1
  176. package/dist/esm/components/Page/PageToggleButton.js +2 -2
  177. package/dist/esm/components/Page/PageToggleButton.js.map +1 -1
  178. package/dist/esm/components/Popover/Popover.d.ts.map +1 -1
  179. package/dist/esm/components/Popover/Popover.js +11 -1
  180. package/dist/esm/components/Popover/Popover.js.map +1 -1
  181. package/dist/esm/components/SearchInput/AdvancedSearchMenu.d.ts.map +1 -1
  182. package/dist/esm/components/SearchInput/AdvancedSearchMenu.js +13 -19
  183. package/dist/esm/components/SearchInput/AdvancedSearchMenu.js.map +1 -1
  184. package/dist/esm/components/SearchInput/SearchInput.d.ts +4 -0
  185. package/dist/esm/components/SearchInput/SearchInput.d.ts.map +1 -1
  186. package/dist/esm/components/SearchInput/SearchInput.js +37 -13
  187. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  188. package/dist/esm/components/Tabs/OverflowTab.d.ts +26 -0
  189. package/dist/esm/components/Tabs/OverflowTab.d.ts.map +1 -1
  190. package/dist/esm/components/Tabs/OverflowTab.js +2 -2
  191. package/dist/esm/components/Tabs/OverflowTab.js.map +1 -1
  192. package/dist/esm/components/Tabs/Tab.d.ts.map +1 -1
  193. package/dist/esm/components/Tabs/Tab.js +5 -2
  194. package/dist/esm/components/Tabs/Tab.js.map +1 -1
  195. package/dist/esm/components/Tabs/Tabs.d.ts +10 -0
  196. package/dist/esm/components/Tabs/Tabs.d.ts.map +1 -1
  197. package/dist/esm/components/Tabs/Tabs.js +46 -12
  198. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  199. package/dist/esm/components/Tabs/TabsContext.d.ts +1 -0
  200. package/dist/esm/components/Tabs/TabsContext.d.ts.map +1 -1
  201. package/dist/esm/components/Tabs/TabsContext.js +1 -0
  202. package/dist/esm/components/Tabs/TabsContext.js.map +1 -1
  203. package/dist/esm/components/TreeView/TreeView.d.ts +5 -0
  204. package/dist/esm/components/TreeView/TreeView.d.ts.map +1 -1
  205. package/dist/esm/components/TreeView/TreeView.js +5 -5
  206. package/dist/esm/components/TreeView/TreeView.js.map +1 -1
  207. package/dist/esm/components/TreeView/TreeViewListItem.d.ts +5 -0
  208. package/dist/esm/components/TreeView/TreeViewListItem.d.ts.map +1 -1
  209. package/dist/esm/components/TreeView/TreeViewListItem.js +8 -4
  210. package/dist/esm/components/TreeView/TreeViewListItem.js.map +1 -1
  211. package/dist/esm/components/TreeView/TreeViewRoot.d.ts.map +1 -1
  212. package/dist/esm/components/TreeView/TreeViewRoot.js +2 -2
  213. package/dist/esm/components/TreeView/TreeViewRoot.js.map +1 -1
  214. package/dist/esm/components/Truncate/Truncate.d.ts +11 -8
  215. package/dist/esm/components/Truncate/Truncate.d.ts.map +1 -1
  216. package/dist/esm/components/Truncate/Truncate.js +16 -9
  217. package/dist/esm/components/Truncate/Truncate.js.map +1 -1
  218. package/dist/esm/demos/DashboardHeader.d.ts.map +1 -1
  219. package/dist/esm/demos/DashboardHeader.js +1 -2
  220. package/dist/esm/demos/DashboardHeader.js.map +1 -1
  221. package/dist/esm/demos/sampleData.d.ts.map +1 -1
  222. package/dist/esm/demos/sampleData.js +225 -226
  223. package/dist/esm/demos/sampleData.js.map +1 -1
  224. package/dist/esm/demos/sampleDataRTL.d.ts +7 -0
  225. package/dist/esm/demos/sampleDataRTL.d.ts.map +1 -0
  226. package/dist/esm/demos/sampleDataRTL.js +128 -0
  227. package/dist/esm/demos/sampleDataRTL.js.map +1 -0
  228. package/dist/esm/helpers/KeyboardHandler.js +3 -2
  229. package/dist/esm/helpers/KeyboardHandler.js.map +1 -1
  230. package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
  231. package/dist/esm/helpers/Popper/Popper.js +1 -0
  232. package/dist/esm/helpers/Popper/Popper.js.map +1 -1
  233. package/dist/esm/helpers/util.d.ts +17 -0
  234. package/dist/esm/helpers/util.d.ts.map +1 -1
  235. package/dist/esm/helpers/util.js +36 -0
  236. package/dist/esm/helpers/util.js.map +1 -1
  237. package/dist/js/components/Alert/AlertGroupInline.d.ts.map +1 -1
  238. package/dist/js/components/Alert/AlertGroupInline.js +6 -0
  239. package/dist/js/components/Alert/AlertGroupInline.js.map +1 -1
  240. package/dist/js/components/Button/Button.d.ts +12 -0
  241. package/dist/js/components/Button/Button.d.ts.map +1 -1
  242. package/dist/js/components/Button/Button.js +33 -3
  243. package/dist/js/components/Button/Button.js.map +1 -1
  244. package/dist/js/components/Button/hamburgerIcon.d.ts +2 -0
  245. package/dist/js/components/Button/hamburgerIcon.d.ts.map +1 -0
  246. package/dist/js/components/Button/hamburgerIcon.js +11 -0
  247. package/dist/js/components/Button/hamburgerIcon.js.map +1 -0
  248. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  249. package/dist/js/components/ClipboardCopy/ClipboardCopy.js +2 -2
  250. package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  251. package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.js +1 -1
  252. package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.js.map +1 -1
  253. package/dist/js/components/DualListSelector/DualListSelector.d.ts +5 -0
  254. package/dist/js/components/DualListSelector/DualListSelector.d.ts.map +1 -1
  255. package/dist/js/components/DualListSelector/DualListSelector.js +4 -3
  256. package/dist/js/components/DualListSelector/DualListSelector.js.map +1 -1
  257. package/dist/js/components/DualListSelector/DualListSelectorContext.d.ts +1 -0
  258. package/dist/js/components/DualListSelector/DualListSelectorContext.d.ts.map +1 -1
  259. package/dist/js/components/DualListSelector/DualListSelectorContext.js +1 -1
  260. package/dist/js/components/DualListSelector/DualListSelectorContext.js.map +1 -1
  261. package/dist/js/components/DualListSelector/DualListSelectorListWrapper.d.ts.map +1 -1
  262. package/dist/js/components/DualListSelector/DualListSelectorListWrapper.js +1 -1
  263. package/dist/js/components/DualListSelector/DualListSelectorListWrapper.js.map +1 -1
  264. package/dist/js/components/DualListSelector/DualListSelectorTree.d.ts.map +1 -1
  265. package/dist/js/components/DualListSelector/DualListSelectorTree.js +4 -1
  266. package/dist/js/components/DualListSelector/DualListSelectorTree.js.map +1 -1
  267. package/dist/js/components/DualListSelector/DualListSelectorTreeItem.d.ts +5 -0
  268. package/dist/js/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -1
  269. package/dist/js/components/DualListSelector/DualListSelectorTreeItem.js +7 -3
  270. package/dist/js/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -1
  271. package/dist/js/components/ExpandableSection/ExpandableSection.d.ts +5 -1
  272. package/dist/js/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
  273. package/dist/js/components/ExpandableSection/ExpandableSection.js +6 -2
  274. package/dist/js/components/ExpandableSection/ExpandableSection.js.map +1 -1
  275. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts +2 -0
  276. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
  277. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js +4 -3
  278. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
  279. package/dist/js/components/Form/FormFieldGroupExpandable.d.ts +5 -0
  280. package/dist/js/components/Form/FormFieldGroupExpandable.d.ts.map +1 -1
  281. package/dist/js/components/Form/FormFieldGroupExpandable.js +2 -2
  282. package/dist/js/components/Form/FormFieldGroupExpandable.js.map +1 -1
  283. package/dist/js/components/Form/InternalFormFieldGroup.d.ts +5 -0
  284. package/dist/js/components/Form/InternalFormFieldGroup.d.ts.map +1 -1
  285. package/dist/js/components/Form/InternalFormFieldGroup.js +2 -2
  286. package/dist/js/components/Form/InternalFormFieldGroup.js.map +1 -1
  287. package/dist/js/components/Label/Label.js +57 -57
  288. package/dist/js/components/Label/Label.js.map +1 -1
  289. package/dist/js/components/Menu/Menu.js +3 -3
  290. package/dist/js/components/Menu/Menu.js.map +1 -1
  291. package/dist/js/components/MenuToggle/MenuToggle.d.ts +2 -0
  292. package/dist/js/components/MenuToggle/MenuToggle.d.ts.map +1 -1
  293. package/dist/js/components/MenuToggle/MenuToggle.js +4 -3
  294. package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
  295. package/dist/js/components/Page/PageToggleButton.d.ts +4 -0
  296. package/dist/js/components/Page/PageToggleButton.d.ts.map +1 -1
  297. package/dist/js/components/Page/PageToggleButton.js +2 -2
  298. package/dist/js/components/Page/PageToggleButton.js.map +1 -1
  299. package/dist/js/components/Popover/Popover.d.ts.map +1 -1
  300. package/dist/js/components/Popover/Popover.js +11 -1
  301. package/dist/js/components/Popover/Popover.js.map +1 -1
  302. package/dist/js/components/SearchInput/AdvancedSearchMenu.d.ts.map +1 -1
  303. package/dist/js/components/SearchInput/AdvancedSearchMenu.js +12 -18
  304. package/dist/js/components/SearchInput/AdvancedSearchMenu.js.map +1 -1
  305. package/dist/js/components/SearchInput/SearchInput.d.ts +4 -0
  306. package/dist/js/components/SearchInput/SearchInput.d.ts.map +1 -1
  307. package/dist/js/components/SearchInput/SearchInput.js +36 -12
  308. package/dist/js/components/SearchInput/SearchInput.js.map +1 -1
  309. package/dist/js/components/Tabs/OverflowTab.d.ts +26 -0
  310. package/dist/js/components/Tabs/OverflowTab.d.ts.map +1 -1
  311. package/dist/js/components/Tabs/OverflowTab.js +2 -2
  312. package/dist/js/components/Tabs/OverflowTab.js.map +1 -1
  313. package/dist/js/components/Tabs/Tab.d.ts.map +1 -1
  314. package/dist/js/components/Tabs/Tab.js +4 -1
  315. package/dist/js/components/Tabs/Tab.js.map +1 -1
  316. package/dist/js/components/Tabs/Tabs.d.ts +10 -0
  317. package/dist/js/components/Tabs/Tabs.d.ts.map +1 -1
  318. package/dist/js/components/Tabs/Tabs.js +45 -11
  319. package/dist/js/components/Tabs/Tabs.js.map +1 -1
  320. package/dist/js/components/Tabs/TabsContext.d.ts +1 -0
  321. package/dist/js/components/Tabs/TabsContext.d.ts.map +1 -1
  322. package/dist/js/components/Tabs/TabsContext.js +1 -0
  323. package/dist/js/components/Tabs/TabsContext.js.map +1 -1
  324. package/dist/js/components/TreeView/TreeView.d.ts +5 -0
  325. package/dist/js/components/TreeView/TreeView.d.ts.map +1 -1
  326. package/dist/js/components/TreeView/TreeView.js +5 -5
  327. package/dist/js/components/TreeView/TreeView.js.map +1 -1
  328. package/dist/js/components/TreeView/TreeViewListItem.d.ts +5 -0
  329. package/dist/js/components/TreeView/TreeViewListItem.d.ts.map +1 -1
  330. package/dist/js/components/TreeView/TreeViewListItem.js +7 -3
  331. package/dist/js/components/TreeView/TreeViewListItem.js.map +1 -1
  332. package/dist/js/components/TreeView/TreeViewRoot.d.ts.map +1 -1
  333. package/dist/js/components/TreeView/TreeViewRoot.js +2 -2
  334. package/dist/js/components/TreeView/TreeViewRoot.js.map +1 -1
  335. package/dist/js/components/Truncate/Truncate.d.ts +11 -8
  336. package/dist/js/components/Truncate/Truncate.d.ts.map +1 -1
  337. package/dist/js/components/Truncate/Truncate.js +15 -9
  338. package/dist/js/components/Truncate/Truncate.js.map +1 -1
  339. package/dist/js/demos/DashboardHeader.d.ts.map +1 -1
  340. package/dist/js/demos/DashboardHeader.js +1 -2
  341. package/dist/js/demos/DashboardHeader.js.map +1 -1
  342. package/dist/js/demos/sampleData.d.ts.map +1 -1
  343. package/dist/js/demos/sampleData.js +225 -226
  344. package/dist/js/demos/sampleData.js.map +1 -1
  345. package/dist/js/demos/sampleDataRTL.d.ts +7 -0
  346. package/dist/js/demos/sampleDataRTL.d.ts.map +1 -0
  347. package/dist/js/demos/sampleDataRTL.js +131 -0
  348. package/dist/js/demos/sampleDataRTL.js.map +1 -0
  349. package/dist/js/helpers/KeyboardHandler.js +3 -2
  350. package/dist/js/helpers/KeyboardHandler.js.map +1 -1
  351. package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
  352. package/dist/js/helpers/Popper/Popper.js +1 -0
  353. package/dist/js/helpers/Popper/Popper.js.map +1 -1
  354. package/dist/js/helpers/util.d.ts +17 -0
  355. package/dist/js/helpers/util.d.ts.map +1 -1
  356. package/dist/js/helpers/util.js +39 -1
  357. package/dist/js/helpers/util.js.map +1 -1
  358. package/dist/styles/assets/images/icon-help.hbs +3 -0
  359. package/dist/styles/assets/images/icon-outlined-star.hbs +3 -0
  360. package/dist/styles/assets/images/icon-star.hbs +3 -0
  361. package/dist/styles/base-no-reset.css +52 -11
  362. package/dist/styles/base.css +52 -11
  363. package/dist/umd/assets/{output-iWrWEXUG.css → output-BvTy70LD.css} +16824 -16082
  364. package/dist/umd/react-core.min.js +3 -3
  365. package/helpers/package.json +1 -1
  366. package/layouts/package.json +1 -1
  367. package/next/package.json +1 -1
  368. package/package.json +6 -6
  369. package/src/components/Alert/AlertGroupInline.tsx +13 -2
  370. package/src/components/Button/Button.tsx +78 -5
  371. package/src/components/Button/__tests__/Button.test.tsx +380 -74
  372. package/src/components/Button/__tests__/__snapshots__/Button.test.tsx.snap +1 -1
  373. package/src/components/Button/examples/Button.md +57 -14
  374. package/src/components/Button/examples/ButtonFavorite.tsx +18 -0
  375. package/src/components/Button/examples/ButtonHamburger.tsx +9 -0
  376. package/src/components/Button/examples/ButtonSettings.tsx +10 -0
  377. package/src/components/Button/hamburgerIcon.tsx +13 -0
  378. package/src/components/Card/examples/Card.md +1 -1
  379. package/src/components/Card/examples/CardSelectable.tsx +73 -60
  380. package/src/components/Card/examples/CardSingleSelectable.tsx +65 -48
  381. package/src/components/ClipboardCopy/ClipboardCopy.tsx +2 -1
  382. package/src/components/ClipboardCopy/ClipboardCopyToggle.tsx +1 -1
  383. package/src/components/ClipboardCopy/__tests__/ClipboardCopyToggle.test.tsx +7 -1
  384. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyToggle.test.tsx.snap +0 -1
  385. package/src/components/DualListSelector/DualListSelector.tsx +18 -4
  386. package/src/components/DualListSelector/DualListSelectorContext.ts +2 -1
  387. package/src/components/DualListSelector/DualListSelectorListWrapper.tsx +8 -5
  388. package/src/components/DualListSelector/DualListSelectorTree.tsx +4 -0
  389. package/src/components/DualListSelector/DualListSelectorTreeItem.tsx +17 -2
  390. package/src/components/DualListSelector/__tests__/DualListSelector.test.tsx +32 -1
  391. package/src/components/DualListSelector/__tests__/DualListSelectorTreeItem.test.tsx +55 -0
  392. package/src/components/DualListSelector/examples/DualListSelectorTree.tsx +1 -1
  393. package/src/components/ExpandableSection/ExpandableSection.tsx +13 -1
  394. package/src/components/ExpandableSection/ExpandableSectionToggle.tsx +5 -1
  395. package/src/components/ExpandableSection/__tests__/ExpandableSection.test.tsx +85 -23
  396. package/src/components/ExpandableSection/__tests__/ExpandableSectionToggle.test.tsx +32 -0
  397. package/src/components/ExpandableSection/__tests__/__snapshots__/ExpandableSection.test.tsx.snap +1 -63
  398. package/src/components/ExpandableSection/examples/ExpandableSection.md +2 -0
  399. package/src/components/ExpandableSection/examples/ExpandableSectionDetached.tsx +1 -1
  400. package/src/components/Form/FormFieldGroupExpandable.tsx +7 -0
  401. package/src/components/Form/InternalFormFieldGroup.tsx +19 -3
  402. package/src/components/Form/__tests__/FormFieldGroupExpandable.test.tsx +55 -0
  403. package/src/components/Form/examples/FormFieldGroups.tsx +7 -1
  404. package/src/components/Label/Label.tsx +63 -63
  405. package/src/components/Masthead/examples/MastheadBasic.tsx +1 -2
  406. package/src/components/Masthead/examples/MastheadBasicMixedContent.tsx +1 -2
  407. package/src/components/Masthead/examples/MastheadDisplayInline.tsx +1 -2
  408. package/src/components/Masthead/examples/MastheadDisplayStack.tsx +1 -2
  409. package/src/components/Masthead/examples/MastheadDisplayStackInlineResponsive.tsx +1 -2
  410. package/src/components/Masthead/examples/MastheadInsets.tsx +1 -2
  411. package/src/components/Masthead/examples/MastheadLogoCustomComponent.tsx +1 -2
  412. package/src/components/Menu/Menu.tsx +3 -3
  413. package/src/components/MenuToggle/MenuToggle.tsx +6 -1
  414. package/src/components/MenuToggle/__tests__/MenuToggle.test.tsx +59 -45
  415. package/src/components/MenuToggle/__tests__/__snapshots__/MenuToggle.test.tsx.snap +9 -9
  416. package/src/components/MenuToggle/examples/MenuToggle.md +14 -30
  417. package/src/components/MenuToggle/examples/MenuToggleCustomIcon.tsx +17 -0
  418. package/src/components/MenuToggle/examples/MenuToggleSettings.tsx +8 -0
  419. package/src/components/Page/PageToggleButton.tsx +9 -2
  420. package/src/components/Page/examples/Page.md +1 -1
  421. package/src/components/Page/examples/PageCenteredSection.tsx +4 -8
  422. package/src/components/Page/examples/PageGroupSection.tsx +2 -5
  423. package/src/components/Page/examples/PageMainSectionPadding.tsx +2 -5
  424. package/src/components/Page/examples/PageMainSectionVariations.tsx +2 -5
  425. package/src/components/Page/examples/PageMultipleSidebarBody.tsx +2 -5
  426. package/src/components/Page/examples/PageUncontrolledNav.tsx +1 -4
  427. package/src/components/Page/examples/PageVerticalNav.tsx +2 -5
  428. package/src/components/Page/examples/PageWithOrWithoutFill.tsx +2 -5
  429. package/src/components/Popover/Popover.tsx +13 -1
  430. package/src/components/SearchInput/AdvancedSearchMenu.tsx +15 -23
  431. package/src/components/SearchInput/SearchInput.tsx +111 -15
  432. package/src/components/SearchInput/__tests__/SearchInput.test.tsx +84 -0
  433. package/src/components/SearchInput/examples/SearchInput.md +11 -2
  434. package/src/components/SearchInput/examples/SearchInputWithExpandable.tsx +6 -1
  435. package/src/components/Skeleton/examples/SkeletonText.tsx +0 -1
  436. package/src/components/Tabs/OverflowTab.tsx +29 -0
  437. package/src/components/Tabs/Tab.tsx +6 -2
  438. package/src/components/Tabs/Tabs.tsx +76 -11
  439. package/src/components/Tabs/TabsContext.ts +2 -0
  440. package/src/components/Tabs/__tests__/Tabs.test.tsx +65 -1
  441. package/src/components/Tabs/__tests__/__snapshots__/Tabs.test.tsx.snap +39 -26
  442. package/src/components/Tabs/examples/Tabs.md +1 -1
  443. package/src/components/Timestamp/examples/TimestampBasicFormats.tsx +1 -1
  444. package/src/components/Timestamp/examples/TimestampDefaultTooltip.tsx +1 -1
  445. package/src/components/TreeView/TreeView.tsx +9 -0
  446. package/src/components/TreeView/TreeViewListItem.tsx +18 -5
  447. package/src/components/TreeView/TreeViewRoot.tsx +4 -2
  448. package/src/components/TreeView/__tests__/TreeView.test.tsx +8 -1
  449. package/src/components/TreeView/__tests__/TreeViewList.test.tsx +39 -0
  450. package/src/components/TreeView/__tests__/TreeViewListItem.test.tsx +17 -3
  451. package/src/components/TreeView/__tests__/__snapshots__/TreeView.test.tsx.snap +3 -0
  452. package/src/components/TreeView/examples/TreeViewCompact.tsx +1 -1
  453. package/src/components/TreeView/examples/TreeViewCompactNoBackground.tsx +8 -1
  454. package/src/components/TreeView/examples/TreeViewGuides.tsx +1 -1
  455. package/src/components/TreeView/examples/TreeViewMultiselectable.tsx +1 -0
  456. package/src/components/TreeView/examples/TreeViewSelectionExpansion.tsx +1 -0
  457. package/src/components/TreeView/examples/TreeViewSingleSelectable.tsx +1 -0
  458. package/src/components/TreeView/examples/TreeViewWithActionItems.tsx +1 -0
  459. package/src/components/TreeView/examples/TreeViewWithBadges.tsx +1 -0
  460. package/src/components/TreeView/examples/TreeViewWithCheckboxes.tsx +9 -1
  461. package/src/components/TreeView/examples/TreeViewWithCustomBadges.tsx +1 -0
  462. package/src/components/TreeView/examples/TreeViewWithIconPerItem.tsx +1 -0
  463. package/src/components/TreeView/examples/TreeViewWithIcons.tsx +1 -0
  464. package/src/components/TreeView/examples/TreeViewWithMemoization.tsx +1 -0
  465. package/src/components/TreeView/examples/TreeViewWithSearch.tsx +1 -0
  466. package/src/components/Truncate/Truncate.tsx +40 -19
  467. package/src/components/Truncate/__tests__/Truncate.test.tsx +24 -0
  468. package/src/components/Truncate/examples/Truncate.md +8 -0
  469. package/src/components/Truncate/examples/TruncateLinks.tsx +22 -0
  470. package/src/demos/CardDemos.md +1 -1
  471. package/src/demos/DashboardHeader.tsx +2 -5
  472. package/src/demos/NotificationDrawer/examples/NotificationDrawerBasic.tsx +2 -5
  473. package/src/demos/NotificationDrawer/examples/NotificationDrawerGrouped.tsx +2 -5
  474. package/src/demos/RTL/RTL.md +1 -0
  475. package/src/demos/RTL/examples/PaginatedTable.tsx +18 -53
  476. package/src/demos/examples/Card/CardAggregateStatus.tsx +2 -6
  477. package/src/demos/examples/Card/CardDetails.tsx +2 -3
  478. package/src/demos/examples/Card/CardEventsView.tsx +2 -3
  479. package/src/demos/examples/Card/CardLogView.tsx +2 -3
  480. package/src/demos/examples/Card/CardStatus.tsx +0 -1
  481. package/src/demos/examples/Card/CardUtilizationDemo3.tsx +0 -1
  482. package/src/demos/examples/Masthead/MastheadWithHorizontalNav.tsx +1 -1
  483. package/src/demos/examples/Masthead/MastheadWithUtilitiesAndUserDropdownMenu.tsx +2 -5
  484. package/src/demos/examples/Nav/NavFlyout.tsx +3 -6
  485. package/src/demos/examples/Nav/NavHorizontal.tsx +1 -1
  486. package/src/demos/examples/Nav/NavHorizontalWithSubnav.tsx +2 -5
  487. package/src/demos/examples/Nav/NavManual.tsx +3 -6
  488. package/src/demos/examples/Page/PageContextSelector.tsx +3 -6
  489. package/src/demos/examples/Page/PageStickySectionBreadcrumb.tsx +2 -5
  490. package/src/demos/examples/Page/PageStickySectionGroup.tsx +2 -5
  491. package/src/demos/examples/Page/PageStickySectionGroupAlternate.tsx +2 -5
  492. package/src/demos/examples/Toolbar/ConsoleLogViewerToolbar.tsx +2 -3
  493. package/src/demos/examples/Wizard/InPageWithDrawer.tsx +1 -4
  494. package/src/demos/examples/Wizard/InPageWithDrawerInformationalStep.tsx +1 -4
  495. package/src/demos/sampleData.tsx +225 -227
  496. package/src/demos/sampleDataRTL.tsx +133 -0
  497. package/src/helpers/KeyboardHandler.tsx +2 -2
  498. package/src/helpers/Popper/Popper.tsx +1 -0
  499. package/src/helpers/util.ts +45 -0
  500. package/src/demos/RTL/examples/PaginatedTable.jsx +0 -504
@@ -14,6 +14,7 @@ import { TextInputGroup, TextInputGroupMain, TextInputGroupUtilities } from '../
14
14
  import { InputGroup, InputGroupItem } from '../InputGroup';
15
15
  import { Popper } from '../../helpers';
16
16
  import textInputGroupStyles from '@patternfly/react-styles/css/components/TextInputGroup/text-input-group';
17
+ import inputGroupStyles from '@patternfly/react-styles/css/components/InputGroup/input-group';
17
18
 
18
19
  /** Properties for adding search attributes to an advanced search input. These properties must
19
20
  * be passed in as an object within an array to the search input component's attribute property.
@@ -41,6 +42,8 @@ export interface SearchInputExpandable {
41
42
  onToggleExpand: (event: React.SyntheticEvent<HTMLButtonElement>, isExpanded: boolean) => void;
42
43
  /** An accessible label for the expandable search input toggle. */
43
44
  toggleAriaLabel: string;
45
+ /** Flag indicating animations should be enabled when the search input expands and collapses. Note: this will change the component's DOM structure. In a future breaking change release, this will become the default behavior and will no longer be needed. */
46
+ hasAnimations?: boolean;
44
47
  }
45
48
 
46
49
  /** The main search input component. */
@@ -118,6 +121,8 @@ export interface SearchInputProps extends Omit<React.HTMLProps<HTMLDivElement>,
118
121
  /** The number of search results returned. Either a total number of results,
119
122
  * or a string representing the current result over the total number of results. i.e. "1 / 5". */
120
123
  resultsCount?: number | string;
124
+ /** Screenreader text that will appear after resultsCount to give context for what that value represents to assistive technologies. */
125
+ resultsCountContext?: string;
121
126
  /** Label for the button which calls the onSearch event handler. */
122
127
  submitSearchButtonLabel?: string;
123
128
  /** Value of the search input. */
@@ -144,6 +149,7 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
144
149
  onToggleAdvancedSearch,
145
150
  isAdvancedSearchOpen = false,
146
151
  resultsCount,
152
+ resultsCountContext = ' results',
147
153
  onNextClick,
148
154
  onPreviousClick,
149
155
  innerRef,
@@ -174,7 +180,7 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
174
180
  const popperRef = useRef(null);
175
181
  const [focusAfterExpandChange, setFocusAfterExpandChange] = useState(false);
176
182
 
177
- const { isExpanded, onToggleExpand, toggleAriaLabel } = expandableInput || {};
183
+ const { isExpanded, onToggleExpand, toggleAriaLabel, hasAnimations } = expandableInput || {};
178
184
 
179
185
  useEffect(() => {
180
186
  // this effect and the focusAfterExpandChange variable are needed to focus the input/toggle as needed when the
@@ -184,9 +190,13 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
184
190
  } else if (isExpanded) {
185
191
  searchInputInputRef?.current?.focus();
186
192
  } else {
187
- searchInputExpandableToggleRef?.current?.focus();
193
+ if (!hasAnimations) {
194
+ searchInputExpandableToggleRef?.current?.focus();
195
+ }
196
+ }
197
+ if (!hasAnimations) {
198
+ setFocusAfterExpandChange(false);
188
199
  }
189
- setFocusAfterExpandChange(false);
190
200
  }, [focusAfterExpandChange, isExpanded, searchInputInputRef, searchInputExpandableToggleRef]);
191
201
 
192
202
  useEffect(() => {
@@ -309,7 +319,11 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
309
319
  />
310
320
  {(renderUtilities || areUtilitiesDisplayed) && (
311
321
  <TextInputGroupUtilities>
312
- {resultsCount && <Badge isRead>{resultsCount}</Badge>}
322
+ {resultsCount && (
323
+ <Badge isRead screenReaderText={resultsCountContext}>
324
+ {resultsCount}
325
+ </Badge>
326
+ )}
313
327
  {!!onNextClick && !!onPreviousClick && (
314
328
  <div className={textInputGroupStyles.textInputGroupGroup}>
315
329
  <Button
@@ -342,7 +356,28 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
342
356
  </TextInputGroup>
343
357
  );
344
358
 
345
- const expandableToggle = (
359
+ const expandToggleButton = (
360
+ <Button
361
+ variant={ButtonVariant.plain}
362
+ aria-label={toggleAriaLabel}
363
+ aria-expanded={isExpanded}
364
+ icon={<SearchIcon />}
365
+ onClick={onExpandHandler}
366
+ ref={searchInputExpandableToggleRef}
367
+ />
368
+ );
369
+
370
+ const collapseToggleButton = (
371
+ <Button
372
+ variant={ButtonVariant.plain}
373
+ aria-label={toggleAriaLabel}
374
+ aria-expanded={isExpanded}
375
+ icon={<TimesIcon />}
376
+ onClick={onExpandHandler}
377
+ />
378
+ );
379
+
380
+ const singleButtonToggle = (
346
381
  <Button
347
382
  variant={ButtonVariant.plain}
348
383
  aria-label={toggleAriaLabel}
@@ -353,10 +388,48 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
353
388
  />
354
389
  );
355
390
 
356
- const buildExpandableSearchInput = ({ ...searchInputProps } = {}) => (
391
+ const onTransitionEnd = () => {
392
+ !isExpanded && focusAfterExpandChange && searchInputExpandableToggleRef?.current?.focus();
393
+ setFocusAfterExpandChange(false);
394
+ };
395
+
396
+ const expandableToggle = (
397
+ <>
398
+ {!hasAnimations && <InputGroupItem isPlain>{singleButtonToggle}</InputGroupItem>}
399
+ {hasAnimations && (
400
+ <>
401
+ <InputGroupItem
402
+ className={inputGroupStyles.modifiers.searchExpand}
403
+ isPlain
404
+ onTransitionEnd={onTransitionEnd}
405
+ {...(isExpanded && { inert: '' })}
406
+ >
407
+ {expandToggleButton}
408
+ </InputGroupItem>
409
+ <InputGroupItem
410
+ className={inputGroupStyles.modifiers.searchAction}
411
+ isPlain
412
+ {...(!isExpanded && { inert: '' })}
413
+ >
414
+ {collapseToggleButton}
415
+ </InputGroupItem>
416
+ </>
417
+ )}
418
+ </>
419
+ );
420
+
421
+ const buildExpandableSearchInput = ({ ...searchInputProps }: any = {}) => (
357
422
  <InputGroup {...searchInputProps}>
358
- <InputGroupItem isFill>{buildTextInputGroup()} </InputGroupItem>
359
- <InputGroupItem isPlain>{expandableToggle}</InputGroupItem>
423
+ <InputGroupItem
424
+ {...(!hasAnimations && { isFill: true })}
425
+ {...(hasAnimations && { className: inputGroupStyles.modifiers.searchInput })}
426
+ {...(!isExpanded && {
427
+ inert: ''
428
+ })}
429
+ >
430
+ {buildTextInputGroup()}
431
+ </InputGroupItem>
432
+ {expandableToggle}
360
433
  </InputGroup>
361
434
  );
362
435
 
@@ -370,9 +443,19 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
370
443
 
371
444
  const buildSearchTextInputGroupWithExtraButtons = ({ ...searchInputProps } = {}) => (
372
445
  <InputGroup ref={triggerRef} {...searchInputProps}>
373
- <InputGroupItem isFill>{buildTextInputGroup()}</InputGroupItem>
446
+ <InputGroupItem
447
+ {...(!hasAnimations && { isFill: true })}
448
+ {...(expandableInput && hasAnimations && { className: inputGroupStyles.modifiers.searchInput })}
449
+ {...(expandableInput &&
450
+ hasAnimations &&
451
+ !isExpanded && {
452
+ inert: ''
453
+ })}
454
+ >
455
+ {buildTextInputGroup()}
456
+ </InputGroupItem>
374
457
  {(attributes.length > 0 || onToggleAdvancedSearch) && (
375
- <InputGroupItem isPlain>
458
+ <InputGroupItem isPlain {...(hasAnimations && { className: inputGroupStyles.modifiers.searchAction })}>
376
459
  <Button
377
460
  className={isSearchMenuOpen && 'pf-m-expanded'}
378
461
  variant={ButtonVariant.control}
@@ -385,7 +468,7 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
385
468
  </InputGroupItem>
386
469
  )}
387
470
  {!!onSearch && (
388
- <InputGroupItem>
471
+ <InputGroupItem {...(hasAnimations && { className: inputGroupStyles.modifiers.searchAction })}>
389
472
  <Button
390
473
  type="submit"
391
474
  variant={ButtonVariant.control}
@@ -406,11 +489,15 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
406
489
 
407
490
  const searchInputProps = {
408
491
  ...props,
409
- className: className && css(className),
492
+ className: css(
493
+ expandableInput && hasAnimations && inputGroupStyles.modifiers.searchExpandable,
494
+ expandableInput && hasAnimations && isExpanded && inputGroupStyles.modifiers.expanded,
495
+ className && css(className)
496
+ ),
410
497
  innerRef: searchInputRef
411
498
  };
412
499
 
413
- if (!!expandableInput && !isExpanded) {
500
+ if (!!expandableInput && !isExpanded && !hasAnimations) {
414
501
  return (
415
502
  <InputGroup {...searchInputProps}>
416
503
  <InputGroupItem>{expandableToggle}</InputGroupItem>
@@ -442,10 +529,19 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
442
529
  </div>
443
530
  );
444
531
 
532
+ const advancedSearchInputProps = hasAnimations
533
+ ? {
534
+ className: css(
535
+ expandableInput && inputGroupStyles.modifiers.searchExpandable,
536
+ expandableInput && isExpanded && inputGroupStyles.modifiers.expanded
537
+ )
538
+ }
539
+ : {};
540
+
445
541
  const AdvancedSearchWithPopper = (
446
542
  <div className={css(className)} ref={searchInputRef} {...props}>
447
543
  <Popper
448
- trigger={buildSearchTextInputGroupWithExtraButtons()}
544
+ trigger={buildSearchTextInputGroupWithExtraButtons(advancedSearchInputProps)}
449
545
  triggerRef={triggerRef}
450
546
  popper={AdvancedSearch}
451
547
  popperRef={popperRef}
@@ -459,7 +555,7 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
459
555
 
460
556
  const AdvancedSearchInline = (
461
557
  <div className={css(className)} ref={searchInputRef} {...props}>
462
- {buildSearchTextInputGroupWithExtraButtons()}
558
+ {buildSearchTextInputGroupWithExtraButtons(advancedSearchInputProps)}
463
559
  {AdvancedSearch}
464
560
  </div>
465
561
  );
@@ -8,6 +8,7 @@ import { Button } from '../../Button';
8
8
  import ExternalLinkSquareAltIcon from '@patternfly/react-icons/dist/esm/icons/external-link-square-alt-icon';
9
9
  import badgeStyles from '@patternfly/react-styles/css/components/Badge/badge';
10
10
  import textInputGroupStyles from '@patternfly/react-styles/css/components/TextInputGroup/text-input-group';
11
+ import inputGroupStyles from '@patternfly/react-styles/css/components/InputGroup/input-group';
11
12
 
12
13
  jest.mock('../../../helpers/OUIA/ouia');
13
14
  jest.mock('../../../helpers/GenerateId/GenerateId');
@@ -234,6 +235,89 @@ test('text input is rendered when isExpanded is true', () => {
234
235
  expect(screen.getByRole('textbox')).toBeVisible();
235
236
  });
236
237
 
238
+ test('animate classes & inert are not rendered when hasAnimations is false', () => {
239
+ render(
240
+ <SearchInput
241
+ data-testid="test-id"
242
+ expandableInput={{
243
+ hasAnimations: false,
244
+ isExpanded: true,
245
+ onToggleExpand: () => {},
246
+ toggleAriaLabel: 'Test label'
247
+ }}
248
+ />
249
+ );
250
+
251
+ expect(screen.getByTestId('test-id')).not.toHaveClass(`${inputGroupStyles.modifiers.searchExpandable}`);
252
+ expect(screen.getByTestId('test-id')).not.toHaveClass(`${inputGroupStyles.modifiers.expanded}`);
253
+
254
+ expect(screen.getByTestId('test-id').children[0]).not.toHaveClass(`${inputGroupStyles.modifiers.searchInput}`);
255
+ expect(screen.getByTestId('test-id').children[0].parentElement).not.toHaveAttribute('inert', '');
256
+
257
+ expect(screen.getAllByRole('button')).toHaveLength(1);
258
+ expect(screen.getAllByRole('button')[0].parentElement).not.toHaveClass(`${inputGroupStyles.modifiers.searchExpand}`);
259
+ expect(screen.getAllByRole('button')[0].parentElement).not.toHaveClass(`${inputGroupStyles.modifiers.searchAction}`);
260
+ expect(screen.getAllByRole('button')[0].parentElement).not.toHaveAttribute('inert', '');
261
+ });
262
+
263
+ test('animate classes & inert are properly rendered when hasAnimations is true and isExpanded is false', () => {
264
+ render(
265
+ <SearchInput
266
+ data-testid="test-id"
267
+ expandableInput={{
268
+ hasAnimations: true,
269
+ isExpanded: false,
270
+ onToggleExpand: () => {},
271
+ toggleAriaLabel: 'Test label'
272
+ }}
273
+ />
274
+ );
275
+
276
+ expect(screen.getByTestId('test-id')).toHaveClass(`${inputGroupStyles.modifiers.searchExpandable}`);
277
+ expect(screen.getByTestId('test-id')).not.toHaveClass(`${inputGroupStyles.modifiers.expanded}`);
278
+
279
+ expect(screen.getByTestId('test-id').querySelector(`.${inputGroupStyles.modifiers.searchInput}`)).toBeInTheDocument();
280
+ expect(screen.getByTestId('test-id').querySelector(`.${inputGroupStyles.modifiers.searchInput}`)).toHaveAttribute(
281
+ 'inert',
282
+ ''
283
+ );
284
+ expect(screen.getAllByRole('button')).toHaveLength(2);
285
+ expect(screen.getAllByRole('button')[0].parentElement).toHaveClass(`${inputGroupStyles.modifiers.searchExpand}`);
286
+ expect(screen.getAllByRole('button')[0].parentElement).not.toHaveAttribute('inert', '');
287
+
288
+ expect(screen.getAllByRole('button')[1].parentElement).toHaveClass(`${inputGroupStyles.modifiers.searchAction}`);
289
+ expect(screen.getAllByRole('button')[1].parentElement).toHaveAttribute('inert', '');
290
+ });
291
+
292
+ test('animate classes and inert are properly rendered when hasAnimations and isExpanded are true', () => {
293
+ render(
294
+ <SearchInput
295
+ data-testid="test-id"
296
+ expandableInput={{
297
+ hasAnimations: true,
298
+ isExpanded: true,
299
+ onToggleExpand: () => {},
300
+ toggleAriaLabel: 'Test label'
301
+ }}
302
+ />
303
+ );
304
+
305
+ expect(screen.getByTestId('test-id')).toHaveClass(`${inputGroupStyles.modifiers.searchExpandable}`);
306
+ expect(screen.getByTestId('test-id')).toHaveClass(`${inputGroupStyles.modifiers.expanded}`);
307
+
308
+ expect(screen.getByTestId('test-id').querySelector(`.${inputGroupStyles.modifiers.searchInput}`)).toBeInTheDocument();
309
+ expect(screen.getByTestId('test-id').querySelector(`.${inputGroupStyles.modifiers.searchInput}`)).not.toHaveAttribute(
310
+ 'inert',
311
+ ''
312
+ );
313
+ expect(screen.getAllByRole('button')).toHaveLength(2);
314
+ expect(screen.getAllByRole('button')[0].parentElement).toHaveClass(`${inputGroupStyles.modifiers.searchExpand}`);
315
+ expect(screen.getAllByRole('button')[0].parentElement).toHaveAttribute('inert', '');
316
+
317
+ expect(screen.getAllByRole('button')[1].parentElement).toHaveClass(`${inputGroupStyles.modifiers.searchAction}`);
318
+ expect(screen.getAllByRole('button')[1].parentElement).not.toHaveAttribute('inert', '');
319
+ });
320
+
237
321
  test('onToggleExpand is not called if the expandable toggle is not clicked', () => {
238
322
  const mockOnToggleExpand = jest.fn();
239
323
 
@@ -13,39 +13,47 @@ import { ExternalLinkSquareAltIcon } from '@patternfly/react-icons';
13
13
  ### Basic
14
14
 
15
15
  ```ts file='./SearchInputBasic.tsx'
16
+
16
17
  ```
17
18
 
18
19
  ### Match with result count
19
20
 
20
21
  ```ts file='./SearchInputWithResultCount.tsx'
22
+
21
23
  ```
22
24
 
23
25
  ### Match with navigable options
24
26
 
25
27
  ```ts file='./SearchInputWithNavigableOptions.tsx'
28
+
26
29
  ```
27
30
 
28
31
  ### With submit button
29
32
 
30
33
  ```ts file='./SearchInputWithSubmitButton.tsx'
34
+
31
35
  ```
32
36
 
33
37
  ### Focus search input using ref
34
38
 
35
39
  ```ts file='./SearchInputFocusSearch.tsx'
40
+
36
41
  ```
37
42
 
38
43
  ### With expandable button
39
44
 
45
+ Animations on the expansion and collapse of the search input may be opted into by passing `hasAnimations` to the `expandableInput` object.
46
+
40
47
  ```ts file='./SearchInputWithExpandable.tsx'
48
+
41
49
  ```
42
50
 
43
51
  ### Advanced
44
52
 
45
53
  The search input component can be used to dynamically build a one to one attribute-value advanced search.
46
54
  Using the `attributes` prop alongside the `advancedSearchDelimiter` will expose this functionality, as demonstrated in
47
- the following example. The search input component can also be used as a composable component and paired with a Popper
48
- or other elements to build a completely custom advanced search form. This feature is demonstrated
55
+ the following example. The search input component can also be used as a composable component and paired with a Popper
56
+ or other elements to build a completely custom advanced search form. This feature is demonstrated
49
57
  in the search input's <a href="/components/search-input/react-demos">react demos</a>.
50
58
 
51
59
  The values used in the attribute-value form fields may contain spaces. The values containing spaces
@@ -53,4 +61,5 @@ should be wrapped with quotes inside the summary search string in the input fiel
53
61
  autogenerated from the individual fields the quotes will be autoplaced.
54
62
 
55
63
  ```ts file='./SearchInputAdvanced.tsx'
64
+
56
65
  ```
@@ -20,7 +20,12 @@ export const SearchInputWithExpandable: React.FunctionComponent = () => {
20
20
  value={value}
21
21
  onChange={(_event, value) => onChange(value)}
22
22
  onClear={() => onChange('')}
23
- expandableInput={{ isExpanded, onToggleExpand, toggleAriaLabel: 'Expandable search input toggle' }}
23
+ expandableInput={{
24
+ isExpanded,
25
+ onToggleExpand,
26
+ toggleAriaLabel: 'Expandable search input toggle',
27
+ hasAnimations: true
28
+ }}
24
29
  />
25
30
  );
26
31
  };
@@ -1,6 +1,5 @@
1
1
  import { Fragment } from 'react';
2
2
  import { Skeleton } from '@patternfly/react-core';
3
- /* eslint-disable camelcase */
4
3
  import t_global_font_size_4xl from '@patternfly/react-tokens/dist/esm/t_global_font_size_4xl';
5
4
  import t_global_font_size_3xl from '@patternfly/react-tokens/dist/esm/t_global_font_size_3xl';
6
5
  import t_global_font_size_2xl from '@patternfly/react-tokens/dist/esm/t_global_font_size_2xl';
@@ -8,6 +8,31 @@ import { TabsContext } from './TabsContext';
8
8
  import { TabProps } from './Tab';
9
9
  import { TabTitleText } from './TabTitleText';
10
10
 
11
+ export interface HorizontalOverflowPopperProps {
12
+ /** Vertical direction of the popper. If enableFlip is set to true, this will set the initial direction before the popper flips. */
13
+ direction?: 'up' | 'down';
14
+ /** Horizontal position of the popper */
15
+ position?: 'right' | 'left' | 'center' | 'start' | 'end';
16
+ /** Custom width of the popper. If the value is "trigger", it will set the width to the select toggle's width */
17
+ width?: string | 'trigger';
18
+ /** Minimum width of the popper. If the value is "trigger", it will set the min width to the select toggle's width */
19
+ minWidth?: string | 'trigger';
20
+ /** Maximum width of the popper. If the value is "trigger", it will set the max width to the select toggle's width */
21
+ maxWidth?: string | 'trigger';
22
+ /** Enable to flip the popper when it reaches the boundary */
23
+ enableFlip?: boolean;
24
+ /** The container to append the select to. Defaults to document.body.
25
+ * If your select is being cut off you can append it to an element higher up the DOM tree.
26
+ * Some examples:
27
+ * appendTo="inline"
28
+ * appendTo={() => document.body}
29
+ * appendTo={document.getElementById('target')}
30
+ */
31
+ appendTo?: HTMLElement | (() => HTMLElement) | 'inline';
32
+ /** Flag to prevent the popper from overflowing its container and becoming partially obscured. */
33
+ preventOverflow?: boolean;
34
+ }
35
+
11
36
  export interface OverflowTabProps extends React.HTMLProps<HTMLLIElement> {
12
37
  /** Additional classes added to the overflow tab */
13
38
  className?: string;
@@ -25,6 +50,8 @@ export interface OverflowTabProps extends React.HTMLProps<HTMLLIElement> {
25
50
  shouldPreventScrollOnItemFocus?: boolean;
26
51
  /** Time in ms to wait before firing the toggles' focus event. Defaults to 0 */
27
52
  focusTimeoutDelay?: number;
53
+ /** Additional props to spread to the popper menu. */
54
+ popperProps?: HorizontalOverflowPopperProps;
28
55
  }
29
56
 
30
57
  export const OverflowTab: React.FunctionComponent<OverflowTabProps> = ({
@@ -36,6 +63,7 @@ export const OverflowTab: React.FunctionComponent<OverflowTabProps> = ({
36
63
  zIndex = 9999,
37
64
  shouldPreventScrollOnItemFocus = true,
38
65
  focusTimeoutDelay = 0,
66
+ popperProps,
39
67
  ...props
40
68
  }: OverflowTabProps) => {
41
69
  const menuRef = useRef<HTMLDivElement>(undefined);
@@ -148,6 +176,7 @@ export const OverflowTab: React.FunctionComponent<OverflowTabProps> = ({
148
176
  minWidth="revert"
149
177
  appendTo={overflowLIRef.current}
150
178
  zIndex={zIndex}
179
+ {...popperProps}
151
180
  />
152
181
  </Fragment>
153
182
  );
@@ -1,4 +1,4 @@
1
- import { useContext, forwardRef } from 'react';
1
+ import { useContext, forwardRef, useEffect } from 'react';
2
2
  import styles from '@patternfly/react-styles/css/components/Tabs/tabs';
3
3
  import { OUIAProps } from '../../helpers';
4
4
  import { TabButton } from './TabButton';
@@ -75,7 +75,7 @@ const TabBase: React.FunctionComponent<TabProps> = ({
75
75
  }),
76
76
  {}
77
77
  );
78
- const { mountOnEnter, localActiveKey, unmountOnExit, uniqueId, handleTabClick, handleTabClose } =
78
+ const { mountOnEnter, localActiveKey, unmountOnExit, uniqueId, setAccentStyles, handleTabClick, handleTabClose } =
79
79
  useContext(TabsContext);
80
80
  let ariaControls = tabContentId ? `${tabContentId}` : `pf-tab-section-${eventKey}-${childId || uniqueId}`;
81
81
  if ((mountOnEnter || unmountOnExit) && eventKey !== localActiveKey) {
@@ -116,6 +116,10 @@ const TabBase: React.FunctionComponent<TabProps> = ({
116
116
  </TabButton>
117
117
  );
118
118
 
119
+ useEffect(() => {
120
+ setAccentStyles(true);
121
+ }, [title, actions]);
122
+
119
123
  return (
120
124
  <li
121
125
  className={css(