@patternfly/react-core 5.3.0-prerelease.2 → 5.3.0-prerelease.20

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 (479) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/AboutModal/package.json +1 -1
  5. package/dist/dynamic/components/Accordion/package.json +1 -1
  6. package/dist/dynamic/components/ActionList/package.json +1 -1
  7. package/dist/dynamic/components/Alert/package.json +1 -1
  8. package/dist/dynamic/components/Avatar/package.json +1 -1
  9. package/dist/dynamic/components/BackToTop/package.json +1 -1
  10. package/dist/dynamic/components/Backdrop/package.json +1 -1
  11. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  12. package/dist/dynamic/components/Badge/package.json +1 -1
  13. package/dist/dynamic/components/Banner/package.json +1 -1
  14. package/dist/dynamic/components/Brand/package.json +1 -1
  15. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  16. package/dist/dynamic/components/Button/package.json +1 -1
  17. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  18. package/dist/dynamic/components/Card/package.json +1 -1
  19. package/dist/dynamic/components/Checkbox/package.json +1 -1
  20. package/dist/dynamic/components/Chip/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/DataList/package.json +1 -1
  24. package/dist/dynamic/components/DatePicker/package.json +1 -1
  25. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  26. package/dist/dynamic/components/Divider/package.json +1 -1
  27. package/dist/dynamic/components/DragDrop/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/Text/package.json +1 -1
  72. package/dist/dynamic/components/TextArea/package.json +1 -1
  73. package/dist/dynamic/components/TextInput/package.json +1 -1
  74. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  75. package/dist/dynamic/components/Tile/package.json +1 -1
  76. package/dist/dynamic/components/TimePicker/package.json +1 -1
  77. package/dist/dynamic/components/Timestamp/package.json +1 -1
  78. package/dist/dynamic/components/Title/package.json +1 -1
  79. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  80. package/dist/dynamic/components/Toolbar/package.json +1 -1
  81. package/dist/dynamic/components/Tooltip/package.json +1 -1
  82. package/dist/dynamic/components/TreeView/package.json +1 -1
  83. package/dist/dynamic/components/Truncate/package.json +1 -1
  84. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  85. package/dist/dynamic/components/Wizard/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/ApplicationLauncher/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
  91. package/dist/dynamic/deprecated/components/Select/package.json +1 -1
  92. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  93. package/dist/dynamic/deprecated/components/package.json +1 -1
  94. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  95. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  96. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  97. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  98. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  99. package/dist/dynamic/helpers/constants/package.json +1 -1
  100. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  101. package/dist/dynamic/helpers/favorites/package.json +1 -1
  102. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  103. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  104. package/dist/dynamic/helpers/package.json +1 -1
  105. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  106. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  107. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  108. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  109. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  110. package/dist/dynamic/helpers/util/package.json +1 -1
  111. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  112. package/dist/dynamic/layouts/Flex/package.json +1 -1
  113. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  114. package/dist/dynamic/layouts/Grid/package.json +1 -1
  115. package/dist/dynamic/layouts/Level/package.json +1 -1
  116. package/dist/dynamic/layouts/Split/package.json +1 -1
  117. package/dist/dynamic/layouts/Stack/package.json +1 -1
  118. package/dist/dynamic/next/components/DualListSelector/package.json +1 -0
  119. package/dist/dynamic/next/components/Modal/package.json +1 -1
  120. package/dist/dynamic/next/components/package.json +1 -1
  121. package/dist/dynamic/styles/package.json +1 -1
  122. package/dist/esm/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
  123. package/dist/esm/components/CalendarMonth/CalendarMonth.js +30 -12
  124. package/dist/esm/components/CalendarMonth/CalendarMonth.js.map +1 -1
  125. package/dist/esm/components/Card/Card.d.ts +13 -5
  126. package/dist/esm/components/Card/Card.d.ts.map +1 -1
  127. package/dist/esm/components/Card/Card.js +7 -3
  128. package/dist/esm/components/Card/Card.js.map +1 -1
  129. package/dist/esm/components/Card/CardHeader.d.ts +3 -1
  130. package/dist/esm/components/Card/CardHeader.d.ts.map +1 -1
  131. package/dist/esm/components/Card/CardHeader.js +10 -10
  132. package/dist/esm/components/Card/CardHeader.js.map +1 -1
  133. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts +6 -6
  134. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  135. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js +10 -2
  136. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  137. package/dist/esm/components/ClipboardCopy/ClipboardCopyExpanded.d.ts +1 -0
  138. package/dist/esm/components/ClipboardCopy/ClipboardCopyExpanded.d.ts.map +1 -1
  139. package/dist/esm/components/ClipboardCopy/ClipboardCopyExpanded.js.map +1 -1
  140. package/dist/esm/components/Dropdown/Dropdown.d.ts +4 -0
  141. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
  142. package/dist/esm/components/Dropdown/Dropdown.js +6 -5
  143. package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
  144. package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
  145. package/dist/esm/components/Menu/Menu.js +5 -1
  146. package/dist/esm/components/Menu/Menu.js.map +1 -1
  147. package/dist/esm/components/Menu/MenuContainer.js +2 -2
  148. package/dist/esm/components/Menu/MenuContainer.js.map +1 -1
  149. package/dist/esm/components/MenuToggle/MenuToggle.d.ts +9 -0
  150. package/dist/esm/components/MenuToggle/MenuToggle.d.ts.map +1 -1
  151. package/dist/esm/components/MenuToggle/MenuToggle.js +26 -2
  152. package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
  153. package/dist/esm/components/MenuToggle/MenuToggleCheckbox.js +2 -2
  154. package/dist/esm/components/MenuToggle/MenuToggleCheckbox.js.map +1 -1
  155. package/dist/esm/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
  156. package/dist/esm/components/Pagination/PaginationOptionsMenu.js +2 -4
  157. package/dist/esm/components/Pagination/PaginationOptionsMenu.js.map +1 -1
  158. package/dist/esm/components/SearchInput/SearchInput.d.ts +2 -0
  159. package/dist/esm/components/SearchInput/SearchInput.d.ts.map +1 -1
  160. package/dist/esm/components/SearchInput/SearchInput.js +2 -2
  161. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  162. package/dist/esm/components/Select/Select.d.ts +6 -0
  163. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  164. package/dist/esm/components/Select/Select.js +5 -5
  165. package/dist/esm/components/Select/Select.js.map +1 -1
  166. package/dist/esm/components/TextArea/TextArea.d.ts +0 -4
  167. package/dist/esm/components/TextArea/TextArea.d.ts.map +1 -1
  168. package/dist/esm/components/TextArea/TextArea.js.map +1 -1
  169. package/dist/esm/components/TextInputGroup/TextInputGroupMain.d.ts +2 -0
  170. package/dist/esm/components/TextInputGroup/TextInputGroupMain.d.ts.map +1 -1
  171. package/dist/esm/components/TextInputGroup/TextInputGroupMain.js +3 -3
  172. package/dist/esm/components/TextInputGroup/TextInputGroupMain.js.map +1 -1
  173. package/dist/esm/helpers/GenerateId/GenerateId.d.ts +5 -1
  174. package/dist/esm/helpers/GenerateId/GenerateId.d.ts.map +1 -1
  175. package/dist/esm/helpers/GenerateId/GenerateId.js +14 -2
  176. package/dist/esm/helpers/GenerateId/GenerateId.js.map +1 -1
  177. package/dist/esm/helpers/Popper/Popper.js +2 -2
  178. package/dist/esm/helpers/Popper/Popper.js.map +1 -1
  179. package/dist/esm/index.d.ts.map +1 -1
  180. package/dist/esm/index.js.map +1 -1
  181. package/dist/esm/next/components/DualListSelector/DualListSelector.d.ts +23 -0
  182. package/dist/esm/next/components/DualListSelector/DualListSelector.d.ts.map +1 -0
  183. package/dist/esm/next/components/DualListSelector/DualListSelector.js +23 -0
  184. package/dist/esm/next/components/DualListSelector/DualListSelector.js.map +1 -0
  185. package/dist/esm/next/components/DualListSelector/DualListSelectorContext.d.ts +19 -0
  186. package/dist/esm/next/components/DualListSelector/DualListSelectorContext.d.ts.map +1 -0
  187. package/dist/esm/next/components/DualListSelector/DualListSelectorContext.js +5 -0
  188. package/dist/esm/next/components/DualListSelector/DualListSelectorContext.js.map +1 -0
  189. package/dist/esm/next/components/DualListSelector/DualListSelectorControl.d.ts +25 -0
  190. package/dist/esm/next/components/DualListSelector/DualListSelectorControl.d.ts.map +1 -0
  191. package/dist/esm/next/components/DualListSelector/DualListSelectorControl.js +18 -0
  192. package/dist/esm/next/components/DualListSelector/DualListSelectorControl.js.map +1 -0
  193. package/dist/esm/next/components/DualListSelector/DualListSelectorControlsWrapper.d.ts +15 -0
  194. package/dist/esm/next/components/DualListSelector/DualListSelectorControlsWrapper.d.ts.map +1 -0
  195. package/dist/esm/next/components/DualListSelector/DualListSelectorControlsWrapper.js +35 -0
  196. package/dist/esm/next/components/DualListSelector/DualListSelectorControlsWrapper.js.map +1 -0
  197. package/dist/esm/next/components/DualListSelector/DualListSelectorList.d.ts +8 -0
  198. package/dist/esm/next/components/DualListSelector/DualListSelectorList.d.ts.map +1 -0
  199. package/dist/esm/next/components/DualListSelector/DualListSelectorList.js +26 -0
  200. package/dist/esm/next/components/DualListSelector/DualListSelectorList.js.map +1 -0
  201. package/dist/esm/next/components/DualListSelector/DualListSelectorListItem.d.ts +29 -0
  202. package/dist/esm/next/components/DualListSelector/DualListSelectorListItem.d.ts.map +1 -0
  203. package/dist/esm/next/components/DualListSelector/DualListSelectorListItem.js +38 -0
  204. package/dist/esm/next/components/DualListSelector/DualListSelectorListItem.js.map +1 -0
  205. package/dist/esm/next/components/DualListSelector/DualListSelectorListWrapper.d.ts +24 -0
  206. package/dist/esm/next/components/DualListSelector/DualListSelectorListWrapper.d.ts.map +1 -0
  207. package/dist/esm/next/components/DualListSelector/DualListSelectorListWrapper.js +59 -0
  208. package/dist/esm/next/components/DualListSelector/DualListSelectorListWrapper.js.map +1 -0
  209. package/dist/esm/next/components/DualListSelector/DualListSelectorPane.d.ts +31 -0
  210. package/dist/esm/next/components/DualListSelector/DualListSelectorPane.d.ts.map +1 -0
  211. package/dist/esm/next/components/DualListSelector/DualListSelectorPane.js +27 -0
  212. package/dist/esm/next/components/DualListSelector/DualListSelectorPane.js.map +1 -0
  213. package/dist/esm/next/components/DualListSelector/DualListSelectorTree.d.ts +48 -0
  214. package/dist/esm/next/components/DualListSelector/DualListSelectorTree.d.ts.map +1 -0
  215. package/dist/esm/next/components/DualListSelector/DualListSelectorTree.js +15 -0
  216. package/dist/esm/next/components/DualListSelector/DualListSelectorTree.js.map +1 -0
  217. package/dist/esm/next/components/DualListSelector/DualListSelectorTreeItem.d.ts +32 -0
  218. package/dist/esm/next/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -0
  219. package/dist/esm/next/components/DualListSelector/DualListSelectorTreeItem.js +75 -0
  220. package/dist/esm/next/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -0
  221. package/dist/esm/next/components/DualListSelector/index.d.ts +8 -0
  222. package/dist/esm/next/components/DualListSelector/index.d.ts.map +1 -0
  223. package/dist/esm/next/components/DualListSelector/index.js +8 -0
  224. package/dist/esm/next/components/DualListSelector/index.js.map +1 -0
  225. package/dist/esm/next/components/DualListSelector/treeUtils.d.ts +8 -0
  226. package/dist/esm/next/components/DualListSelector/treeUtils.d.ts.map +1 -0
  227. package/dist/esm/next/components/DualListSelector/treeUtils.js +68 -0
  228. package/dist/esm/next/components/DualListSelector/treeUtils.js.map +1 -0
  229. package/dist/esm/next/components/index.d.ts +1 -0
  230. package/dist/esm/next/components/index.d.ts.map +1 -1
  231. package/dist/esm/next/components/index.js +1 -0
  232. package/dist/esm/next/components/index.js.map +1 -1
  233. package/dist/js/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
  234. package/dist/js/components/CalendarMonth/CalendarMonth.js +30 -12
  235. package/dist/js/components/CalendarMonth/CalendarMonth.js.map +1 -1
  236. package/dist/js/components/Card/Card.d.ts +13 -5
  237. package/dist/js/components/Card/Card.d.ts.map +1 -1
  238. package/dist/js/components/Card/Card.js +7 -3
  239. package/dist/js/components/Card/Card.js.map +1 -1
  240. package/dist/js/components/Card/CardHeader.d.ts +3 -1
  241. package/dist/js/components/Card/CardHeader.d.ts.map +1 -1
  242. package/dist/js/components/Card/CardHeader.js +10 -10
  243. package/dist/js/components/Card/CardHeader.js.map +1 -1
  244. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts +6 -6
  245. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  246. package/dist/js/components/ClipboardCopy/ClipboardCopy.js +10 -2
  247. package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  248. package/dist/js/components/ClipboardCopy/ClipboardCopyExpanded.d.ts +1 -0
  249. package/dist/js/components/ClipboardCopy/ClipboardCopyExpanded.d.ts.map +1 -1
  250. package/dist/js/components/ClipboardCopy/ClipboardCopyExpanded.js.map +1 -1
  251. package/dist/js/components/Dropdown/Dropdown.d.ts +4 -0
  252. package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
  253. package/dist/js/components/Dropdown/Dropdown.js +6 -5
  254. package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
  255. package/dist/js/components/Menu/Menu.d.ts.map +1 -1
  256. package/dist/js/components/Menu/Menu.js +5 -1
  257. package/dist/js/components/Menu/Menu.js.map +1 -1
  258. package/dist/js/components/Menu/MenuContainer.js +2 -2
  259. package/dist/js/components/Menu/MenuContainer.js.map +1 -1
  260. package/dist/js/components/MenuToggle/MenuToggle.d.ts +9 -0
  261. package/dist/js/components/MenuToggle/MenuToggle.d.ts.map +1 -1
  262. package/dist/js/components/MenuToggle/MenuToggle.js +27 -3
  263. package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
  264. package/dist/js/components/MenuToggle/MenuToggleCheckbox.js +2 -2
  265. package/dist/js/components/MenuToggle/MenuToggleCheckbox.js.map +1 -1
  266. package/dist/js/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
  267. package/dist/js/components/Pagination/PaginationOptionsMenu.js +2 -4
  268. package/dist/js/components/Pagination/PaginationOptionsMenu.js.map +1 -1
  269. package/dist/js/components/SearchInput/SearchInput.d.ts +2 -0
  270. package/dist/js/components/SearchInput/SearchInput.d.ts.map +1 -1
  271. package/dist/js/components/SearchInput/SearchInput.js +2 -2
  272. package/dist/js/components/SearchInput/SearchInput.js.map +1 -1
  273. package/dist/js/components/Select/Select.d.ts +6 -0
  274. package/dist/js/components/Select/Select.d.ts.map +1 -1
  275. package/dist/js/components/Select/Select.js +5 -5
  276. package/dist/js/components/Select/Select.js.map +1 -1
  277. package/dist/js/components/TextArea/TextArea.d.ts +0 -4
  278. package/dist/js/components/TextArea/TextArea.d.ts.map +1 -1
  279. package/dist/js/components/TextArea/TextArea.js.map +1 -1
  280. package/dist/js/components/TextInputGroup/TextInputGroupMain.d.ts +2 -0
  281. package/dist/js/components/TextInputGroup/TextInputGroupMain.d.ts.map +1 -1
  282. package/dist/js/components/TextInputGroup/TextInputGroupMain.js +3 -3
  283. package/dist/js/components/TextInputGroup/TextInputGroupMain.js.map +1 -1
  284. package/dist/js/helpers/GenerateId/GenerateId.d.ts +5 -1
  285. package/dist/js/helpers/GenerateId/GenerateId.d.ts.map +1 -1
  286. package/dist/js/helpers/GenerateId/GenerateId.js +14 -2
  287. package/dist/js/helpers/GenerateId/GenerateId.js.map +1 -1
  288. package/dist/js/helpers/Popper/Popper.js +2 -2
  289. package/dist/js/helpers/Popper/Popper.js.map +1 -1
  290. package/dist/js/index.d.ts.map +1 -1
  291. package/dist/js/index.js.map +1 -1
  292. package/dist/js/next/components/DualListSelector/DualListSelector.d.ts +23 -0
  293. package/dist/js/next/components/DualListSelector/DualListSelector.d.ts.map +1 -0
  294. package/dist/js/next/components/DualListSelector/DualListSelector.js +26 -0
  295. package/dist/js/next/components/DualListSelector/DualListSelector.js.map +1 -0
  296. package/dist/js/next/components/DualListSelector/DualListSelectorContext.d.ts +19 -0
  297. package/dist/js/next/components/DualListSelector/DualListSelectorContext.d.ts.map +1 -0
  298. package/dist/js/next/components/DualListSelector/DualListSelectorContext.js +9 -0
  299. package/dist/js/next/components/DualListSelector/DualListSelectorContext.js.map +1 -0
  300. package/dist/js/next/components/DualListSelector/DualListSelectorControl.d.ts +25 -0
  301. package/dist/js/next/components/DualListSelector/DualListSelectorControl.d.ts.map +1 -0
  302. package/dist/js/next/components/DualListSelector/DualListSelectorControl.js +22 -0
  303. package/dist/js/next/components/DualListSelector/DualListSelectorControl.js.map +1 -0
  304. package/dist/js/next/components/DualListSelector/DualListSelectorControlsWrapper.d.ts +15 -0
  305. package/dist/js/next/components/DualListSelector/DualListSelectorControlsWrapper.d.ts.map +1 -0
  306. package/dist/js/next/components/DualListSelector/DualListSelectorControlsWrapper.js +39 -0
  307. package/dist/js/next/components/DualListSelector/DualListSelectorControlsWrapper.js.map +1 -0
  308. package/dist/js/next/components/DualListSelector/DualListSelectorList.d.ts +8 -0
  309. package/dist/js/next/components/DualListSelector/DualListSelectorList.d.ts.map +1 -0
  310. package/dist/js/next/components/DualListSelector/DualListSelectorList.js +30 -0
  311. package/dist/js/next/components/DualListSelector/DualListSelectorList.js.map +1 -0
  312. package/dist/js/next/components/DualListSelector/DualListSelectorListItem.d.ts +29 -0
  313. package/dist/js/next/components/DualListSelector/DualListSelectorListItem.d.ts.map +1 -0
  314. package/dist/js/next/components/DualListSelector/DualListSelectorListItem.js +42 -0
  315. package/dist/js/next/components/DualListSelector/DualListSelectorListItem.js.map +1 -0
  316. package/dist/js/next/components/DualListSelector/DualListSelectorListWrapper.d.ts +24 -0
  317. package/dist/js/next/components/DualListSelector/DualListSelectorListWrapper.d.ts.map +1 -0
  318. package/dist/js/next/components/DualListSelector/DualListSelectorListWrapper.js +63 -0
  319. package/dist/js/next/components/DualListSelector/DualListSelectorListWrapper.js.map +1 -0
  320. package/dist/js/next/components/DualListSelector/DualListSelectorPane.d.ts +31 -0
  321. package/dist/js/next/components/DualListSelector/DualListSelectorPane.d.ts.map +1 -0
  322. package/dist/js/next/components/DualListSelector/DualListSelectorPane.js +31 -0
  323. package/dist/js/next/components/DualListSelector/DualListSelectorPane.js.map +1 -0
  324. package/dist/js/next/components/DualListSelector/DualListSelectorTree.d.ts +48 -0
  325. package/dist/js/next/components/DualListSelector/DualListSelectorTree.d.ts.map +1 -0
  326. package/dist/js/next/components/DualListSelector/DualListSelectorTree.js +19 -0
  327. package/dist/js/next/components/DualListSelector/DualListSelectorTree.js.map +1 -0
  328. package/dist/js/next/components/DualListSelector/DualListSelectorTreeItem.d.ts +32 -0
  329. package/dist/js/next/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -0
  330. package/dist/js/next/components/DualListSelector/DualListSelectorTreeItem.js +78 -0
  331. package/dist/js/next/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -0
  332. package/dist/js/next/components/DualListSelector/index.d.ts +8 -0
  333. package/dist/js/next/components/DualListSelector/index.d.ts.map +1 -0
  334. package/dist/js/next/components/DualListSelector/index.js +11 -0
  335. package/dist/js/next/components/DualListSelector/index.js.map +1 -0
  336. package/dist/js/next/components/DualListSelector/treeUtils.d.ts +8 -0
  337. package/dist/js/next/components/DualListSelector/treeUtils.d.ts.map +1 -0
  338. package/dist/js/next/components/DualListSelector/treeUtils.js +77 -0
  339. package/dist/js/next/components/DualListSelector/treeUtils.js.map +1 -0
  340. package/dist/js/next/components/index.d.ts +1 -0
  341. package/dist/js/next/components/index.d.ts.map +1 -1
  342. package/dist/js/next/components/index.js +1 -0
  343. package/dist/js/next/components/index.js.map +1 -1
  344. package/dist/umd/react-core.min.js +3 -3
  345. package/helpers/package.json +1 -1
  346. package/layouts/package.json +1 -1
  347. package/next/package.json +1 -1
  348. package/package.json +6 -6
  349. package/src/components/CalendarMonth/CalendarMonth.tsx +38 -13
  350. package/src/components/Card/Card.tsx +24 -7
  351. package/src/components/Card/CardHeader.tsx +11 -10
  352. package/src/components/Card/examples/Card.md +11 -9
  353. package/src/components/Card/examples/CardClickableSelectable.tsx +11 -8
  354. package/src/components/Card/examples/CardSelectable.tsx +3 -6
  355. package/src/components/Card/examples/CardSingleSelectable.tsx +14 -6
  356. package/src/components/Chip/__tests__/ChipGroup.test.tsx +3 -1
  357. package/src/components/ClipboardCopy/ClipboardCopy.tsx +21 -7
  358. package/src/components/ClipboardCopy/ClipboardCopyExpanded.tsx +1 -0
  359. package/src/components/ClipboardCopy/__tests__/ClipboardCopy.test.tsx +2 -0
  360. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopy.test.tsx.snap +1 -1
  361. package/src/components/DragDrop/examples/DragDrop.md +1 -0
  362. package/src/components/Drawer/__tests__/Drawer.test.tsx +2 -0
  363. package/src/components/Drawer/__tests__/DrawerPanelContent.test.tsx +2 -0
  364. package/src/components/Drawer/__tests__/Generated/DrawerPanelContent.test.tsx +2 -0
  365. package/src/components/Drawer/__tests__/Generated/__snapshots__/DrawerPanelContent.test.tsx.snap +1 -1
  366. package/src/components/Drawer/__tests__/__snapshots__/Drawer.test.tsx.snap +8 -8
  367. package/src/components/Dropdown/Dropdown.tsx +14 -4
  368. package/src/components/Form/__tests__/FormFieldGroup.test.tsx +2 -0
  369. package/src/components/Form/__tests__/FormSection.test.tsx +2 -0
  370. package/src/components/Form/__tests__/__snapshots__/FormFieldGroup.test.tsx.snap +2 -2
  371. package/src/components/Form/__tests__/__snapshots__/FormSection.test.tsx.snap +2 -2
  372. package/src/components/Label/__tests__/LabelGroup.test.tsx +2 -0
  373. package/src/components/Label/__tests__/__snapshots__/LabelGroup.test.tsx.snap +8 -8
  374. package/src/components/Menu/Menu.tsx +5 -3
  375. package/src/components/Menu/MenuContainer.tsx +2 -2
  376. package/src/components/MenuToggle/MenuToggle.tsx +33 -0
  377. package/src/components/MenuToggle/MenuToggleCheckbox.tsx +2 -2
  378. package/src/components/MenuToggle/__tests__/MenuToggle.test.tsx +15 -0
  379. package/src/components/MenuToggle/examples/MenuToggle.md +28 -13
  380. package/src/components/MenuToggle/examples/MenuToggleStatus.tsx +20 -0
  381. package/src/components/MultipleFileUpload/__tests__/MultipleFileUpload.test.tsx +2 -0
  382. package/src/components/MultipleFileUpload/__tests__/MultipleFileUploadStatus.test.tsx +2 -0
  383. package/src/components/MultipleFileUpload/__tests__/__snapshots__/MultipleFileUploadStatus.test.tsx.snap +16 -16
  384. package/src/components/Pagination/PaginationOptionsMenu.tsx +2 -4
  385. package/src/components/SearchInput/SearchInput.tsx +4 -0
  386. package/src/components/SearchInput/__tests__/SearchInput.test.tsx +1 -0
  387. package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +2 -2
  388. package/src/components/Select/Select.tsx +15 -3
  389. package/src/components/Select/examples/Select.md +30 -11
  390. package/src/components/Select/examples/SelectMultiTypeaheadCheckbox.tsx +6 -1
  391. package/src/components/Select/examples/SelectValidated.tsx +74 -0
  392. package/src/components/Tabs/__tests__/Tabs.test.tsx +2 -0
  393. package/src/components/Tabs/__tests__/__snapshots__/Tabs.test.tsx.snap +3 -3
  394. package/src/components/TextArea/TextArea.tsx +0 -4
  395. package/src/components/TextInputGroup/TextInputGroupMain.tsx +5 -0
  396. package/src/components/TextInputGroup/__tests__/TextInputGroupMain.test.tsx +8 -0
  397. package/src/components/Toolbar/__tests__/Toolbar.test.tsx +2 -0
  398. package/src/components/Toolbar/__tests__/__snapshots__/Toolbar.test.tsx.snap +11 -11
  399. package/src/demos/AlertGroup.md +1 -0
  400. package/src/demos/BackToTop.md +1 -0
  401. package/src/demos/Banner.md +5 -4
  402. package/src/demos/CardView/CardView.md +2 -0
  403. package/src/demos/CardView/examples/CardView.tsx +1 -1
  404. package/src/demos/DataList/examples/DataListBasic.tsx +1 -1
  405. package/src/demos/DataList/examples/DataListExpandableControlInToolbar.tsx +1 -1
  406. package/src/demos/DataListDemo.md +1 -0
  407. package/src/demos/Filters/examples/FilterAttributeSearch.tsx +1 -1
  408. package/src/demos/Filters/examples/FilterCheckboxSelect.tsx +1 -1
  409. package/src/demos/Filters/examples/FilterFaceted.tsx +1 -1
  410. package/src/demos/Filters/examples/FilterMixedSelectGroup.tsx +1 -1
  411. package/src/demos/Filters/examples/FilterSameSelectGroup.tsx +1 -1
  412. package/src/demos/Filters/examples/FilterSearchInput.tsx +1 -1
  413. package/src/demos/Filters/examples/FilterSingleSelect.tsx +1 -1
  414. package/src/demos/JumpLinks.md +2 -1
  415. package/src/demos/PrimaryDetail.md +1 -0
  416. package/src/demos/Tabs.md +5 -2
  417. package/src/demos/Toolbar.md +1 -0
  418. package/src/demos/Wizard/WizardDemo.md +1 -0
  419. package/src/demos/examples/AlertGroup/AlertGroupToastWithNotificationDrawer.tsx +1 -1
  420. package/src/demos/examples/BackToTop/BackToTopNameDemo.tsx +1 -1
  421. package/src/demos/examples/Card/CardStatus.tsx +1 -1
  422. package/src/demos/examples/JumpLinks/JumpLinksWithDrawer.js +1 -1
  423. package/src/demos/examples/Nav/NavDefault.tsx +1 -1
  424. package/src/demos/examples/Nav/NavExpandable.tsx +1 -1
  425. package/src/demos/examples/Nav/NavHorizontal.tsx +1 -1
  426. package/src/demos/examples/Nav/NavHorizontalWithSubnav.tsx +1 -1
  427. package/src/demos/examples/Nav/NavWithSubnav.tsx +1 -1
  428. package/src/demos/examples/Nav/deprecated/NavTertiary.tsx +1 -1
  429. package/src/demos/examples/PrimaryDetail/PrimaryDetailCardView.tsx +1 -1
  430. package/src/demos/examples/PrimaryDetail/PrimaryDetailContentPadding.tsx +1 -1
  431. package/src/demos/examples/PrimaryDetail/PrimaryDetailDataListInCard.tsx +1 -1
  432. package/src/demos/examples/PrimaryDetail/PrimaryDetailFullPage.tsx +1 -1
  433. package/src/demos/examples/PrimaryDetail/PrimaryDetailInlineModifier.tsx +1 -1
  434. package/src/demos/examples/PrimaryDetail/PrimaryDetailSimpleListInCard.tsx +1 -1
  435. package/src/demos/examples/Tabs/ModalTabs.tsx +1 -1
  436. package/src/demos/examples/Tabs/NestedTabs.tsx +1 -1
  437. package/src/demos/examples/Tabs/NestedUnindentedTabs.tsx +1 -1
  438. package/src/demos/examples/Tabs/TabsAndTable.tsx +2 -2
  439. package/src/demos/examples/Toolbar/ConsoleLogViewerToolbar.tsx +1 -1
  440. package/src/demos/examples/Wizard/InModal.tsx +1 -1
  441. package/src/demos/examples/Wizard/InPage.tsx +1 -1
  442. package/src/deprecated/components/Select/__tests__/Select.test.tsx +2 -0
  443. package/src/deprecated/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +25 -25
  444. package/src/helpers/GenerateId/GenerateId.ts +17 -3
  445. package/src/helpers/GenerateId/__mocks__/GenerateId.ts +11 -0
  446. package/src/helpers/GenerateId/__tests__/GenerateId.test.tsx +3 -1
  447. package/src/helpers/Popper/Popper.tsx +1 -1
  448. package/src/index.ts +0 -1
  449. package/src/next/components/DualListSelector/DualListSelector.tsx +50 -0
  450. package/src/next/components/DualListSelector/DualListSelectorContext.ts +21 -0
  451. package/src/next/components/DualListSelector/DualListSelectorControl.tsx +66 -0
  452. package/src/next/components/DualListSelector/DualListSelectorControlsWrapper.tsx +87 -0
  453. package/src/next/components/DualListSelector/DualListSelectorList.tsx +57 -0
  454. package/src/next/components/DualListSelector/DualListSelectorListItem.tsx +105 -0
  455. package/src/next/components/DualListSelector/DualListSelectorListWrapper.tsx +124 -0
  456. package/src/next/components/DualListSelector/DualListSelectorPane.tsx +94 -0
  457. package/src/next/components/DualListSelector/DualListSelectorTree.tsx +110 -0
  458. package/src/next/components/DualListSelector/DualListSelectorTreeItem.tsx +184 -0
  459. package/src/next/components/DualListSelector/__tests__/DualListSelector.test.tsx +26 -0
  460. package/src/next/components/DualListSelector/__tests__/__snapshots__/DualListSelector.test.tsx.snap +122 -0
  461. package/src/next/components/DualListSelector/examples/DualListSelector.md +99 -0
  462. package/src/next/components/DualListSelector/examples/DualListSelectorBasic.tsx +157 -0
  463. package/src/next/components/DualListSelector/examples/DualListSelectorBasicSearch.tsx +214 -0
  464. package/src/next/components/DualListSelector/examples/DualListSelectorBasicTooltips.tsx +165 -0
  465. package/src/next/components/DualListSelector/examples/DualListSelectorComplexOptionsActions.tsx +347 -0
  466. package/src/next/components/DualListSelector/examples/DualListSelectorDragDrop.tsx +184 -0
  467. package/src/next/components/DualListSelector/examples/DualListSelectorTree.tsx +380 -0
  468. package/src/next/components/DualListSelector/index.ts +7 -0
  469. package/src/next/components/DualListSelector/treeUtils.ts +81 -0
  470. package/src/next/components/index.ts +1 -0
  471. package/dist/esm/demos/index.d.ts +0 -3
  472. package/dist/esm/demos/index.d.ts.map +0 -1
  473. package/dist/esm/demos/index.js +0 -3
  474. package/dist/esm/demos/index.js.map +0 -1
  475. package/dist/js/demos/index.d.ts +0 -3
  476. package/dist/js/demos/index.d.ts.map +0 -1
  477. package/dist/js/demos/index.js +0 -6
  478. package/dist/js/demos/index.js.map +0 -1
  479. package/src/demos/index.ts +0 -2
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"5.3.0-prerelease.1","private":true}
1
+ {"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"5.3.0-prerelease.19","private":true}
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"5.3.0-prerelease.1","private":true}
1
+ {"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"5.3.0-prerelease.19","private":true}
package/next/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"5.3.0-prerelease.1","private":true}
1
+ {"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"5.3.0-prerelease.19","private":true}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-core",
3
- "version": "5.3.0-prerelease.2",
3
+ "version": "5.3.0-prerelease.20",
4
4
  "description": "This library provides a set of common React components for use with the PatternFly reference implementation.",
5
5
  "main": "dist/js/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -46,15 +46,15 @@
46
46
  "clean:exports": "node scripts/cleanDistExports.js"
47
47
  },
