@patternfly/react-core 6.2.2 → 6.3.0-prerelease.10

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 (375) hide show
  1. package/CHANGELOG.md +73 -9
  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/ClipboardCopy/package.json +1 -1
  21. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  22. package/dist/dynamic/components/Content/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/Drawer/package.json +1 -1
  28. package/dist/dynamic/components/Dropdown/package.json +1 -1
  29. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  30. package/dist/dynamic/components/EmptyState/package.json +1 -1
  31. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  32. package/dist/dynamic/components/FileUpload/package.json +1 -1
  33. package/dist/dynamic/components/Form/package.json +1 -1
  34. package/dist/dynamic/components/FormSelect/package.json +1 -1
  35. package/dist/dynamic/components/HelperText/package.json +1 -1
  36. package/dist/dynamic/components/Hint/package.json +1 -1
  37. package/dist/dynamic/components/Icon/package.json +1 -1
  38. package/dist/dynamic/components/InputGroup/package.json +1 -1
  39. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  40. package/dist/dynamic/components/Label/package.json +1 -1
  41. package/dist/dynamic/components/List/package.json +1 -1
  42. package/dist/dynamic/components/LoginPage/package.json +1 -1
  43. package/dist/dynamic/components/Masthead/package.json +1 -1
  44. package/dist/dynamic/components/Menu/package.json +1 -1
  45. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  46. package/dist/dynamic/components/Modal/package.json +1 -1
  47. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  48. package/dist/dynamic/components/Nav/package.json +1 -1
  49. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  50. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  51. package/dist/dynamic/components/NumberInput/package.json +1 -1
  52. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  53. package/dist/dynamic/components/Page/package.json +1 -1
  54. package/dist/dynamic/components/Pagination/package.json +1 -1
  55. package/dist/dynamic/components/Panel/package.json +1 -1
  56. package/dist/dynamic/components/Popover/package.json +1 -1
  57. package/dist/dynamic/components/Progress/package.json +1 -1
  58. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  59. package/dist/dynamic/components/Radio/package.json +1 -1
  60. package/dist/dynamic/components/SearchInput/package.json +1 -1
  61. package/dist/dynamic/components/Select/package.json +1 -1
  62. package/dist/dynamic/components/Sidebar/package.json +1 -1
  63. package/dist/dynamic/components/SimpleList/package.json +1 -1
  64. package/dist/dynamic/components/Skeleton/package.json +1 -1
  65. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  66. package/dist/dynamic/components/Slider/package.json +1 -1
  67. package/dist/dynamic/components/Spinner/package.json +1 -1
  68. package/dist/dynamic/components/Switch/package.json +1 -1
  69. package/dist/dynamic/components/Tabs/package.json +1 -1
  70. package/dist/dynamic/components/TextArea/package.json +1 -1
  71. package/dist/dynamic/components/TextInput/package.json +1 -1
  72. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  73. package/dist/dynamic/components/TimePicker/package.json +1 -1
  74. package/dist/dynamic/components/Timestamp/package.json +1 -1
  75. package/dist/dynamic/components/Title/package.json +1 -1
  76. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  77. package/dist/dynamic/components/Toolbar/package.json +1 -1
  78. package/dist/dynamic/components/Tooltip/package.json +1 -1
  79. package/dist/dynamic/components/TreeView/package.json +1 -1
  80. package/dist/dynamic/components/Truncate/package.json +1 -1
  81. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  82. package/dist/dynamic/components/Wizard/package.json +1 -1
  83. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  84. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/package.json +1 -1
  90. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  91. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  92. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  93. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  94. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  95. package/dist/dynamic/helpers/constants/package.json +1 -1
  96. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  97. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  98. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  99. package/dist/dynamic/helpers/package.json +1 -1
  100. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  101. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  102. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  103. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  104. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  105. package/dist/dynamic/helpers/util/package.json +1 -1
  106. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  107. package/dist/dynamic/layouts/Flex/package.json +1 -1
  108. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  109. package/dist/dynamic/layouts/Grid/package.json +1 -1
  110. package/dist/dynamic/layouts/Level/package.json +1 -1
  111. package/dist/dynamic/layouts/Split/package.json +1 -1
  112. package/dist/dynamic/layouts/Stack/package.json +1 -1
  113. package/dist/dynamic/styles/package.json +1 -1
  114. package/dist/esm/components/Divider/Divider.d.ts +2 -0
  115. package/dist/esm/components/Divider/Divider.d.ts.map +1 -1
  116. package/dist/esm/components/Divider/Divider.js +2 -2
  117. package/dist/esm/components/Divider/Divider.js.map +1 -1
  118. package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts +1 -1
  119. package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
  120. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.d.ts +1 -1
  121. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
  122. package/dist/esm/components/Form/FormFieldGroup.d.ts +1 -1
  123. package/dist/esm/components/Form/FormFieldGroup.d.ts.map +1 -1
  124. package/dist/esm/components/Form/FormFieldGroupExpandable.d.ts +1 -1
  125. package/dist/esm/components/Form/FormFieldGroupExpandable.d.ts.map +1 -1
  126. package/dist/esm/components/Form/FormGroupLabelHelp.js +2 -2
  127. package/dist/esm/components/Form/FormGroupLabelHelp.js.map +1 -1
  128. package/dist/esm/components/Form/InternalFormFieldGroup.d.ts +1 -1
  129. package/dist/esm/components/Form/InternalFormFieldGroup.d.ts.map +1 -1
  130. package/dist/esm/components/List/List.d.ts.map +1 -1
  131. package/dist/esm/components/List/List.js +2 -2
  132. package/dist/esm/components/List/List.js.map +1 -1
  133. package/dist/esm/components/List/ListItem.d.ts +4 -2
  134. package/dist/esm/components/List/ListItem.d.ts.map +1 -1
  135. package/dist/esm/components/List/ListItem.js +2 -2
  136. package/dist/esm/components/List/ListItem.js.map +1 -1
  137. package/dist/esm/components/Nav/Nav.d.ts +1 -1
  138. package/dist/esm/components/Nav/Nav.d.ts.map +1 -1
  139. package/dist/esm/components/Nav/NavExpandable.d.ts.map +1 -1
  140. package/dist/esm/components/Nav/NavExpandable.js +1 -1
  141. package/dist/esm/components/Nav/NavExpandable.js.map +1 -1
  142. package/dist/esm/components/Nav/NavItemSeparator.d.ts.map +1 -1
  143. package/dist/esm/components/Nav/NavItemSeparator.js +2 -2
  144. package/dist/esm/components/Nav/NavItemSeparator.js.map +1 -1
  145. package/dist/esm/components/Progress/ProgressContainer.d.ts.map +1 -1
  146. package/dist/esm/components/Progress/ProgressContainer.js +12 -6
  147. package/dist/esm/components/Progress/ProgressContainer.js.map +1 -1
  148. package/dist/esm/components/Tabs/Tabs.d.ts +1 -1
  149. package/dist/esm/components/Tabs/Tabs.d.ts.map +1 -1
  150. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  151. package/dist/esm/components/Toolbar/ToolbarGroup.d.ts +1 -1
  152. package/dist/esm/components/Toolbar/ToolbarGroup.d.ts.map +1 -1
  153. package/dist/esm/components/Toolbar/ToolbarItem.d.ts.map +1 -1
  154. package/dist/esm/components/Toolbar/ToolbarItem.js +4 -3
  155. package/dist/esm/components/Toolbar/ToolbarItem.js.map +1 -1
  156. package/dist/esm/components/TreeView/TreeViewListItem.d.ts +2 -2
  157. package/dist/esm/components/TreeView/TreeViewListItem.d.ts.map +1 -1
  158. package/dist/esm/components/Truncate/Truncate.d.ts +11 -1
  159. package/dist/esm/components/Truncate/Truncate.d.ts.map +1 -1
  160. package/dist/esm/components/Truncate/Truncate.js +49 -10
  161. package/dist/esm/components/Truncate/Truncate.js.map +1 -1
  162. package/dist/esm/components/Wizard/WizardNavInternal.js.map +1 -1
  163. package/dist/js/components/Divider/Divider.d.ts +2 -0
  164. package/dist/js/components/Divider/Divider.d.ts.map +1 -1
  165. package/dist/js/components/Divider/Divider.js +2 -2
  166. package/dist/js/components/Divider/Divider.js.map +1 -1
  167. package/dist/js/components/ExpandableSection/ExpandableSection.d.ts +1 -1
  168. package/dist/js/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
  169. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts +1 -1
  170. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
  171. package/dist/js/components/Form/FormFieldGroup.d.ts +1 -1
  172. package/dist/js/components/Form/FormFieldGroup.d.ts.map +1 -1
  173. package/dist/js/components/Form/FormFieldGroupExpandable.d.ts +1 -1
  174. package/dist/js/components/Form/FormFieldGroupExpandable.d.ts.map +1 -1
  175. package/dist/js/components/Form/FormGroupLabelHelp.js +2 -2
  176. package/dist/js/components/Form/FormGroupLabelHelp.js.map +1 -1
  177. package/dist/js/components/Form/InternalFormFieldGroup.d.ts +1 -1
  178. package/dist/js/components/Form/InternalFormFieldGroup.d.ts.map +1 -1
  179. package/dist/js/components/List/List.d.ts.map +1 -1
  180. package/dist/js/components/List/List.js +2 -2
  181. package/dist/js/components/List/List.js.map +1 -1
  182. package/dist/js/components/List/ListItem.d.ts +4 -2
  183. package/dist/js/components/List/ListItem.d.ts.map +1 -1
  184. package/dist/js/components/List/ListItem.js +2 -2
  185. package/dist/js/components/List/ListItem.js.map +1 -1
  186. package/dist/js/components/Nav/Nav.d.ts +1 -1
  187. package/dist/js/components/Nav/Nav.d.ts.map +1 -1
  188. package/dist/js/components/Nav/NavExpandable.d.ts.map +1 -1
  189. package/dist/js/components/Nav/NavExpandable.js +1 -1
  190. package/dist/js/components/Nav/NavExpandable.js.map +1 -1
  191. package/dist/js/components/Nav/NavItemSeparator.d.ts.map +1 -1
  192. package/dist/js/components/Nav/NavItemSeparator.js +2 -2
  193. package/dist/js/components/Nav/NavItemSeparator.js.map +1 -1
  194. package/dist/js/components/Progress/ProgressContainer.d.ts.map +1 -1
  195. package/dist/js/components/Progress/ProgressContainer.js +10 -4
  196. package/dist/js/components/Progress/ProgressContainer.js.map +1 -1
  197. package/dist/js/components/Tabs/Tabs.d.ts +1 -1
  198. package/dist/js/components/Tabs/Tabs.d.ts.map +1 -1
  199. package/dist/js/components/Tabs/Tabs.js.map +1 -1
  200. package/dist/js/components/Toolbar/ToolbarGroup.d.ts +1 -1
  201. package/dist/js/components/Toolbar/ToolbarGroup.d.ts.map +1 -1
  202. package/dist/js/components/Toolbar/ToolbarItem.d.ts.map +1 -1
  203. package/dist/js/components/Toolbar/ToolbarItem.js +4 -3
  204. package/dist/js/components/Toolbar/ToolbarItem.js.map +1 -1
  205. package/dist/js/components/TreeView/TreeViewListItem.d.ts +2 -2
  206. package/dist/js/components/TreeView/TreeViewListItem.d.ts.map +1 -1
  207. package/dist/js/components/Truncate/Truncate.d.ts +11 -1
  208. package/dist/js/components/Truncate/Truncate.d.ts.map +1 -1
  209. package/dist/js/components/Truncate/Truncate.js +48 -9
  210. package/dist/js/components/Truncate/Truncate.js.map +1 -1
  211. package/dist/js/components/Wizard/WizardNavInternal.js.map +1 -1
  212. package/dist/umd/assets/{output-AyA9e2xy.css → output-CuGIDyMV.css} +19664 -19577
  213. package/dist/umd/react-core.min.js +3 -3
  214. package/helpers/package.json +1 -1
  215. package/layouts/package.json +1 -1
  216. package/next/package.json +1 -1
  217. package/package.json +8 -8
  218. package/src/components/Alert/examples/Alert.md +0 -3
  219. package/src/components/Card/examples/Card.md +4 -0
  220. package/src/components/Card/examples/CardHeaderWraps.tsx +26 -0
  221. package/src/components/CodeBlock/examples/CodeBlockBasic.tsx +1 -1
  222. package/src/components/CodeBlock/examples/CodeBlockExpandable.tsx +10 -3
  223. package/src/components/DescriptionList/examples/DescriptionListAutoFitBasic.tsx +1 -1
  224. package/src/components/DescriptionList/examples/DescriptionListAutoFitMinWidthModified.tsx +5 -1
  225. package/src/components/DescriptionList/examples/DescriptionListAutoFitMinWidthResponsive.tsx +5 -1
  226. package/src/components/DescriptionList/examples/DescriptionListBasic.tsx +1 -1
  227. package/src/components/DescriptionList/examples/DescriptionListColumnFill.tsx +1 -1
  228. package/src/components/DescriptionList/examples/DescriptionListCompact.tsx +1 -1
  229. package/src/components/DescriptionList/examples/DescriptionListCompactHorizontal.tsx +1 -1
  230. package/src/components/DescriptionList/examples/DescriptionListDefaultAutoColumn.tsx +1 -1
  231. package/src/components/DescriptionList/examples/DescriptionListDefaultInlineGrid.tsx +1 -1
  232. package/src/components/DescriptionList/examples/DescriptionListDefaultResponsiveColumns.tsx +1 -1
  233. package/src/components/DescriptionList/examples/DescriptionListDefaultThreeColLg.tsx +1 -1
  234. package/src/components/DescriptionList/examples/DescriptionListDefaultTwoCol.tsx +1 -0
  235. package/src/components/DescriptionList/examples/DescriptionListDisplaySizeAndCardHorizontalTermWidth.tsx +7 -1
  236. package/src/components/DescriptionList/examples/DescriptionListDisplaySizeAndCardThreeColumn.tsx +5 -1
  237. package/src/components/DescriptionList/examples/DescriptionListFluidHorizontal.tsx +1 -1
  238. package/src/components/DescriptionList/examples/DescriptionListHorizontal.tsx +1 -1
  239. package/src/components/DescriptionList/examples/DescriptionListHorizontalAutoColumn.tsx +6 -1
  240. package/src/components/DescriptionList/examples/DescriptionListHorizontalCustomTermWidth.tsx +1 -0
  241. package/src/components/DescriptionList/examples/DescriptionListHorizontalResponsiveColumns.tsx +1 -1
  242. package/src/components/DescriptionList/examples/DescriptionListHorizontalThreeColLg.tsx +1 -1
  243. package/src/components/DescriptionList/examples/DescriptionListHorizontalTwoCol.tsx +1 -1
  244. package/src/components/DescriptionList/examples/DescriptionListIconsOnTerms.tsx +1 -1
  245. package/src/components/DescriptionList/examples/DescriptionListResponsiveHoriVertGroup.tsx +1 -0
  246. package/src/components/DescriptionList/examples/DescriptionListWithCard.tsx +1 -1
  247. package/src/components/DescriptionList/examples/DescriptionListWithLargeDisplaySize.tsx +1 -1
  248. package/src/components/DescriptionList/examples/DescriptionListWithLargeDisplaySizeAndCard.tsx +5 -1
  249. package/src/components/DescriptionList/examples/DescriptionListWithTermHelpText.tsx +1 -1
  250. package/src/components/Divider/Divider.tsx +4 -1
  251. package/src/components/Divider/__tests__/Divider.test.tsx +10 -0
  252. package/src/components/DualListSelector/examples/DualListSelectorBasicSearch.tsx +1 -0
  253. package/src/components/DualListSelector/examples/DualListSelectorComplexOptionsActions.tsx +1 -0
  254. package/src/components/DualListSelector/examples/DualListSelectorTree.tsx +1 -0
  255. package/src/components/ExpandableSection/ExpandableSection.tsx +1 -1
  256. package/src/components/ExpandableSection/ExpandableSectionToggle.tsx +1 -1
  257. package/src/components/Form/FormFieldGroup.tsx +1 -1
  258. package/src/components/Form/FormFieldGroupExpandable.tsx +1 -1
  259. package/src/components/Form/FormGroupLabelHelp.tsx +2 -2
  260. package/src/components/Form/InternalFormFieldGroup.tsx +1 -1
  261. package/src/components/List/List.tsx +3 -0
  262. package/src/components/List/ListItem.tsx +7 -4
  263. package/src/components/List/__tests__/List.test.tsx +97 -101
  264. package/src/components/List/__tests__/ListItem.test.tsx +51 -0
  265. package/src/components/List/__tests__/__snapshots__/List.test.tsx.snap +4 -261
  266. package/src/components/List/__tests__/__snapshots__/ListItem.test.tsx.snap +34 -0
  267. package/src/components/LoginPage/examples/LoginPageBasic.tsx +1 -1
  268. package/src/components/LoginPage/examples/LoginPageLanguageSelect.tsx +1 -1
  269. package/src/components/LoginPage/examples/LoginPageShowHidePassword.tsx +1 -1
  270. package/src/components/Nav/Nav.tsx +1 -1
  271. package/src/components/Nav/NavExpandable.tsx +6 -1
  272. package/src/components/Nav/NavItemSeparator.tsx +2 -1
  273. package/src/components/Nav/__tests__/Generated/__snapshots__/NavExpandable.test.tsx.snap +1 -0
  274. package/src/components/Nav/__tests__/NavExpandable.test.tsx +15 -0
  275. package/src/components/Nav/__tests__/__snapshots__/Nav.test.tsx.snap +3 -0
  276. package/src/components/Page/examples/Page.md +1 -1
  277. package/src/components/Page/examples/PageCenteredSection.tsx +3 -4
  278. package/src/components/Page/examples/PageGroupSection.tsx +9 -3
  279. package/src/components/Page/examples/PageHorizontalNav.tsx +9 -3
  280. package/src/components/Page/examples/PageMainSectionPadding.tsx +12 -4
  281. package/src/components/Page/examples/PageMainSectionVariations.tsx +6 -6
  282. package/src/components/Page/examples/PageMultipleSidebarBody.tsx +9 -3
  283. package/src/components/Page/examples/PageUncontrolledNav.tsx +9 -3
  284. package/src/components/Page/examples/PageVerticalNav.tsx +9 -3
  285. package/src/components/Page/examples/PageWithOrWithoutFill.tsx +8 -4
  286. package/src/components/Progress/ProgressContainer.tsx +23 -16
  287. package/src/components/Progress/examples/ProgressTitleOutsideOfProgressBar.tsx +1 -1
  288. package/src/components/SearchInput/examples/SearchInputAdvanced.tsx +1 -0
  289. package/src/components/SearchInput/examples/SearchInputBasic.tsx +1 -0
  290. package/src/components/SearchInput/examples/SearchInputFocusSearch.tsx +7 -1
  291. package/src/components/SearchInput/examples/SearchInputWithExpandable.tsx +1 -0
  292. package/src/components/SearchInput/examples/SearchInputWithNavigableOptions.tsx +1 -0
  293. package/src/components/SearchInput/examples/SearchInputWithResultCount.tsx +1 -0
  294. package/src/components/SearchInput/examples/SearchInputWithSubmitButton.tsx +1 -0
  295. package/src/components/Select/examples/Select.md +3 -26
  296. package/src/components/Skeleton/examples/SkeletonText.tsx +0 -1
  297. package/src/components/Tabs/Tabs.tsx +3 -1
  298. package/src/components/Toolbar/ToolbarGroup.tsx +1 -1
  299. package/src/components/Toolbar/ToolbarItem.tsx +11 -1
  300. package/src/components/TreeView/TreeViewListItem.tsx +2 -2
  301. package/src/components/TreeView/__tests__/TreeView.test.tsx +26 -1
  302. package/src/components/TreeView/__tests__/TreeViewList.test.tsx +46 -0
  303. package/src/components/TreeView/__tests__/TreeViewListItem.test.tsx +278 -156
  304. package/src/components/TreeView/__tests__/TreeViewSearch.test.tsx +12 -1
  305. package/src/components/TreeView/__tests__/__snapshots__/TreeView.test.tsx.snap +9 -0
  306. package/src/components/Truncate/Truncate.tsx +123 -32
  307. package/src/components/Truncate/__tests__/Truncate.test.tsx +75 -5
  308. package/src/components/Truncate/__tests__/__snapshots__/Truncate.test.tsx.snap +55 -15
  309. package/src/components/Truncate/examples/Truncate.md +32 -36
  310. package/src/components/Truncate/examples/TruncateCustomTooltipPosition.tsx +10 -0
  311. package/src/components/Truncate/examples/TruncateDefault.tsx +7 -0
  312. package/src/components/Truncate/examples/TruncateMaxChars.tsx +27 -0
  313. package/src/components/Truncate/examples/TruncateMiddle.tsx +11 -0
  314. package/src/components/Truncate/examples/TruncateStart.tsx +7 -0
  315. package/src/components/Wizard/WizardNavInternal.tsx +1 -1
  316. package/src/components/Wizard/examples/WizardGetCurrentStep.tsx +1 -1
  317. package/src/demos/Banner.md +6 -6
  318. package/src/demos/CardDemos.md +1 -1
  319. package/src/demos/CardView/examples/CardView.tsx +9 -4
  320. package/src/demos/DataList/examples/DataListActionable.tsx +5 -3
  321. package/src/demos/DataList/examples/DataListBasic.tsx +2 -2
  322. package/src/demos/DataList/examples/DataListExpandableControlInToolbar.tsx +2 -2
  323. package/src/demos/DataList/examples/DataListStaticBottomPagination.tsx +4 -2
  324. package/src/demos/DescriptionList/examples/DescriptionListBasic.tsx +5 -5
  325. package/src/demos/DescriptionList/examples/DescriptionListInDrawer.tsx +6 -4
  326. package/src/demos/JumpLinks.md +5 -5
  327. package/src/demos/NotificationDrawer/examples/NotificationDrawerBasic.tsx +3 -3
  328. package/src/demos/NotificationDrawer/examples/NotificationDrawerGrouped.tsx +3 -3
  329. package/src/demos/PasswordGenerator.md +1 -1
  330. package/src/demos/RTL/examples/PaginatedTable.jsx +2 -2
  331. package/src/demos/RTL/examples/PaginatedTable.tsx +2 -2
  332. package/src/demos/SearchInput/SearchInput.md +2 -0
  333. package/src/demos/Tabs.md +6 -6
  334. package/src/demos/examples/AlertGroup/AlertGroupToastWithNotificationDrawer.tsx +6 -6
  335. package/src/demos/examples/BackToTop/BackToTopNameDemo.tsx +2 -2
  336. package/src/demos/examples/Card/CardAggregateStatus.tsx +2 -6
  337. package/src/demos/examples/Card/CardDetails.tsx +4 -5
  338. package/src/demos/examples/Card/CardEventsView.tsx +3 -4
  339. package/src/demos/examples/Card/CardLogView.tsx +3 -4
  340. package/src/demos/examples/Card/CardStatus.tsx +0 -1
  341. package/src/demos/examples/Card/CardStatusTabbed.tsx +3 -3
  342. package/src/demos/examples/Card/CardUtilizationDemo3.tsx +0 -1
  343. package/src/demos/examples/Masthead/MastheadWithHorizontalNav.tsx +5 -3
  344. package/src/demos/examples/Masthead/MastheadWithUtilitiesAndUserDropdownMenu.tsx +3 -3
  345. package/src/demos/examples/Nav/NavDefault.tsx +3 -3
  346. package/src/demos/examples/Nav/NavDrilldown.tsx +1 -1
  347. package/src/demos/examples/Nav/NavExpandable.tsx +3 -3
  348. package/src/demos/examples/Nav/NavFlyout.tsx +9 -3
  349. package/src/demos/examples/Nav/NavGrouped.tsx +14 -6
  350. package/src/demos/examples/Nav/NavHorizontal.tsx +3 -3
  351. package/src/demos/examples/Nav/NavHorizontalWithSubnav.tsx +5 -5
  352. package/src/demos/examples/Nav/NavManual.tsx +3 -3
  353. package/src/demos/examples/Nav/NavWithSubnav.tsx +5 -5
  354. package/src/demos/examples/Page/PageContextSelector.tsx +5 -3
  355. package/src/demos/examples/Page/PageStickySectionBreadcrumb.tsx +3 -3
  356. package/src/demos/examples/Page/PageStickySectionGroup.tsx +3 -3
  357. package/src/demos/examples/Page/PageStickySectionGroupAlternate.tsx +3 -3
  358. package/src/demos/examples/PrimaryDetail/PrimaryDetailCardView.tsx +5 -4
  359. package/src/demos/examples/PrimaryDetail/PrimaryDetailContentPadding.tsx +3 -3
  360. package/src/demos/examples/PrimaryDetail/PrimaryDetailDataListInCard.tsx +3 -3
  361. package/src/demos/examples/PrimaryDetail/PrimaryDetailFullPage.tsx +3 -3
  362. package/src/demos/examples/PrimaryDetail/PrimaryDetailInlineModifier.tsx +3 -3
  363. package/src/demos/examples/PrimaryDetail/PrimaryDetailSimpleListInCard.tsx +3 -3
  364. package/src/demos/examples/Skeleton/SkeletonCard.tsx +5 -3
  365. package/src/demos/examples/Tabs/ModalTabs.tsx +3 -3
  366. package/src/demos/examples/Tabs/NestedTabs.tsx +2 -2
  367. package/src/demos/examples/Tabs/NestedUnindentedTabs.tsx +2 -2
  368. package/src/demos/examples/Tabs/TabsAndTable.tsx +3 -3
  369. package/src/demos/examples/Toolbar/ConsoleLogViewerToolbar.tsx +1 -1
  370. package/src/demos/examples/Wizard/InModal.tsx +1 -1
  371. package/src/demos/examples/Wizard/InPage.tsx +1 -1
  372. package/src/demos/examples/Wizard/InPageWithDrawer.tsx +3 -3
  373. package/src/demos/examples/Wizard/InPageWithDrawerInformationalStep.tsx +3 -3
  374. package/src/components/List/__tests__/Generated/ListItem.test.tsx +0 -12
  375. package/src/components/List/__tests__/Generated/__snapshots__/ListItem.test.tsx.snap +0 -13
@@ -32,9 +32,55 @@ test(`Renders toolbar content when toolbar prop is passed`, () => {
32
32
  expect(screen.getByText('Toolbar content')).toBeInTheDocument();
33
33
  });
34
34
 
35
+ test(`Renders Divider when toolbar prop is passed`, () => {
36
+ render(<TreeViewList toolbar="Toolbar content">Content</TreeViewList>);
37
+
38
+ expect(screen.getByRole('separator')).toBeInTheDocument();
39
+ });
40
+
41
+ test('Renders with aria-label when passed', () => {
42
+ render(<TreeViewList aria-label="Test aria-label">Content</TreeViewList>);
43
+
44
+ expect(screen.getByRole('tree')).toHaveAccessibleName('Test aria-label');
45
+ });
46
+
47
+ test('Renders with aria-labelledby when passed', () => {
48
+ render(
49
+ <>
50
+ <div id="label">Labeling content</div>
51
+ <TreeViewList aria-labelledby="label">Content</TreeViewList>
52
+ </>
53
+ );
54
+
55
+ expect(screen.getByRole('tree')).toHaveAccessibleName('Labeling content');
56
+ });
57
+
58
+ test('Renders with aria-multiselectable of false by default', () => {
59
+ render(<TreeViewList>Content</TreeViewList>);
60
+
61
+ expect(screen.getByRole('tree')).toHaveAttribute('aria-multiselectable', 'false');
62
+ });
63
+
64
+ test('Renders with aria-multiselectable of true when isMultiSelectable is true', () => {
65
+ render(<TreeViewList isMultiSelectable>Content</TreeViewList>);
66
+
67
+ expect(screen.getByRole('tree')).toHaveAttribute('aria-multiselectable', 'true');
68
+ });
69
+
70
+ test('Does not render with aria-multiselectable when isNested is true', () => {
71
+ render(
72
+ <TreeViewList isMultiSelectable isNested>
73
+ Content
74
+ </TreeViewList>
75
+ );
76
+
77
+ expect(screen.getByRole('group')).not.toHaveAttribute('aria-multiselectable');
78
+ });
79
+
35
80
  test(`Does not render toolbar content when toolbar prop is not passed`, () => {
36
81
  render(<TreeViewList>Content</TreeViewList>);
37
82
 
83
+ expect(screen.queryByRole('tree')?.previousElementSibling).not.toBeInTheDocument();
38
84
  expect(screen.queryByRole('separator')).not.toBeInTheDocument();
39
85
  });