48
48
  "dependencies": {
49
- "@patternfly/react-icons": "^5.3.0-prerelease.0",
50
- "@patternfly/react-styles": "^5.3.0-prerelease.0",
51
- "@patternfly/react-tokens": "^5.3.0-prerelease.0",
49
+ "@patternfly/react-icons": "^5.3.0-prerelease.3",
50
+ "@patternfly/react-styles": "^5.3.0-prerelease.3",
51
+ "@patternfly/react-tokens": "^5.3.0-prerelease.3",
52
52
  "focus-trap": "7.5.2",
53
53
  "react-dropzone": "^14.2.3",
54
54
  "tslib": "^2.5.0"
55
55
  },
56
56
  "devDependencies": {
57
- "@patternfly/patternfly": "5.2.0",
57
+ "@patternfly/patternfly": "5.3.0-prerelease.5",
58
58
  "@rollup/plugin-commonjs": "^25.0.0",
59
59
  "@rollup/plugin-node-resolve": "^15.0.2",
60
60
  "@rollup/plugin-replace": "^5.0.2",
@@ -72,5 +72,5 @@
72
72
  "react": "^17 || ^18",
73
73
  "react-dom": "^17 || ^18"
74
74
  },
75
- "gitHead": "08a6b1aaaf6769b657ed674f4bb741b530265c7d"
75
+ "gitHead": "544cbe8e7040e1edfa80fbc2d65fa9802c7183ed"
76
76
  }