40
86
 
@@ -49,7 +49,7 @@ test(`Renders children when toggle is clicked`, async () => {
49
49
  const user = userEvent.setup();
50
50
  render(<TreeViewListItem {...requiredProps}>Content</TreeViewListItem>);
51
51
 
52
- await user.click(screen.getByRole('button'));
52
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
53
53
 
54
54
  expect(screen.getByText('Content')).toBeVisible();
55
55
  });
@@ -107,7 +107,7 @@ test(`Renders expandable toggle as button with aria-labelledby when hasCheckbox
107
107
  Content
108
108
  </TreeViewListItem>
109
109
  );
110
- const toggle = screen.getByRole('button');
110
+ const toggle = screen.getByRole('button', { name: requiredProps.name });
111
111
 
112
112
  expect(toggle).toHaveClass(styles.treeViewNodeToggle);
113
113
  expect(toggle).toHaveAccessibleName(requiredProps.name);
@@ -119,10 +119,9 @@ test(`Renders expandable toggle as button with aria-labelledby when isSelectable
119
119
  Content
120
120
  </TreeViewListItem>
121
121
  );
122
- const toggle = screen.getByText(requiredProps.name).previousElementSibling;
122
+ const buttons = screen.getAllByRole('button', { name: requiredProps.name });
123
123
 