@@ -83,9 +83,6 @@ export interface CalendarProps extends CalendarFormat, Omit<React.HTMLProps<HTML
83
83
  validators?: ((date: Date) => boolean)[];
84
84
  }
85
85
 
86
- // Must be numeric given current header design
87
- const yearFormat = (date: Date) => date.getFullYear();
88
-
89
86
  const buildCalendar = (year: number, month: number, weekStart: number, validators: ((date: Date) => boolean)[]) => {
90
87
  const defaultDate = new Date(year, month);
91
88
 
@@ -164,6 +161,13 @@ export const CalendarMonth = ({
164
161
  };
165
162
  const initialDate = getInitialDate();
166
163
  const [focusedDate, setFocusedDate] = React.useState(initialDate);
164
+
165
+ // Must be numeric given current header design
166
+ const yearFormat = (date: Date) => date.getFullYear();
167
+ //
168
+ const yearFormatted = yearFormat(focusedDate);
169
+ const [yearInput, setYearInput] = React.useState(yearFormatted.toString());
170
+
167
171
  const [hoveredDate, setHoveredDate] = React.useState(new Date(focusedDate));
168
172
  const focusRef = React.useRef<HTMLButtonElement>();
169
173
  const [hiddenMonthId] = React.useState(getUniqueId('hidden-month-span'));
@@ -191,6 +195,7 @@ export const CalendarMonth = ({
191
195
  setHoveredDate(newDate);
192
196
  setShouldFocus(false);
193
197
  onMonthChange(ev, newDate);
198
+ setYearInput(yearFormat(newDate).toString());
194
199
  };
195
200
 
196
201
  const onKeyDown = (ev: React.KeyboardEvent<HTMLTableSectionElement>) => {
@@ -217,6 +222,34 @@ export const CalendarMonth = ({
217
222
  const changeMonth = (newMonth: number, newYear?: number) =>
218
223
  new Date(newYear ?? focusedDate.getFullYear(), newMonth, 1);
219
224
 
225
+ const MIN_YEAR = 1900;
226
+ const MAX_YEAR = 2100;
227
+
228
+ const handleYearInputChange = (event: React.FormEvent<HTMLInputElement>, yearStr: string) => {
229
+ if (!/^\d{0,4}$/.test(yearStr)) {
230
+ return;
231
+ }
232
+
233
+ setYearInput(yearStr);
234
+
235
+ if (yearStr.length === 4) {
236
+ const yearNum = Number(yearStr);
237
+
238
+ if (yearNum >= MIN_YEAR && yearNum <= MAX_YEAR) {
239
+ const newDate = changeYear(yearNum);
240
+ setFocusedDate(newDate);
241
+ setHoveredDate(newDate);
242
+ setShouldFocus(false);
243
+
244
+ // We need to manually focus the year input in FireFox when the scroll buttons are clicked, as FireFox doesn't place focus automatically
245
+ (event.target as HTMLElement).focus();
246
+ onMonthChange(event, newDate);
247
+ } else {
248
+ setYearInput(yearFormatted.toString());
249
+ }
250
+ }
251
+ };
252
+
220
253
  const addMonth = (toAdd: -1 | 1) => {
221
254
  let newMonth = focusedDate.getMonth() + toAdd;
222
255
  let newYear = focusedDate.getFullYear();
@@ -254,7 +287,6 @@ export const CalendarMonth = ({
254
287
  }
255
288
  const isHoveredDateValid = isValidated(hoveredDate);
256
289
  const monthFormatted = monthFormat(focusedDate);
257
- const yearFormatted = yearFormat(focusedDate);
258
290
 
259
291
  const calendarToRender = (
260
292
  <div className={css(styles.calendarMonth, className)} {...props}>
@@ -321,15 +353,8 @@ export const CalendarMonth = ({
321
353
  <TextInput
322
354
  aria-label={yearInputAriaLabel}
323
355
  type="number"
324
- value={yearFormatted}
325
- onChange={(ev: React.FormEvent<HTMLInputElement>, year: string) => {
326
- const newDate = changeYear(Number(year));
327
- setFocusedDate(newDate);
328
- setHoveredDate(newDate);
329
- setShouldFocus(false);
330
- focusRef.current?.blur(); // will unfocus a date when changing year via up/down arrows
331
- onMonthChange(ev, newDate);
332
- }}
356
+ value={yearInput}
357
+ onChange={handleYearInputChange}
333
358
  />
334
359
  </div>
335
360
  </InputGroupItem>
@@ -14,15 +14,21 @@ export interface CardProps extends React.HTMLProps<HTMLElement>, OUIAProps {
14
14
  component?: keyof JSX.IntrinsicElements;
15
15
  /** Modifies the card to include compact styling. Should not be used with isLarge. */
16
16
  isCompact?: boolean;
17
- /** Modifies the card to include selectable styling */
17
+ /** Flag indicating that the card is selectable. */
18
18
  isSelectable?: boolean;
19
19
  /** @deprecated Specifies the card is selectable, and applies raised styling on hover and select */
20
20
  isSelectableRaised?: boolean;
21
- /** Modifies the card to include selected styling */
22
- isSelected?: boolean;
23
- /** Modifies the card to include clickable styling */
21
+ /** Flag indicating that the card is clickable and contains some action that triggers on click. */
24
22
  isClickable?: boolean;
25
- /** Modifies a clickable or selectable card to have disabled styling. */
23
+ /** Flag indicating whether a card that is either selectable only or both clickable and selectable is
24
+ * currently selected and has selected styling.
25
+ */
26
+ isSelected?: boolean;
27
+ /** Flag indicating whether a card that is either only clickable or that is both clickable and selectable
28
+ * is currently clicked and has clicked styling.
29
+ */
30
+ isClicked?: boolean;
31
+ /** Flag indicating that a clickable or selectable card is disabled. */
26
32
  isDisabled?: boolean;
27
33
  /** @deprecated Modifies a raised selectable card to have disabled styling */
28
34
  isDisabledRaised?: boolean;
@@ -56,6 +62,8 @@ interface CardContextProps {
56
62
  isExpanded: boolean;
57
63
  isClickable: boolean;
58
64
  isSelectable: boolean;
65
+ isSelected: boolean;
66
+ isClicked: boolean;
59
67
  isDisabled: boolean;
60
68
  // TODO: Remove hasSelectableInput when deprecated prop is removed
61
69
  hasSelectableInput: boolean;
@@ -72,6 +80,8 @@ export const CardContext = React.createContext<Partial<CardContextProps>>({
72
80
  isExpanded: false,
73
81
  isClickable: false,
74
82
  isSelectable: false,
83
+ isSelected: false,
84
+ isClicked: false,
75
85
  isDisabled: false
76
86
  });
77
87
 
@@ -86,6 +96,7 @@ export const Card: React.FunctionComponent<CardProps> = ({
86
96
  isDisabled = false,
87
97
  isSelectableRaised = false,
88
98
  isSelected = false,
99
+ isClicked = false,
89
100
  isDisabledRaised = false,
90
101
  isFlat = false,
91
102
  isExpanded = false,
@@ -119,7 +130,11 @@ export const Card: React.FunctionComponent<CardProps> = ({
119
130
  return css(styles.modifiers.selectableRaised, isSelected && styles.modifiers.selectedRaised);
120
131
  }
121
132
  if (isSelectable && isClickable) {
122
- return css(styles.modifiers.selectable, styles.modifiers.clickable, isSelected && styles.modifiers.current);
133
+ return css(
134
+ styles.modifiers.selectable,
135
+ styles.modifiers.clickable,
136
+ (isSelected || isClicked) && styles.modifiers.current
137
+ );
123
138
  }
124
139
 
125
140
  if (isSelectable) {
@@ -127,7 +142,7 @@ export const Card: React.FunctionComponent<CardProps> = ({
127
142
  }
128
143
 
129
144
  if (isClickable) {
130
- return css(styles.modifiers.clickable, isSelected && styles.modifiers.selected);
145
+ return css(styles.modifiers.clickable, isClicked && styles.modifiers.current);
131
146
  }
132
147
 
133
148
  return '';
@@ -162,6 +177,8 @@ export const Card: React.FunctionComponent<CardProps> = ({
162
177
  isExpanded,
163
178
  isClickable,
164
179
  isSelectable,
180
+ isSelected,
181
+ isClicked,
165
182
  isDisabled,
166
183
  // TODO: Remove hasSelectableInput when deprecated prop is removed
167
184
  hasSelectableInput
@@ -44,7 +44,9 @@ export interface CardHeaderSelectableActionsObject {
44
44
  isExternalLink?: boolean;
45
45
  /** Name for the input element of a clickable or selectable card. */
46
46
  name?: string;
47
- /** Flag indicating whether the selectable card input is checked */
47
+ /** @deprecated Flag indicating whether the selectable card input is checked. We recommend using
48
+ * the isSelected prop on the card component instead.
49
+ */
48
50
  isChecked?: boolean;
49
51
  }
50
52
 
@@ -80,7 +82,7 @@ export const CardHeader: React.FunctionComponent<CardHeaderProps> = ({
80
82
  }: CardHeaderProps) => (
81
83
  <CardContext.Consumer>
82
84
  {/* TODO: Remove hasSelectableInput when deprecated props are removed */}
83
- {({ cardId, isClickable, isSelectable, isDisabled: isCardDisabled, hasSelectableInput }) => {
85
+ {({ cardId, isClickable, isSelectable, isSelected, isClicked, isDisabled: isCardDisabled, hasSelectableInput }) => {
84
86
  const cardHeaderToggle = (
85
87
  <div className={css(styles.cardHeaderToggle)}>
86
88
  <Button
@@ -112,12 +114,10 @@ export const CardHeader: React.FunctionComponent<CardHeaderProps> = ({
112
114
  }
113
115
 
114
116
  const handleActionClick = (event: React.FormEvent<HTMLInputElement> | React.MouseEvent) => {
115
- if (isClickable) {
116
- if (selectableActions?.onClickAction) {
117
- selectableActions.onClickAction(event);
118
- } else if (selectableActions?.to) {
119
- window.open(selectableActions.to, selectableActions.isExternalLink ? '_blank' : '_self');
120
- }
117
+ if (selectableActions?.onClickAction) {
118
+ selectableActions.onClickAction(event);
119
+ } else if (selectableActions?.to) {
120
+ window.open(selectableActions.to, selectableActions.isExternalLink ? '_blank' : '_self');
121
121
  }
122
122
  };
123
123
 
@@ -132,12 +132,13 @@ export const CardHeader: React.FunctionComponent<CardHeaderProps> = ({
132
132
  name: selectableActions.name,
133
133
  isDisabled: isCardDisabled
134
134
  };
135
+ const isSelectableInputChecked = selectableActions.isChecked ?? isSelected;
135
136
 
136
137
  if (isClickable && !isSelectable) {
137
- return { ...baseProps, onClick: handleActionClick };
138
+ return { ...baseProps, onClick: handleActionClick, isChecked: isClicked };
138
139
  }
139
140
  if (isSelectable) {
140
- return { ...baseProps, onChange: selectableActions.onChange, isChecked: selectableActions.isChecked };
141
+ return { ...baseProps, onChange: selectableActions.onChange, isChecked: isSelectableInputChecked };
141
142
  }
142
143
 
143
144
  return baseProps;
@@ -109,9 +109,9 @@ A common use case of this is to set all but one body section to `isFilled={false
109
109
 
110
110
  ### Selectable
111
111
 
112
- A card can be selected by clicking anywhere within the card.
112
+ A selectable card can be selected by clicking anywhere within the card.
113
113
 
114
- You must avoid rendering any other interactive content within the `<Card>` when it is meant to be selectable only. Refer to our [clickable and selectable example](#clickable-and-selectable-cards) if you need a card that is both selectable and has other interactive content.
114
+ You must avoid rendering any other interactive content within the `<Card>` when it is meant to be selectable only. Refer to our [actionable and selectable example](#clickable-and-selectable-cards) if you need a card that is both selectable and has other interactive, actionable content.
115
115
 
116
116
  ```ts file='./CardSelectable.tsx'
117
117
 
@@ -119,27 +119,29 @@ You must avoid rendering any other interactive content within the `<Card>` when
119
119
 
120
120
  ### Single selectable
121
121
 
122
- When a group of single selectable cards are related, you should pass the same `name` property to each card's `selectableActions` property.
122
+ When a group of single selectable cards are related, you must pass the same `name` property to each card's `selectableActions` property.
123
123
 
124
124
  ```ts file='./CardSingleSelectable.tsx'
125
125
 
126
126
  ```
127
127
 
128
- ### Clickable
128
+ ### Actionable
129
129
 
130
- A card can perform an action or navigate to a link by clicking anywhere within the card. You can also pass in the `isExternalLink` property to `selectableActions` if you want a clickable card's link to open in a new tab or window.
130
+ An actionable card can perform an action or navigate to a link by clicking anywhere within the card. To open a link in a new tab or window, pass the `isExternalLink` property to `selectableActions`.
131
131
 
132
- When a card is meant to be clickable only, you must avoid rendering any other interactive content within the `<Card>`, similar to selectable cards.
132
+ You can pass the `isClicked` property to `<Card>` to convey that a card is the currently clicked one, such as when clicking a card would open a [primary-detail view](/patterns/primary-detail). This must not be used simply for "selection" of a card, and you should instead use our [selectable card](#selectable) or [single selectable card](#single-selectable).
133
+
134
+ When a card is meant to be actionable only, you must avoid rendering any other interactive content within the `<Card>`, similar to selectable cards.
133
135
 
134
136
  ```ts file='./CardClickable.tsx'
135
137
 
136
138
  ```
137
139
 
138
- ### Clickable and selectable
140
+ ### Actionable and selectable
139
141
 
140
- A card can be selectable and have additional interactive content by passing both the `isClickable` and `isSelectable` properties to `<Card>`. The following example shows how the "clickable" functionality can be rendered anywhere within a selectable card.
142
+ A card can be selectable and have additional interactive content by passing both the `isClickable` and `isSelectable` properties to `<Card>`. The following example shows how the actionable functionality can be rendered anywhere within a selectable card.
141
143
 
142
- When passing interactive content to a clickable and selectable card that is disabled, you should also ensure the interactive content is disabled as well, if applicable.
144
+ When passing interactive content to an actionable and selectable card that is disabled, you should also ensure the interactive content is disabled as well, if applicable.
143
145
 
144
146
  ```ts file='./CardClickableSelectable.tsx'
145
147
 
@@ -5,14 +5,14 @@ export const CardClickable: React.FunctionComponent = () => {
5
5
  const [isChecked1, setIsChecked1] = React.useState(false);
6
6
  const [isChecked2, setIsChecked2] = React.useState(false);
7
7
  const [isChecked3, setIsChecked3] = React.useState(false);
8
- const [isSelected1, setIsSelected1] = React.useState(false);
8
+ const [isClicked, setIsClicked] = React.useState(false);
9
9
 
10
10
  const id1 = 'clickable-selectable-card-input-1';
11
11
  const id2 = 'clickable-selectable-card-input-2';
12
12
  const id3 = 'clickable-selectable-card-input-3';
13
13
 
14
14
  const onClick = () => {
15
- setIsSelected1((prevState) => !prevState);
15
+ setIsClicked((prevState) => !prevState);
16
16
  };
17
17
 
18
18
  const onChange = (event: React.FormEvent<HTMLInputElement>, checked: boolean) => {
@@ -33,13 +33,18 @@ export const CardClickable: React.FunctionComponent = () => {
33
33
 
34
34
  return (
35
35
  <React.Fragment>
36
- <Card id="clickable-selectable-card-example-1" isClickable isSelectable isSelected={isSelected1}>
36
+ <Card
37
+ id="clickable-selectable-card-example-1"
38
+ isClickable
39
+ isClicked={isClicked}
40
+ isSelectable
41
+ isSelected={isChecked1}
42
+ >
37
43
  <CardHeader
38
44
  selectableActions={{
39
45
  selectableActionId: id1,
40
46
  selectableActionAriaLabelledby: 'clickable-selectable-card-example-1',
41
47
  name: id1,
42
- isChecked: isChecked1,
43
48
  onChange
44
49
  }}
45
50
  >
@@ -51,13 +56,12 @@ export const CardClickable: React.FunctionComponent = () => {
51
56
  </CardHeader>
52
57
  <CardBody>This card performs an action upon clicking the card title and is selectable.</CardBody>
53
58
  </Card>
54
- <Card id="clickable-selectable-card-example-2" isClickable isSelectable>
59
+ <Card id="clickable-selectable-card-example-2" isClickable isSelectable isSelected={isChecked2}>
55
60
  <CardHeader
56
61
  selectableActions={{
57
62
  selectableActionId: id2,
58
63
  selectableActionAriaLabelledby: 'clickable-selectable-card-example-2',
59
64
  name: id2,
60
- isChecked: isChecked2,
61
65
  onChange
62
66
  }}
63
67
  >
@@ -71,13 +75,12 @@ export const CardClickable: React.FunctionComponent = () => {
71
75
  .
72
76
  </CardBody>
73
77
  </Card>
74
- <Card id="clickable-selectable-card-example-3" isClickable isSelectable isDisabled>
78
+ <Card id="clickable-selectable-card-example-3" isClickable isSelectable isDisabled isSelected={isChecked3}>
75
79
  <CardHeader
76
80
  selectableActions={{
77
81
  selectableActionId: id3,
78
82
  selectableActionAriaLabelledby: 'clickable-selectable-card-example-3',
79
83
  name: id3,
80
- isChecked: isChecked3,
81
84
  onChange
82
85
  }}
83
86
  >
@@ -28,13 +28,12 @@ export const SelectableCard: React.FunctionComponent = () => {
28
28
 
29
29
  return (
30
30
  <React.Fragment>
31
- <Card id="selectable-card-example-1" isSelectable>
31
+ <Card id="selectable-card-example-1" isSelectable isSelected={isChecked1}>
32
32
  <CardHeader
33
33
  selectableActions={{
34
34
  selectableActionId: id1,
35
35
  selectableActionAriaLabelledby: 'selectable-card-example-1',
36
36
  name: id1,
37
- isChecked: isChecked1,
38
37
  onChange
39
38
  }}
40
39
  >
@@ -42,13 +41,12 @@ export const SelectableCard: React.FunctionComponent = () => {
42
41
  </CardHeader>
43
42
  <CardBody>This card is selectable.</CardBody>
44
43
  </Card>
45
- <Card id="selectable-card-example-2" isSelectable>
44
+ <Card id="selectable-card-example-2" isSelectable isSelected={isChecked2}>
46
45
  <CardHeader
47
46
  selectableActions={{
48
47
  selectableActionId: id2,
49
48
  selectableActionAriaLabelledby: 'selectable-card-example-2',
50
49
  name: id2,
51
- isChecked: isChecked2,
52
50
  onChange
53
51
  }}
54
52
  >
@@ -56,13 +54,12 @@ export const SelectableCard: React.FunctionComponent = () => {
56
54
  </CardHeader>
57
55
  <CardBody>This card is selectable.</CardBody>
58
56
  </Card>
59
- <Card id="selectable-card-example-3" isSelectable isDisabled>
57
+ <Card id="selectable-card-example-3" isSelectable isDisabled isSelected={isChecked3}>
60
58
  <CardHeader
61
59
  selectableActions={{
62
60
  selectableActionId: id3,
63
61
  selectableActionAriaLabelledby: 'selectable-card-example-3',
64
62
  name: id3,
65
- isChecked: isChecked3,
66
63
  onChange
67
64
  }}
68
65
  >
@@ -2,45 +2,53 @@ import React from 'react';
2
2
  import { Card, CardHeader, CardTitle, CardBody } from '@patternfly/react-core';
3
3
 
4
4
  export const SingleSelectableCard: React.FunctionComponent = () => {
5
+ const [isChecked, setIsChecked] = React.useState('');
5
6
  const id1 = 'single-selectable-card-input-1';
6
7
  const id2 = 'single-selectable-card-input-2';
7
8
  const id3 = 'single-selectable-card-input-3';
8
9
 
10
+ const onChange = (event: React.FormEvent<HTMLInputElement>) => {
11
+ setIsChecked(event.currentTarget.id);
12
+ };
13
+
9
14
  return (
10
15
  <React.Fragment>
11
- <Card id="single-selectable-card-example-1" isSelectable>
16
+ <Card id="single-selectable-card-example-1" isSelectable isSelected={isChecked === id1}>
12
17
  <CardHeader
13
18
  selectableActions={{
14
19
  selectableActionId: id1,
15
20
  selectableActionAriaLabelledby: 'single-selectable-card-example-1',
16
21
  name: 'single-selectable-card-example',
17
- variant: 'single'
22
+ variant: 'single',
23
+ onChange
18
24
  }}
19
25
  >
20
26
  <CardTitle>First card</CardTitle>
21
27
  </CardHeader>
22
28
  <CardBody>This card is single selectable.</CardBody>
23
29
  </Card>
24
- <Card id="single-selectable-card-example-2" isSelectable>
30
+ <Card id="single-selectable-card-example-2" isSelectable isSelected={isChecked === id2}>
25
31
  <CardHeader
26
32
  selectableActions={{
27
33
  selectableActionId: id2,
28
34
  selectableActionAriaLabelledby: 'single-selectable-card-example-2',
29
35
  name: 'single-selectable-card-example',
30
- variant: 'single'
36
+ variant: 'single',
37
+ onChange
31
38
  }}
32
39
  >
33
40
  <CardTitle>Second card</CardTitle>
34
41
  </CardHeader>
35
42
  <CardBody>This card is single selectable.</CardBody>
36
43
  </Card>
37
- <Card id="single-selectable-card-example-3" isSelectable isDisabled>
44
+ <Card id="single-selectable-card-example-3" isSelectable isDisabled isSelected={isChecked === id3}>
38
45
  <CardHeader
39
46
  selectableActions={{
40
47
  selectableActionId: id3,
41
48
  selectableActionAriaLabelledby: 'single-selectable-card-example-3',
42
49
  name: 'single-selectable-card-example',
43
- variant: 'single'
50
+ variant: 'single',
51
+ onChange
44
52
  }}
45
53
  >
46
54
  <CardTitle>Third card</CardTitle>
@@ -7,6 +7,8 @@ import { ChipGroup } from '../index';
7
7
  import { Chip } from '../../Chip';
8
8
  import styles from '@patternfly/react-styles/css/components/Chip/chip-group';
9
9
 
10
+ jest.mock('../../../helpers/GenerateId/GenerateId');
11
+
10
12
  test('chip group default', () => {
11
13
  render(
12
14
  <ChipGroup>
@@ -71,7 +73,7 @@ test('chip group has aria-labelledby attribute', () => {
71
73
  <Chip>1.1</Chip>
72
74
  </ChipGroup>
73
75
  );
74
- expect(screen.getByRole('group')).toHaveAttribute('aria-labelledby', expect.stringContaining(`pf-random-id`));
76
+ expect(screen.getByRole('group')).toHaveAttribute('aria-labelledby', expect.stringContaining(`generated-id`));
75
77
  });
76
78
 
77
79
  test('chip group has aria-labelledby attribute set to ID value', () => {
@@ -10,8 +10,22 @@ import { ClipboardCopyToggle } from './ClipboardCopyToggle';
10
10
  import { ClipboardCopyExpanded } from './ClipboardCopyExpanded';
11
11
  import { getOUIAProps, OUIAProps } from '../../helpers';
12
12
 
13
- export const clipboardCopyFunc = (event: React.ClipboardEvent<HTMLDivElement>, text?: string) => {
14
- navigator.clipboard.writeText(text.toString());
13
+ export const clipboardCopyFunc = (_event: React.ClipboardEvent<HTMLDivElement>, text?: React.ReactNode) => {
14
+ try {
15
+ navigator.clipboard.writeText(text.toString());
16
+ } catch (error) {
17
+ // eslint-disable-next-line no-console
18
+ console.warn(
19
+ "Clipboard API not found, this copy function will not work. This is likely because you're using an",
20
+ "unsupported browser or you're not using HTTPS. \n\nIf you're a developer building an application which needs",
21
+ "to support copying to the clipboard without the clipboard API, you'll have to create your own copy",
22
+ 'function and pass it to the ClipboardCopy component as the onCopy prop. For more information see',
23
+ 'https://developer.mozilla.org/en-US/docs/Web/API/Navigator/clipboard'
24
+ );
25
+
26
+ // eslint-disable-next-line no-console
27
+ console.error(error);
28
+ }
15
29
  };
16
30
 
17
31
  export enum ClipboardCopyVariant {
@@ -27,7 +41,7 @@ export interface ClipboardCopyState {
27
41
  textWhenExpanded: string;
28
42
  }
29
43
 
30
- export interface ClipboardCopyProps extends Omit<React.HTMLProps<HTMLDivElement>, 'onChange' | 'children'>, OUIAProps {
44
+ export interface ClipboardCopyProps extends Omit<React.HTMLProps<HTMLDivElement>, 'onChange'>, OUIAProps {
31
45
  /** Additional classes added to the clipboard copy container. */
32
46
  className?: string;
33
47
  /** Tooltip message to display when hover the copy button */
@@ -70,13 +84,13 @@ export interface ClipboardCopyProps extends Omit<React.HTMLProps<HTMLDivElement>
70
84
  exitDelay?: number;
71
85
  /** Delay in ms before the tooltip appears. */
72
86
  entryDelay?: number;
73
- /** A function that is triggered on clicking the copy button. */
74
- onCopy?: (event: React.ClipboardEvent<HTMLDivElement>, text?: string) => void;
87
+ /** A function that is triggered on clicking the copy button. This will replace the existing clipboard copy functionality entirely. */
88
+ onCopy?: (event: React.ClipboardEvent<HTMLDivElement>, text?: React.ReactNode) => void;
75
89
  /** A function that is triggered on changing the text. */
76
90
  onChange?: (event: React.FormEvent, text?: string) => void;
77
91
  /** The text which is copied. */
78
- children: string;
79
- /** Additional actions for inline clipboard copy. Should be wrapped with ClipboardCopyAction. */
92
+ children: React.ReactNode;
93
+ /** Additional actions for inline-compact clipboard copy. Should be wrapped with ClipboardCopyAction. */
80
94
  additionalActions?: React.ReactNode;
81
95
  /** Value to overwrite the randomly generated data-ouia-component-id.*/
82
96
  ouiaId?: number | string;
@@ -6,6 +6,7 @@ import { PickOptional } from '../../helpers/typeUtils';
6
6
 
7
7
  export interface ClipboardCopyExpandedProps extends Omit<ClipboardCopyProps, 'onChange'> {
8
8
  className?: string;
9
+ children: React.ReactNode;
9
10
  onChange?: (e: React.FormEvent<HTMLDivElement>, text: string) => void;
10
11
  isReadOnly?: boolean;
11
12
  isCode?: boolean;
@@ -4,6 +4,8 @@ import { ClipboardCopy } from '../ClipboardCopy';
4
4
  import styles from '@patternfly/react-styles/css/components/ClipboardCopy/clipboard-copy';
5
5
  import userEvent from '@testing-library/user-event';
6
6
 
7
+ jest.mock('../../../helpers/GenerateId/GenerateId');
8
+
7
9
  jest.mock('../ClipboardCopyButton', () => ({
8
10
  ClipboardCopyButton: ({ 'aria-label': ariaLabel, children, entryDelay, exitDelay, maxWidth, position, onClick }) => (
9
11
  <div data-testid="clipboardCopyButton-mock">
@@ -21,7 +21,7 @@ exports[`Matches snapshot 1`] = `
21
21
  data-ouia-component-id="OUIA-Generated-TextInputBase-26"
22
22
  data-ouia-component-type="PF5/TextInput"
23
23
  data-ouia-safe="true"
24
- id="text-input-34"
24
+ id="text-input-generated-id"
25
25
  type="text"
26
26
  value="Copyable text"
27
27
  />
@@ -3,6 +3,7 @@ id: Drag and drop
3
3
  section: components
4
4
  propComponents: [DragDrop, Draggable, Droppable, DraggableItemPosition]
5
5
  title: Drag and drop
6
+ deprecated: true
6
7
  ---
7
8
 
8
9
  You can use the `<DragDrop>` component to move items in or between lists. The `<DragDrop>` component should contain `<Droppable>` components which contain `<Draggable>` components.
@@ -14,6 +14,8 @@ import { render } from '@testing-library/react';
14
14
  import userEvent from '@testing-library/user-event';
15
15
  import { KeyTypes } from '../../../helpers';
16
16
 
17
+ jest.mock('../../../helpers/GenerateId/GenerateId');
18
+
17
19
  Object.values([
18
20
  { isExpanded: true, isInline: false, isStatic: false },
19
21
  { isExpanded: false, isInline: false, isStatic: false },
@@ -3,6 +3,8 @@ import { render, screen } from '@testing-library/react';
3
3
  import { DrawerPanelContent } from '../DrawerPanelContent';
4
4
  import { Drawer } from '../Drawer';
5
5
 
6
+ jest.mock('../../../helpers/GenerateId/GenerateId');
7
+
6
8
  test('Does not render with aria-labelledby by default', () => {
7
9
  render(
8
10
  <Drawer isExpanded>
@@ -7,6 +7,8 @@ import { DrawerPanelContent } from '../../DrawerPanelContent';
7
7
  // any missing imports can usually be resolved by adding them here
8
8
  import {} from '../..';
9
9
 
10
+ jest.mock('../../../../helpers/GenerateId/GenerateId');
11
+
10
12
  it('DrawerPanelContent should match snapshot (auto-generated)', () => {
11
13
  const { asFragment } = render(<DrawerPanelContent className={"''"} children={<div>ReactNode</div>} />);
12
14
  expect(asFragment()).toMatchSnapshot();
@@ -5,7 +5,7 @@ exports[`DrawerPanelContent should match snapshot (auto-generated) 1`] = `
5
5
  <div
6
6
  class="pf-v5-c-drawer__panel ''"
7
7
  hidden=""
8
- id="pf-drawer-panel-0"
8
+ id="generated-id"
9
9
  />
10
10
  </DocumentFragment>
11
11
  `;