124
- expect(toggle?.tagName).toBe('BUTTON');
125
- expect(toggle).toHaveAccessibleName(requiredProps.name);
124
+ expect(buttons[0]).toHaveClass(styles.treeViewNodeToggle);
126
125
  });
127
126
 
128
127
  test(`Renders name prop with class ${styles.treeViewNodeText}`, () => {
@@ -140,7 +139,7 @@ test(`Renders name prop in span by default`, () => {
140
139
  test(`Renders name prop in button when isSelectable is passed`, () => {
141
140
  render(<TreeViewListItem isSelectable {...requiredProps} />);
142
141
 
143
- expect(screen.getByText(requiredProps.name).tagName).toBe('BUTTON');
142
+ expect(screen.getByRole('button', { name: requiredProps.name })).toBeInTheDocument();
144
143
  });
145
144
 
146
145
  test('Does not render title prop by default', () => {
@@ -313,7 +312,7 @@ test('Passes badgeProps when hasBadge and customBadgeContent are passed', () =>
313
312
  test(`Renders ${styles.treeViewNode} element as button by default`, () => {
314
313
  render(<TreeViewListItem {...requiredProps} />);
315
314
 
316
- expect(screen.getByRole('button')).toHaveClass(styles.treeViewNode);
315
+ expect(screen.getByRole('button', { name: requiredProps.name })).toHaveClass(styles.treeViewNode);
317
316
  });
318
317
 
319
318
  test(`Renders ${styles.treeViewNode} element as label when hasCheckbox is passed`, () => {
@@ -346,8 +345,8 @@ test(`Renders ${styles.treeViewNode} element with for and id attributes when has
346
345
 
347
346
  const treeViewNode = screen.getByRole('treeitem').querySelector(`.${styles.treeViewNode}`);
348
347
 
349
- expect(treeViewNode).toHaveAttribute('for');
350
- expect(treeViewNode).toHaveAttribute('id');
348
+ expect(treeViewNode).toHaveAttribute('for', expect.stringMatching(/checkbox-id\d+/));
349
+ expect(treeViewNode).toHaveAttribute('id', expect.stringMatching(/label-checkbox-id\d+/));
351
350
  });
352
351
 
353
352
  test(`Renders ${styles.treeViewNode} element with id attribute when isSelectable and children are passed`, () => {
@@ -359,7 +358,7 @@ test(`Renders ${styles.treeViewNode} element with id attribute when isSelectable
359
358
 
360
359
  const treeViewNode = screen.getByRole('treeitem').querySelector(`.${styles.treeViewNode}`);
361
360
 
362
- expect(treeViewNode).toHaveAttribute('id');
361
+ expect(treeViewNode).toHaveAttribute('id', expect.stringMatching(/selectable-id\d+/));
363
362
  });
364
363
 
365
364
  test(`Does not render ${styles.treeViewNode} element with additional classes by default`, () => {
@@ -402,53 +401,60 @@ test(`Does not render ${styles.treeViewNode} element with ${styles.modifiers.cur
402
401
  expect(treeViewNode).not.toHaveClass(styles.modifiers.current);
403
402
  });
404
403
 
405
- describe('compareItems callback', () => {
404
+ describe('Callback props', () => {
405
+ const user = userEvent.setup();
406
406
  const compareItemsMock = jest.fn();
407
+ const onCheckMock = jest.fn();
408
+ const onSelectMock = jest.fn();
409
+ const onExpandMock = jest.fn();
410
+ const onCollapseMock = jest.fn();
411
+
407
412
  const activeItems = [{ name: 'Active item' }];
413
+ const parentItem = { name: 'Parent item' };
408
414
  const itemData = { name: 'Item data' };
409
415
 
410
- test('Not called by default', () => {
416
+ test('Does not call compareItems when not passed in', () => {
411
417
  render(<TreeViewListItem {...requiredProps}>Content</TreeViewListItem>);
412
418
 
413
419
  expect(compareItemsMock).not.toHaveBeenCalled();
414
420
  });
415
421
 
416
- test('Called when isSelectable and activeItems are passed', () => {
422
+ test('Does not call compareItems when isSelectable is passed but activeItems is not passed', () => {
417
423
  render(
418
424
  <TreeViewListItem
419
425
  compareItems={compareItemsMock}
420
426
  isSelectable
421
- activeItems={activeItems}
422
- itemData={itemData}
427
+ itemData={{ name: 'Item data' }}
423
428
  {...requiredProps}
424
429
  >
425
430
  Content
426
431
  </TreeViewListItem>
427
432
  );
428
433
 
429
- expect(compareItemsMock).toHaveBeenCalledTimes(1);
430
- expect(compareItemsMock).toHaveBeenCalledWith(
431
- expect.objectContaining(activeItems[0]),
432
- expect.objectContaining(itemData)
433
- );
434
+ expect(compareItemsMock).not.toHaveBeenCalled();
434
435
  });
435
436
 
436
- test('Not called when isSelectable is passed but activeItems is not passed', () => {
437
+ test('Calls compareItems when isSelectable and activeItems are passed', () => {
437
438
  render(
438
439
  <TreeViewListItem
439
440
  compareItems={compareItemsMock}
440
441
  isSelectable
441
- itemData={{ name: 'Item data' }}
442
+ activeItems={activeItems}
443
+ itemData={itemData}
442
444
  {...requiredProps}
443
445
  >
444
446
  Content
445
447
  </TreeViewListItem>
446
448
  );
447
449
 
448
- expect(compareItemsMock).not.toHaveBeenCalled();
450
+ expect(compareItemsMock).toHaveBeenCalledTimes(1);
451
+ expect(compareItemsMock).toHaveBeenCalledWith(
452
+ expect.objectContaining(activeItems[0]),
453
+ expect.objectContaining(itemData)
454
+ );
449
455
  });
450
456
 
451
- test('Called when children and activeItems are passed', () => {
457
+ test('Calls compareItems when children and activeItems are passed', () => {
452
458
  render(
453
459
  <TreeViewListItem
454
460
  compareItems={compareItemsMock}
@@ -464,190 +470,306 @@ describe('compareItems callback', () => {
464
470
  expect.objectContaining(itemData)
465
471
  );
466
472
  });
467
- });
468
473
 
469
- test('Does not call onCheck by default', async () => {
470
- const user = userEvent.setup();
471
- const onCheckMock = jest.fn();
474
+ test('Does not call onCheck when not passed in', async () => {
475
+ render(<TreeViewListItem hasCheckbox {...requiredProps} />);
472
476
 
473
- render(<TreeViewListItem hasCheckbox {...requiredProps} />);
477
+ await user.click(screen.getByRole('checkbox'));
474
478
 
475
- await user.click(screen.getByRole('checkbox'));
479
+ expect(onCheckMock).not.toHaveBeenCalled();
480
+ });
476
481
 
477
- expect(onCheckMock).not.toHaveBeenCalled();
478
- });
482
+ test('Does not call onCheck callback when checkbox is not clicked', async () => {
483
+ render(<TreeViewListItem onCheck={onCheckMock} hasCheckbox {...requiredProps} />);
479
484
 
480
- test('Calls onCheck callback when checkbox is clicked', async () => {
481
- const user = userEvent.setup();
482
- const onCheckMock = jest.fn();
485
+ await user.click(document.body);
483
486
 
484
- render(<TreeViewListItem onCheck={onCheckMock} hasCheckbox {...requiredProps} />);
487
+ expect(onCheckMock).not.toHaveBeenCalled();
488
+ });
485
489
 
486
- await user.click(screen.getByRole('checkbox'));
490
+ test('Calls onCheck callback when checkbox is clicked', async () => {
491
+ render(<TreeViewListItem onCheck={onCheckMock} hasCheckbox {...requiredProps} />);
487
492
 
488
- expect(onCheckMock).toHaveBeenCalledTimes(1);
489
- expect(onCheckMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
490
- });
493
+ await user.click(screen.getByRole('checkbox'));
491
494
 
492
- test('Does not call onSelect by default', async () => {
493
- const user = userEvent.setup();
494
- const onSelectMock = jest.fn();
495
+ expect(onCheckMock).toHaveBeenCalledTimes(1);
496
+ expect(onCheckMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
497
+ });
495
498
 
496
- render(<TreeViewListItem {...requiredProps} />);
499
+ test('Calls onCheck with parentItem when passed in', async () => {
500
+ render(<TreeViewListItem parentItem={parentItem} onCheck={onCheckMock} hasCheckbox {...requiredProps} />);
497
501
 
498
- await user.click(screen.getByRole('button'));
502
+ await user.click(screen.getByRole('checkbox'));
499
503
 
500
- expect(onSelectMock).not.toHaveBeenCalled();
501
- });
504
+ expect(onCheckMock).toHaveBeenCalledTimes(1);
505
+ expect(onCheckMock).toHaveBeenCalledWith(expect.any(Object), undefined, parentItem);
506
+ });
502
507
 
503
- test(`Calls onSelect when ${styles.treeViewNode} is clicked`, async () => {
504
- const user = userEvent.setup();
505
- const onSelectMock = jest.fn();
508
+ test('Calls onCheck with itemData when passed in', async () => {
509
+ render(<TreeViewListItem itemData={itemData} onCheck={onCheckMock} hasCheckbox {...requiredProps} />);
506
510
 
507
- render(<TreeViewListItem onSelect={onSelectMock} {...requiredProps} />);
511
+ await user.click(screen.getByRole('checkbox'));
508
512
 
509
- await user.click(screen.getByRole('button'));
513
+ expect(onCheckMock).toHaveBeenCalledTimes(1);
514
+ expect(onCheckMock).toHaveBeenCalledWith(expect.any(Object), itemData, undefined);
515
+ });
510
516
 
511
- expect(onSelectMock).toHaveBeenCalledTimes(1);
512
- expect(onSelectMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
513
- });
517
+ test('Does not call onSelect when not passed in', async () => {
518
+ render(<TreeViewListItem {...requiredProps} />);
514
519
 
515
- test('Does not call onSelect when hasCheckbox is passed', async () => {
516
- const user = userEvent.setup();
517
- const onSelectMock = jest.fn();
520
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
518
521
 
519
- render(<TreeViewListItem onSelect={onSelectMock} hasCheckbox {...requiredProps} />);
522
+ expect(onSelectMock).not.toHaveBeenCalled();
523
+ });
520
524
 
521
- const treeViewNode = screen.getByRole('treeitem').querySelector(`.${styles.treeViewNode}`);
522
- await user.click(treeViewNode as Element);
525
+ test(`Does not call onSelect when ${styles.treeViewNode} is not clicked`, async () => {
526
+ render(<TreeViewListItem onSelect={onSelectMock} {...requiredProps} />);
523
527
 
524
- expect(onSelectMock).not.toHaveBeenCalled();
525
- });
528
+ await user.click(document.body);
526
529
 
527
- test('Does not call onExpand by default', async () => {
528
- const user = userEvent.setup();
529
- const onExpandMock = jest.fn();
530
+ expect(onSelectMock).not.toHaveBeenCalled();
531
+ });
530
532
 
531
- render(<TreeViewListItem {...requiredProps}>Content</TreeViewListItem>);
533
+ test('Does not call onSelect when hasCheckbox is passed', async () => {
534
+ render(<TreeViewListItem onSelect={onSelectMock} hasCheckbox {...requiredProps} />);
532
535
 
533
- await user.click(screen.getByRole('button'));
536
+ const treeViewNode = screen.getByRole('treeitem').querySelector(`.${styles.treeViewNode}`);
537
+ await user.click(treeViewNode as Element);
534
538
 
535
- expect(onExpandMock).not.toHaveBeenCalled();
536
- });
539
+ expect(onSelectMock).not.toHaveBeenCalled();
540
+ });
537
541
 
538
- test(`Calls onExpand when ${styles.treeViewNode} is collapsed and clicked`, async () => {
539
- const user = userEvent.setup();
540
- const onExpandMock = jest.fn();
542
+ test(`Calls onSelect when ${styles.treeViewNode} is clicked`, async () => {
543
+ render(<TreeViewListItem onSelect={onSelectMock} {...requiredProps} />);
541
544
 
542
- render(
543
- <TreeViewListItem onExpand={onExpandMock} {...requiredProps}>
544
- Content
545
- </TreeViewListItem>
546
- );
545
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
547
546
 
548
- await user.click(screen.getByRole('button'));
547
+ expect(onSelectMock).toHaveBeenCalledTimes(1);
548
+ expect(onSelectMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
549
+ });
549
550
 
550
- expect(onExpandMock).toHaveBeenCalledTimes(1);
551
- expect(onExpandMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
552
- });
551
+ test(`Calls onSelect with parentItem when passed in`, async () => {
552
+ render(<TreeViewListItem parentItem={parentItem} onSelect={onSelectMock} {...requiredProps} />);
553
553
 
554
- test(`Calls onExpand when ${styles.treeViewNodeToggle} is clicked and isSelectable is passed`, async () => {
555
- const user = userEvent.setup();
556
- const onExpandMock = jest.fn();
554
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
557
555
 
558
- render(
559
- <TreeViewListItem isSelectable onExpand={onExpandMock} {...requiredProps}>
560
- Content
561
- </TreeViewListItem>
562
- );
556
+ expect(onSelectMock).toHaveBeenCalledTimes(1);
557
+ expect(onSelectMock).toHaveBeenCalledWith(expect.any(Object), undefined, parentItem);
558
+ });
563
559
 
564
- const toggle = screen.getByText(requiredProps.name).previousElementSibling;
565
- await user.click(toggle as Element);
560
+ test(`Calls onSelect with itemData when passed in`, async () => {
561
+ render(<TreeViewListItem itemData={itemData} onSelect={onSelectMock} {...requiredProps} />);
566
562
 
567
- expect(onExpandMock).toHaveBeenCalledTimes(1);
568
- expect(onExpandMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
569
- });
563
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
570
564
 
571
- test(`Calls onExpand when ${styles.treeViewNodeToggle} is clicked and hasCheckbox is passed`, async () => {
572
- const user = userEvent.setup();
573
- const onExpandMock = jest.fn();
565
+ expect(onSelectMock).toHaveBeenCalledTimes(1);
566
+ expect(onSelectMock).toHaveBeenCalledWith(expect.any(Object), itemData, undefined);
567
+ });
574
568
 
575
- render(
576
- <TreeViewListItem hasCheckbox onExpand={onExpandMock} {...requiredProps}>
577
- Content
578
- </TreeViewListItem>
579
- );
569
+ test('Does not call onExpand when not passed in', async () => {
570
+ render(<TreeViewListItem {...requiredProps}>Content</TreeViewListItem>);
580
571
 
581
- const toggle = screen.getByText(requiredProps.name).previousElementSibling?.previousElementSibling;
582
- await user.click(toggle as Element);
572
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
583
573
 
584
- expect(onExpandMock).toHaveBeenCalledTimes(1);
585
- expect(onExpandMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
586
- });
574
+ expect(onExpandMock).not.toHaveBeenCalled();
575
+ });
587
576
 
588
- test('Does not call onCollapse by default', async () => {
589
- const user = userEvent.setup();
590
- const onCollapseMock = jest.fn();
577
+ test(`Does not call onExpand when ${styles.treeViewNode} is collapsed and not clicked`, async () => {
578
+ render(
579
+ <TreeViewListItem onExpand={onExpandMock} {...requiredProps}>
580
+ Content
581
+ </TreeViewListItem>
582
+ );
591
583
 
592
- render(
593
- <TreeViewListItem isExpanded {...requiredProps}>
594
- Content
595
- </TreeViewListItem>
596
- );
584
+ await user.click(document.body);
597
585
 
598
- await user.click(screen.getByRole('button'));
586
+ expect(onExpandMock).not.toHaveBeenCalled();
587
+ });
599
588
 
600
- expect(onCollapseMock).not.toHaveBeenCalled();
601
- });
589
+ test(`Does not call onExpand when ${styles.treeViewNode} is expanded and clicked`, async () => {
590
+ render(
591
+ <TreeViewListItem isExpanded onExpand={onExpandMock} {...requiredProps}>
592
+ Content
593
+ </TreeViewListItem>
594
+ );
602
595
 
603
- test(`Calls onCollapse when ${styles.treeViewNode} is expanded and clicked`, async () => {
604
- const user = userEvent.setup();
605
- const onCollapseMock = jest.fn();
596
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
606
597
 
607
- render(
608
- <TreeViewListItem isExpanded onCollapse={onCollapseMock} {...requiredProps}>
609
- Content
610
- </TreeViewListItem>
611
- );
598
+ expect(onExpandMock).not.toHaveBeenCalled();
599
+ });
612
600
 
613
- await user.click(screen.getByRole('button'));
601
+ test(`Calls onExpand when ${styles.treeViewNode} is collapsed and clicked`, async () => {
602
+ render(
603
+ <TreeViewListItem onExpand={onExpandMock} {...requiredProps}>
604
+ Content
605
+ </TreeViewListItem>
606
+ );
614
607
 
615
- expect(onCollapseMock).toHaveBeenCalledTimes(1);
616
- expect(onCollapseMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
617
- });
608
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
618
609
 
619
- test(`Calls onCollapse when ${styles.treeViewNodeToggle} is clicked and isSelectable is passed`, async () => {
620
- const user = userEvent.setup();
621
- const onCollapseMock = jest.fn();
610
+ expect(onExpandMock).toHaveBeenCalledTimes(1);
611
+ expect(onExpandMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
612
+ });
622
613
 
623
- render(
624
- <TreeViewListItem isExpanded isSelectable onCollapse={onCollapseMock} {...requiredProps}>
625
- Content
626
- </TreeViewListItem>
627
- );
614
+ test(`Calls onExpand when ${styles.treeViewNodeToggle} is clicked and isSelectable is passed`, async () => {
615
+ render(
616
+ <TreeViewListItem isSelectable onExpand={onExpandMock} {...requiredProps}>
617
+ Content
618
+ </TreeViewListItem>
619
+ );
628
620
 
629
- const toggle = screen.getByText(requiredProps.name).previousElementSibling;
630
- await user.click(toggle as Element);
621
+ const toggle = screen.getByText(requiredProps.name).previousElementSibling;
622
+ await user.click(toggle as Element);
631
623
 
632
- expect(onCollapseMock).toHaveBeenCalledTimes(1);
633
- expect(onCollapseMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
634
- });
624
+ expect(onExpandMock).toHaveBeenCalledTimes(1);
625
+ expect(onExpandMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
626
+ });
635
627
 
636
- test(`Calls onCollapse when ${styles.treeViewNodeToggle} is clicked and hasCheckbox is passed`, async () => {
637
- const user = userEvent.setup();
638
- const onCollapseMock = jest.fn();
628
+ test(`Calls onExpand when ${styles.treeViewNodeToggle} is clicked and hasCheckbox is passed`, async () => {
629
+ render(
630
+ <TreeViewListItem hasCheckbox onExpand={onExpandMock} {...requiredProps}>
631
+ Content
632
+ </TreeViewListItem>
633
+ );
639
634
 
640
- render(
641
- <TreeViewListItem isExpanded hasCheckbox onCollapse={onCollapseMock} {...requiredProps}>
642
- Content
643
- </TreeViewListItem>
644
- );
635
+ const toggle = screen.getByText(requiredProps.name).previousElementSibling?.previousElementSibling;
636
+ await user.click(toggle as Element);
637
+
638
+ expect(onExpandMock).toHaveBeenCalledTimes(1);
639
+ expect(onExpandMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
640
+ });
641
+
642
+ test(`Calls onExpand with parentItem when passed in`, async () => {
643
+ render(
644
+ <TreeViewListItem parentItem={parentItem} onExpand={onExpandMock} {...requiredProps}>
645
+ Content
646
+ </TreeViewListItem>
647
+ );
648
+
649
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
650
+
651
+ expect(onExpandMock).toHaveBeenCalledTimes(1);
652
+ expect(onExpandMock).toHaveBeenCalledWith(expect.any(Object), undefined, parentItem);
653
+ });
654
+
655
+ test(`Calls onExpand with itemData when passed in`, async () => {
656
+ render(
657
+ <TreeViewListItem itemData={itemData} onExpand={onExpandMock} {...requiredProps}>
658
+ Content
659
+ </TreeViewListItem>
660
+ );
661
+
662
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
663
+
664
+ expect(onExpandMock).toHaveBeenCalledTimes(1);
665
+ expect(onExpandMock).toHaveBeenCalledWith(expect.any(Object), itemData, undefined);
666
+ });
667
+
668
+ test('Does not call onCollapse when not passed in', async () => {
669
+ render(
670
+ <TreeViewListItem isExpanded {...requiredProps}>
671
+ Content
672
+ </TreeViewListItem>
673
+ );
674
+
675
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
676
+
677
+ expect(onCollapseMock).not.toHaveBeenCalled();
678
+ });
679
+
680
+ test(`Does not call onCollapse when ${styles.treeViewNode} is expanded and not clicked`, async () => {
681
+ render(
682
+ <TreeViewListItem isExpanded onCollapse={onCollapseMock} {...requiredProps}>
683
+ Content
684
+ </TreeViewListItem>
685
+ );
686
+
687
+ await user.click(document.body);
688
+
689
+ expect(onCollapseMock).not.toHaveBeenCalled();
690
+ });
691
+
692
+ test(`Does not call onCollapse when ${styles.treeViewNode} is collapsed and clicked`, async () => {
693
+ render(
694
+ <TreeViewListItem onCollapse={onCollapseMock} {...requiredProps}>
695
+ Content
696
+ </TreeViewListItem>
697
+ );
698
+
699
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
700
+
701
+ expect(onCollapseMock).not.toHaveBeenCalled();
702
+ });
703
+
704
+ test(`Calls onCollapse when ${styles.treeViewNode} is expanded and clicked`, async () => {
705
+ render(
706
+ <TreeViewListItem isExpanded onCollapse={onCollapseMock} {...requiredProps}>
707
+ Content
708
+ </TreeViewListItem>
709
+ );
710
+
711
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
712
+
713
+ expect(onCollapseMock).toHaveBeenCalledTimes(1);
714
+ expect(onCollapseMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
715
+ });
716
+
717
+ test(`Calls onCollapse when ${styles.treeViewNodeToggle} is clicked and isSelectable is passed`, async () => {
718
+ render(
719
+ <TreeViewListItem isExpanded isSelectable onCollapse={onCollapseMock} {...requiredProps}>
720
+ Content
721
+ </TreeViewListItem>
722
+ );
723
+
724
+ const toggle = screen.getByText(requiredProps.name).previousElementSibling;
725
+ await user.click(toggle as Element);
726
+
727
+ expect(onCollapseMock).toHaveBeenCalledTimes(1);
728
+ expect(onCollapseMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
729
+ });
730
+
731
+ test(`Calls onCollapse when ${styles.treeViewNodeToggle} is clicked and hasCheckbox is passed`, async () => {
732
+ render(
733
+ <TreeViewListItem isExpanded hasCheckbox onCollapse={onCollapseMock} {...requiredProps}>
734
+ Content
735
+ </TreeViewListItem>
736
+ );
645
737
 
646
- const toggle = screen.getByText(requiredProps.name).previousElementSibling?.previousElementSibling;
647
- await user.click(toggle as Element);
738
+ const toggle = screen.getByText(requiredProps.name).previousElementSibling?.previousElementSibling;
739
+ await user.click(toggle as Element);
740
+
741
+ expect(onCollapseMock).toHaveBeenCalledTimes(1);
742
+ expect(onCollapseMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
743
+ });
648
744
 
649
- expect(onCollapseMock).toHaveBeenCalledTimes(1);
650
- expect(onCollapseMock).toHaveBeenCalledWith(expect.any(Object), undefined, undefined);
745
+ test(`Calls onCollapse with parentItem when passed in`, async () => {
746
+ render(
747
+ <TreeViewListItem parentItem={parentItem} isExpanded onCollapse={onCollapseMock} {...requiredProps}>
748
+ Content
749
+ </TreeViewListItem>
750
+ );
751
+
752
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
753
+
754
+ expect(onCollapseMock).toHaveBeenCalledTimes(1);
755
+ expect(onCollapseMock).toHaveBeenCalledWith(expect.any(Object), undefined, parentItem);
756
+ });
757
+
758
+ test(`Calls onCollapse with itemData when passed in`, async () => {
759
+ const user = userEvent.setup();
760
+ const onCollapseMock = jest.fn();
761
+
762
+ render(
763
+ <TreeViewListItem itemData={itemData} isExpanded onCollapse={onCollapseMock} {...requiredProps}>
764
+ Content
765
+ </TreeViewListItem>
766
+ );
767
+
768
+ await user.click(screen.getByRole('button', { name: requiredProps.name }));
769
+
770
+ expect(onCollapseMock).toHaveBeenCalledTimes(1);
771
+ expect(onCollapseMock).toHaveBeenCalledWith(expect.any(Object), itemData, undefined);
772
+ });
651
773
  });
652
774
 
653
775
  test(`Does not render ${styles.treeViewAction} element by default`, () => {
@@ -75,7 +75,7 @@ test(`Does not call onSearch when input is not typed into`, async () => {
75
75
 
76
76
  render(
77
77
  <>
78
- <TreeViewSearch />
78
+ <TreeViewSearch onSearch={onSearchMock} />
79
79
  <input aria-label="native input" />
80
80
  </>
81
81
  );
@@ -85,6 +85,17 @@ test(`Does not call onSearch when input is not typed into`, async () => {
85
85
  expect(onSearchMock).not.toHaveBeenCalled();
86
86
  });
87
87
 
88
+ test(`Does not call onSearch when not passed in`, async () => {
89
+ const user = userEvent.setup();
90
+ const onSearchMock = jest.fn();
91
+
92
+ render(<TreeViewSearch />);
93
+
94
+ await user.type(screen.getByRole('searchbox'), 'a');
95
+
96
+ expect(onSearchMock).not.toHaveBeenCalled();
97
+ });
98
+
88
99
  test('Matches snapshot', () => {
89
100
  const { asFragment } = render(<TreeViewSearch />);
90
101