@patternfly/react-table 6.0.0-alpha.1 → 6.0.0-alpha.100

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 (366) hide show
  1. package/CHANGELOG.md +1215 -1
  2. package/README.md +3 -18
  3. package/components/package.json +1 -1
  4. package/deprecated/package.json +1 -1
  5. package/dist/dynamic/components/Table/package.json +1 -1
  6. package/dist/dynamic/components/Table/utils/decorators/package.json +1 -1
  7. package/dist/dynamic/components/Table/utils/package.json +1 -1
  8. package/dist/dynamic/deprecated/components/Table/base/package.json +1 -1
  9. package/dist/dynamic/deprecated/components/Table/package.json +1 -1
  10. package/dist/dynamic/deprecated/components/package.json +1 -1
  11. package/dist/dynamic-modules.json +127 -0
  12. package/dist/esm/components/Table/ActionsColumn.d.ts +3 -1
  13. package/dist/esm/components/Table/ActionsColumn.d.ts.map +1 -1
  14. package/dist/esm/components/Table/ActionsColumn.js +4 -5
  15. package/dist/esm/components/Table/ActionsColumn.js.map +1 -1
  16. package/dist/esm/components/Table/Caption.js +1 -1
  17. package/dist/esm/components/Table/Caption.js.map +1 -1
  18. package/dist/esm/components/Table/CollapseColumn.js +1 -1
  19. package/dist/esm/components/Table/CollapseColumn.js.map +1 -1
  20. package/dist/esm/components/Table/DraggableCell.d.ts.map +1 -1
  21. package/dist/esm/components/Table/DraggableCell.js +1 -2
  22. package/dist/esm/components/Table/DraggableCell.js.map +1 -1
  23. package/dist/esm/components/Table/DraggableRowWrapper.js +2 -2
  24. package/dist/esm/components/Table/DraggableRowWrapper.js.map +1 -1
  25. package/dist/esm/components/Table/EditColumn.d.ts.map +1 -1
  26. package/dist/esm/components/Table/EditColumn.js +4 -7
  27. package/dist/esm/components/Table/EditColumn.js.map +1 -1
  28. package/dist/esm/components/Table/EditableSelectInputCell.d.ts +3 -4
  29. package/dist/esm/components/Table/EditableSelectInputCell.d.ts.map +1 -1
  30. package/dist/esm/components/Table/EditableSelectInputCell.js +11 -7
  31. package/dist/esm/components/Table/EditableSelectInputCell.js.map +1 -1
  32. package/dist/esm/components/Table/EditableTextCell.js +3 -3
  33. package/dist/esm/components/Table/EditableTextCell.js.map +1 -1
  34. package/dist/esm/components/Table/ExpandableRowContent.js +1 -1
  35. package/dist/esm/components/Table/ExpandableRowContent.js.map +1 -1
  36. package/dist/esm/components/Table/FavoritesCell.d.ts.map +1 -1
  37. package/dist/esm/components/Table/FavoritesCell.js +1 -2
  38. package/dist/esm/components/Table/FavoritesCell.js.map +1 -1
  39. package/dist/esm/components/Table/HeaderCellInfoWrapper.d.ts.map +1 -1
  40. package/dist/esm/components/Table/HeaderCellInfoWrapper.js +3 -5
  41. package/dist/esm/components/Table/HeaderCellInfoWrapper.js.map +1 -1
  42. package/dist/esm/components/Table/InnerScrollContainer.js +1 -1
  43. package/dist/esm/components/Table/InnerScrollContainer.js.map +1 -1
  44. package/dist/esm/components/Table/OuterScrollContainer.js +1 -1
  45. package/dist/esm/components/Table/OuterScrollContainer.js.map +1 -1
  46. package/dist/esm/components/Table/RowWrapper.d.ts +1 -1
  47. package/dist/esm/components/Table/RowWrapper.js.map +1 -1
  48. package/dist/esm/components/Table/SelectColumn.d.ts +5 -0
  49. package/dist/esm/components/Table/SelectColumn.d.ts.map +1 -1
  50. package/dist/esm/components/Table/SelectColumn.js +6 -3
  51. package/dist/esm/components/Table/SelectColumn.js.map +1 -1
  52. package/dist/esm/components/Table/SortColumn.d.ts +4 -0
  53. package/dist/esm/components/Table/SortColumn.d.ts.map +1 -1
  54. package/dist/esm/components/Table/SortColumn.js +3 -3
  55. package/dist/esm/components/Table/SortColumn.js.map +1 -1
  56. package/dist/esm/components/Table/Table.d.ts +1 -1
  57. package/dist/esm/components/Table/Table.d.ts.map +1 -1
  58. package/dist/esm/components/Table/Table.js +9 -9
  59. package/dist/esm/components/Table/Table.js.map +1 -1
  60. package/dist/esm/components/Table/TableText.d.ts +3 -1
  61. package/dist/esm/components/Table/TableText.d.ts.map +1 -1
  62. package/dist/esm/components/Table/TableText.js +13 -11
  63. package/dist/esm/components/Table/TableText.js.map +1 -1
  64. package/dist/esm/components/Table/TableTypes.d.ts +29 -25
  65. package/dist/esm/components/Table/TableTypes.d.ts.map +1 -1
  66. package/dist/esm/components/Table/TableTypes.js.map +1 -1
  67. package/dist/esm/components/Table/Tbody.d.ts +1 -1
  68. package/dist/esm/components/Table/Tbody.d.ts.map +1 -1
  69. package/dist/esm/components/Table/Tbody.js +1 -1
  70. package/dist/esm/components/Table/Tbody.js.map +1 -1
  71. package/dist/esm/components/Table/Td.d.ts +2 -2
  72. package/dist/esm/components/Table/Td.d.ts.map +1 -1
  73. package/dist/esm/components/Table/Td.js +9 -5
  74. package/dist/esm/components/Table/Td.js.map +1 -1
  75. package/dist/esm/components/Table/Th.d.ts +12 -1
  76. package/dist/esm/components/Table/Th.d.ts.map +1 -1
  77. package/dist/esm/components/Table/Th.js +26 -12
  78. package/dist/esm/components/Table/Th.js.map +1 -1
  79. package/dist/esm/components/Table/Thead.d.ts +1 -1
  80. package/dist/esm/components/Table/Thead.d.ts.map +1 -1
  81. package/dist/esm/components/Table/Thead.js +1 -1
  82. package/dist/esm/components/Table/Thead.js.map +1 -1
  83. package/dist/esm/components/Table/Tr.d.ts +4 -2
  84. package/dist/esm/components/Table/Tr.d.ts.map +1 -1
  85. package/dist/esm/components/Table/Tr.js +4 -4
  86. package/dist/esm/components/Table/Tr.js.map +1 -1
  87. package/dist/esm/components/Table/TreeRowWrapper.js +2 -2
  88. package/dist/esm/components/Table/TreeRowWrapper.js.map +1 -1
  89. package/dist/esm/components/Table/base/columns-are-equal.js.map +1 -1
  90. package/dist/esm/components/Table/base/evaluate-transforms.js.map +1 -1
  91. package/dist/esm/components/Table/base/merge-props.js.map +1 -1
  92. package/dist/esm/components/Table/base/provider.d.ts +8 -8
  93. package/dist/esm/components/Table/base/provider.js.map +1 -1
  94. package/dist/esm/components/Table/base/types.d.ts +23 -24
  95. package/dist/esm/components/Table/base/types.d.ts.map +1 -1
  96. package/dist/esm/components/Table/base/types.js.map +1 -1
  97. package/dist/esm/components/Table/utils/decorators/cellActions.js +1 -1
  98. package/dist/esm/components/Table/utils/decorators/cellActions.js.map +1 -1
  99. package/dist/esm/components/Table/utils/decorators/cellWidth.js +1 -1
  100. package/dist/esm/components/Table/utils/decorators/cellWidth.js.map +1 -1
  101. package/dist/esm/components/Table/utils/decorators/classNames.js +1 -1
  102. package/dist/esm/components/Table/utils/decorators/classNames.js.map +1 -1
  103. package/dist/esm/components/Table/utils/decorators/collapsible.js +1 -1
  104. package/dist/esm/components/Table/utils/decorators/collapsible.js.map +1 -1
  105. package/dist/esm/components/Table/utils/decorators/compoundExpand.js +1 -1
  106. package/dist/esm/components/Table/utils/decorators/compoundExpand.js.map +1 -1
  107. package/dist/esm/components/Table/utils/decorators/editable.js +1 -1
  108. package/dist/esm/components/Table/utils/decorators/editable.js.map +1 -1
  109. package/dist/esm/components/Table/utils/decorators/favoritable.js +1 -1
  110. package/dist/esm/components/Table/utils/decorators/favoritable.js.map +1 -1
  111. package/dist/esm/components/Table/utils/decorators/info.js +1 -1
  112. package/dist/esm/components/Table/utils/decorators/info.js.map +1 -1
  113. package/dist/esm/components/Table/utils/decorators/selectable.d.ts.map +1 -1
  114. package/dist/esm/components/Table/utils/decorators/selectable.js +5 -5
  115. package/dist/esm/components/Table/utils/decorators/selectable.js.map +1 -1
  116. package/dist/esm/components/Table/utils/decorators/sortable.d.ts.map +1 -1
  117. package/dist/esm/components/Table/utils/decorators/sortable.js +7 -4
  118. package/dist/esm/components/Table/utils/decorators/sortable.js.map +1 -1
  119. package/dist/esm/components/Table/utils/decorators/treeRow.d.ts +3 -3
  120. package/dist/esm/components/Table/utils/decorators/treeRow.d.ts.map +1 -1
  121. package/dist/esm/components/Table/utils/decorators/treeRow.js +5 -5
  122. package/dist/esm/components/Table/utils/decorators/treeRow.js.map +1 -1
  123. package/dist/esm/components/Table/utils/decorators/wrappable.js +1 -1
  124. package/dist/esm/components/Table/utils/decorators/wrappable.js.map +1 -1
  125. package/dist/esm/components/Table/utils/headerUtils.js.map +1 -1
  126. package/dist/esm/components/Table/utils/utils.js.map +1 -1
  127. package/dist/esm/demos/DashboardHeader.d.ts +8 -0
  128. package/dist/esm/demos/DashboardHeader.d.ts.map +1 -0
  129. package/dist/esm/demos/DashboardHeader.js +78 -0
  130. package/dist/esm/demos/DashboardHeader.js.map +1 -0
  131. package/dist/esm/demos/DashboardWrapper.d.ts +85 -0
  132. package/dist/esm/demos/DashboardWrapper.d.ts.map +1 -0
  133. package/dist/esm/demos/DashboardWrapper.js +41 -0
  134. package/dist/esm/demos/DashboardWrapper.js.map +1 -0
  135. package/dist/esm/demos/index.d.ts +4 -0
  136. package/dist/esm/demos/index.d.ts.map +1 -0
  137. package/dist/esm/demos/index.js +4 -0
  138. package/dist/esm/demos/index.js.map +1 -0
  139. package/dist/esm/demos/sampleData.d.ts +13 -0
  140. package/dist/esm/demos/sampleData.d.ts.map +1 -0
  141. package/dist/esm/demos/sampleData.js +764 -0
  142. package/dist/esm/demos/sampleData.js.map +1 -0
  143. package/dist/esm/deprecated/components/Table/Body.d.ts +2 -2
  144. package/dist/esm/deprecated/components/Table/Body.d.ts.map +1 -1
  145. package/dist/esm/deprecated/components/Table/Body.js.map +1 -1
  146. package/dist/esm/deprecated/components/Table/BodyCell.js.map +1 -1
  147. package/dist/esm/deprecated/components/Table/BodyWrapper.js.map +1 -1
  148. package/dist/esm/deprecated/components/Table/Table.d.ts +1 -1
  149. package/dist/esm/deprecated/components/Table/Table.d.ts.map +1 -1
  150. package/dist/esm/deprecated/components/Table/Table.js +3 -4
  151. package/dist/esm/deprecated/components/Table/Table.js.map +1 -1
  152. package/dist/esm/deprecated/components/Table/base/body-row.js.map +1 -1
  153. package/dist/esm/deprecated/components/Table/base/body.d.ts +8 -2
  154. package/dist/esm/deprecated/components/Table/base/body.d.ts.map +1 -1
  155. package/dist/esm/deprecated/components/Table/base/body.js.map +1 -1
  156. package/dist/esm/deprecated/components/Table/base/header-row.js +1 -1
  157. package/dist/esm/deprecated/components/Table/base/header-row.js.map +1 -1
  158. package/dist/esm/deprecated/components/Table/base/header.d.ts +1 -1
  159. package/dist/esm/deprecated/components/Table/base/header.d.ts.map +1 -1
  160. package/dist/esm/deprecated/components/Table/base/resolve-row-key.js.map +1 -1
  161. package/dist/esm/test-helpers/data-helpers.js.map +1 -1
  162. package/dist/js/components/Table/ActionsColumn.d.ts +3 -1
  163. package/dist/js/components/Table/ActionsColumn.d.ts.map +1 -1
  164. package/dist/js/components/Table/ActionsColumn.js +10 -11
  165. package/dist/js/components/Table/ActionsColumn.js.map +1 -1
  166. package/dist/js/components/Table/CollapseColumn.js +2 -2
  167. package/dist/js/components/Table/CollapseColumn.js.map +1 -1
  168. package/dist/js/components/Table/DraggableCell.d.ts.map +1 -1
  169. package/dist/js/components/Table/DraggableCell.js +3 -4
  170. package/dist/js/components/Table/DraggableCell.js.map +1 -1
  171. package/dist/js/components/Table/EditColumn.d.ts.map +1 -1
  172. package/dist/js/components/Table/EditColumn.js +7 -10
  173. package/dist/js/components/Table/EditColumn.js.map +1 -1
  174. package/dist/js/components/Table/EditableSelectInputCell.d.ts +3 -4
  175. package/dist/js/components/Table/EditableSelectInputCell.d.ts.map +1 -1
  176. package/dist/js/components/Table/EditableSelectInputCell.js +9 -5
  177. package/dist/js/components/Table/EditableSelectInputCell.js.map +1 -1
  178. package/dist/js/components/Table/EditableTextCell.js +2 -2
  179. package/dist/js/components/Table/EditableTextCell.js.map +1 -1
  180. package/dist/js/components/Table/FavoritesCell.d.ts.map +1 -1
  181. package/dist/js/components/Table/FavoritesCell.js +3 -4
  182. package/dist/js/components/Table/FavoritesCell.js.map +1 -1
  183. package/dist/js/components/Table/HeaderCellInfoWrapper.d.ts.map +1 -1
  184. package/dist/js/components/Table/HeaderCellInfoWrapper.js +6 -8
  185. package/dist/js/components/Table/HeaderCellInfoWrapper.js.map +1 -1
  186. package/dist/js/components/Table/RowWrapper.d.ts +1 -1
  187. package/dist/js/components/Table/RowWrapper.js +1 -1
  188. package/dist/js/components/Table/RowWrapper.js.map +1 -1
  189. package/dist/js/components/Table/SelectColumn.d.ts +5 -0
  190. package/dist/js/components/Table/SelectColumn.d.ts.map +1 -1
  191. package/dist/js/components/Table/SelectColumn.js +7 -4
  192. package/dist/js/components/Table/SelectColumn.js.map +1 -1
  193. package/dist/js/components/Table/SortColumn.d.ts +4 -0
  194. package/dist/js/components/Table/SortColumn.d.ts.map +1 -1
  195. package/dist/js/components/Table/SortColumn.js +6 -6
  196. package/dist/js/components/Table/SortColumn.js.map +1 -1
  197. package/dist/js/components/Table/Table.d.ts +1 -1
  198. package/dist/js/components/Table/Table.d.ts.map +1 -1
  199. package/dist/js/components/Table/Table.js +5 -5
  200. package/dist/js/components/Table/Table.js.map +1 -1
  201. package/dist/js/components/Table/TableText.d.ts +3 -1
  202. package/dist/js/components/Table/TableText.d.ts.map +1 -1
  203. package/dist/js/components/Table/TableText.js +15 -13
  204. package/dist/js/components/Table/TableText.js.map +1 -1
  205. package/dist/js/components/Table/TableTypes.d.ts +29 -25
  206. package/dist/js/components/Table/TableTypes.d.ts.map +1 -1
  207. package/dist/js/components/Table/TableTypes.js +2 -2
  208. package/dist/js/components/Table/TableTypes.js.map +1 -1
  209. package/dist/js/components/Table/Tbody.d.ts +1 -1
  210. package/dist/js/components/Table/Tbody.d.ts.map +1 -1
  211. package/dist/js/components/Table/Td.d.ts +2 -2
  212. package/dist/js/components/Table/Td.d.ts.map +1 -1
  213. package/dist/js/components/Table/Td.js +8 -4
  214. package/dist/js/components/Table/Td.js.map +1 -1
  215. package/dist/js/components/Table/Th.d.ts +12 -1
  216. package/dist/js/components/Table/Th.d.ts.map +1 -1
  217. package/dist/js/components/Table/Th.js +24 -10
  218. package/dist/js/components/Table/Th.js.map +1 -1
  219. package/dist/js/components/Table/Thead.d.ts +1 -1
  220. package/dist/js/components/Table/Thead.d.ts.map +1 -1
  221. package/dist/js/components/Table/Tr.d.ts +4 -2
  222. package/dist/js/components/Table/Tr.d.ts.map +1 -1
  223. package/dist/js/components/Table/Tr.js +3 -3
  224. package/dist/js/components/Table/Tr.js.map +1 -1
  225. package/dist/js/components/Table/base/columns-are-equal.js.map +1 -1
  226. package/dist/js/components/Table/base/evaluate-transforms.js.map +1 -1
  227. package/dist/js/components/Table/base/merge-props.js.map +1 -1
  228. package/dist/js/components/Table/base/provider.d.ts +8 -8
  229. package/dist/js/components/Table/base/provider.js.map +1 -1
  230. package/dist/js/components/Table/base/types.d.ts +23 -24
  231. package/dist/js/components/Table/base/types.d.ts.map +1 -1
  232. package/dist/js/components/Table/base/types.js.map +1 -1
  233. package/dist/js/components/Table/utils/decorators/compoundExpand.js.map +1 -1
  234. package/dist/js/components/Table/utils/decorators/editable.js.map +1 -1
  235. package/dist/js/components/Table/utils/decorators/favoritable.js.map +1 -1
  236. package/dist/js/components/Table/utils/decorators/selectable.d.ts.map +1 -1
  237. package/dist/js/components/Table/utils/decorators/selectable.js +3 -3
  238. package/dist/js/components/Table/utils/decorators/selectable.js.map +1 -1
  239. package/dist/js/components/Table/utils/decorators/sortable.d.ts.map +1 -1
  240. package/dist/js/components/Table/utils/decorators/sortable.js +7 -4
  241. package/dist/js/components/Table/utils/decorators/sortable.js.map +1 -1
  242. package/dist/js/components/Table/utils/decorators/treeRow.d.ts +3 -3
  243. package/dist/js/components/Table/utils/decorators/treeRow.d.ts.map +1 -1
  244. package/dist/js/components/Table/utils/decorators/treeRow.js +7 -7
  245. package/dist/js/components/Table/utils/decorators/treeRow.js.map +1 -1
  246. package/dist/js/components/Table/utils/headerUtils.js.map +1 -1
  247. package/dist/js/components/Table/utils/utils.js.map +1 -1
  248. package/dist/js/demos/DashboardHeader.d.ts +8 -0
  249. package/dist/js/demos/DashboardHeader.d.ts.map +1 -0
  250. package/dist/js/demos/DashboardHeader.js +83 -0
  251. package/dist/js/demos/DashboardHeader.js.map +1 -0
  252. package/dist/js/demos/DashboardWrapper.d.ts +85 -0
  253. package/dist/js/demos/DashboardWrapper.d.ts.map +1 -0
  254. package/dist/js/demos/DashboardWrapper.js +45 -0
  255. package/dist/js/demos/DashboardWrapper.js.map +1 -0
  256. package/dist/js/demos/index.d.ts +4 -0
  257. package/dist/js/demos/index.d.ts.map +1 -0
  258. package/dist/js/demos/index.js +7 -0
  259. package/dist/js/demos/index.js.map +1 -0
  260. package/dist/js/demos/sampleData.d.ts +13 -0
  261. package/dist/js/demos/sampleData.d.ts.map +1 -0
  262. package/dist/js/demos/sampleData.js +767 -0
  263. package/dist/js/demos/sampleData.js.map +1 -0
  264. package/dist/js/deprecated/components/Table/Body.d.ts +2 -2
  265. package/dist/js/deprecated/components/Table/Body.d.ts.map +1 -1
  266. package/dist/js/deprecated/components/Table/Body.js.map +1 -1
  267. package/dist/js/deprecated/components/Table/BodyCell.js +3 -3
  268. package/dist/js/deprecated/components/Table/BodyCell.js.map +1 -1
  269. package/dist/js/deprecated/components/Table/BodyWrapper.js.map +1 -1
  270. package/dist/js/deprecated/components/Table/Table.d.ts +1 -1
  271. package/dist/js/deprecated/components/Table/Table.d.ts.map +1 -1
  272. package/dist/js/deprecated/components/Table/Table.js +9 -10
  273. package/dist/js/deprecated/components/Table/Table.js.map +1 -1
  274. package/dist/js/deprecated/components/Table/base/body-row.js.map +1 -1
  275. package/dist/js/deprecated/components/Table/base/body.d.ts +8 -2
  276. package/dist/js/deprecated/components/Table/base/body.d.ts.map +1 -1
  277. package/dist/js/deprecated/components/Table/base/body.js.map +1 -1
  278. package/dist/js/deprecated/components/Table/base/header-row.js +1 -1
  279. package/dist/js/deprecated/components/Table/base/header-row.js.map +1 -1
  280. package/dist/js/deprecated/components/Table/base/header.d.ts +1 -1
  281. package/dist/js/deprecated/components/Table/base/header.d.ts.map +1 -1
  282. package/dist/js/deprecated/components/Table/base/resolve-row-key.js.map +1 -1
  283. package/dist/js/test-helpers/data-helpers.js.map +1 -1
  284. package/dist/umd/assets/output-BnU-TMGU.css +26986 -0
  285. package/dist/umd/react-table.min.js +8 -9
  286. package/package.json +8 -12
  287. package/rollup.config.mjs +8 -0
  288. package/single-packages.config.json +3 -6
  289. package/src/components/Table/ActionsColumn.tsx +35 -31
  290. package/src/components/Table/DraggableCell.tsx +2 -3
  291. package/src/components/Table/EditColumn.tsx +21 -9
  292. package/src/components/Table/EditableSelectInputCell.tsx +16 -11
  293. package/src/components/Table/EditableTextCell.tsx +1 -1
  294. package/src/components/Table/FavoritesCell.tsx +2 -3
  295. package/src/components/Table/HeaderCellInfoWrapper.tsx +10 -6
  296. package/src/components/Table/SelectColumn.tsx +27 -8
  297. package/src/components/Table/SortColumn.tsx +15 -1
  298. package/src/components/Table/Table.tsx +6 -6
  299. package/src/components/Table/TableText.tsx +19 -9
  300. package/src/components/Table/TableTypes.tsx +12 -9
  301. package/src/components/Table/Td.tsx +11 -6
  302. package/src/components/Table/Th.tsx +42 -10
  303. package/src/components/Table/Tr.tsx +5 -1
  304. package/src/components/Table/__tests__/Th.test.tsx +31 -0
  305. package/src/components/Table/__tests__/__snapshots__/RowWrapper.test.tsx.snap +4 -4
  306. package/src/components/Table/base/types.tsx +6 -7
  307. package/src/components/Table/examples/Table.md +48 -3
  308. package/src/components/Table/examples/TableActions.tsx +2 -2
  309. package/src/components/Table/examples/TableActionsOverflow.tsx +3 -5
  310. package/src/components/Table/examples/TableCompoundExpandable.tsx +5 -4
  311. package/src/components/Table/examples/TableDraggable.tsx +19 -16
  312. package/src/components/Table/examples/TableEditable.tsx +313 -0
  313. package/src/components/Table/examples/TableEmptyState.tsx +1 -8
  314. package/src/components/Table/examples/TableExpandable.tsx +1 -2
  315. package/src/components/Table/examples/TableMisc.tsx +3 -1
  316. package/src/components/Table/examples/TableNestedExpandable.tsx +1 -1
  317. package/src/components/Table/examples/TableNestedHeaders.tsx +4 -6
  318. package/src/components/Table/examples/TableNestedStickyHeader.tsx +4 -9
  319. package/src/components/Table/examples/TableNestedTableExpandable.tsx +1 -1
  320. package/src/components/Table/examples/TableSelectable.tsx +1 -0
  321. package/src/components/Table/examples/TableSelectableRadio.tsx +1 -1
  322. package/src/components/Table/examples/TableSortableCustom.tsx +2 -3
  323. package/src/components/Table/examples/TableStickyColumnsAndHeader.tsx +6 -5
  324. package/src/components/Table/examples/TableStripedExpandable.tsx +1 -1
  325. package/src/components/Table/utils/__snapshots__/transformers.test.tsx.snap +4 -4
  326. package/src/components/Table/utils/decorators/selectable.tsx +3 -2
  327. package/src/components/Table/utils/decorators/sortable.tsx +8 -2
  328. package/src/components/Table/utils/decorators/treeRow.tsx +3 -3
  329. package/src/components/Table/utils/transformers.test.tsx +14 -11
  330. package/src/demos/DashboardHeader.tsx +201 -0
  331. package/src/demos/DashboardWrapper.tsx +198 -0
  332. package/src/demos/Table.md +181 -0
  333. package/src/demos/assets/avatarImg.svg +18 -0
  334. package/src/demos/assets/index.d.ts +4 -0
  335. package/src/demos/assets/pf-logo.svg +28 -0
  336. package/src/demos/examples/TableAutomaticPagination.tsx +101 -0
  337. package/src/{docs/demos/table-demos/BulkSelect.jsx → demos/examples/TableBulkSelect.tsx} +42 -21
  338. package/src/demos/examples/TableColumnManagement.tsx +484 -0
  339. package/src/demos/examples/TableColumnManagementWithDraggable.tsx +635 -0
  340. package/src/{docs/demos/table-demos/Compact.jsx → demos/examples/TableCompact.tsx} +39 -18
  341. package/src/{docs/demos/table-demos/CompoundExpansion.jsx → demos/examples/TableCompoundExpansion.tsx} +31 -16
  342. package/src/demos/examples/TableEmptyStateDefault.tsx +58 -0
  343. package/src/demos/examples/TableEmptyStateError.tsx +43 -0
  344. package/src/demos/examples/TableEmptyStateLoading.tsx +33 -0
  345. package/src/{docs/demos/table-demos/ExpandCollapseAll.jsx → demos/examples/TableExpandCollapseAll.tsx} +75 -67
  346. package/src/demos/examples/TableFilterable.tsx +387 -0
  347. package/src/{docs/demos/table-demos/SortableResponsive.jsx → demos/examples/TableSortableResponsive.tsx} +42 -43
  348. package/src/{docs/demos/table-demos/StaticBottomPagination.jsx → demos/examples/TableStaticBottomPagination.tsx} +29 -11
  349. package/src/{docs/demos/table-demos/StickyFirstColumn.jsx → demos/examples/TableStickyFirstColumn.tsx} +31 -9
  350. package/src/{docs/demos/table-demos/StickyHeader.jsx → demos/examples/TableStickyHeader.tsx} +3 -3
  351. package/src/demos/index.ts +3 -0
  352. package/src/{docs/demos/table-demos/sampleData.js → demos/sampleData.tsx} +88 -77
  353. package/src/deprecated/components/Table/Table.tsx +2 -3
  354. package/src/deprecated/components/Table/__tests__/Table.test.tsx +4 -9
  355. package/src/deprecated/components/Table/__tests__/__snapshots__/Table.test.tsx.snap +2457 -2274
  356. package/src/deprecated/components/Table/base/header-row.tsx +1 -1
  357. package/src/deprecated/components/Table/examples/LegacyTableCompoundExpandable.tsx +4 -3
  358. package/src/deprecated/components/Table/examples/LegacyTableEmptyState.tsx +6 -8
  359. package/src/deprecated/components/Table/examples/LegacyTableMisc.tsx +4 -3
  360. package/src/deprecated/components/Table/examples/LegacyTableSelectable.tsx +2 -1
  361. package/src/deprecated/components/Table/examples/LegacyTableSortableCustom.tsx +2 -3
  362. package/src/deprecated/components/Table/examples/LegacyTableStripedCustomTr.tsx +2 -6
  363. package/src/deprecated/components/Table/examples/Table.md +49 -40
  364. package/rollup.config.js +0 -7
  365. package/src/docs/demos/Table.md +0 -1622
  366. package/src/docs/demos/table-demos/ColumnManagement.jsx +0 -471
@@ -15,12 +15,15 @@ export const sortableFavorites = (sort: any) => () =>
15
15
  sortBy: sort.sortBy,
16
16
  onSort: sort?.onSort
17
17
  }
18
- }
18
+ },
19
+ tooltip: sort.tooltip,
20
+ tooltipProps: sort.tooltipProps,
21
+ tooltipHasDefaultBehavior: true
19
22
  });
20
23
 
21
24
  export const sortable: ITransform = (
22
25
  label: IFormatterValueType,
23
- { columnIndex, column, property, className, ariaLabel }: IExtra
26
+ { columnIndex, column, property, className, ariaLabel, tooltip, tooltipProps, tooltipHasDefaultBehavior }: IExtra
24
27
  ) => {
25
28
  const {
26
29
  extraParams: { sortBy, onSort }
@@ -56,6 +59,9 @@ export const sortable: ITransform = (
56
59
  sortDirection={isSortedBy ? sortBy.direction : ''}
57
60
  onSort={sortClicked}
58
61
  aria-label={ariaLabel}
62
+ tooltip={tooltip}
63
+ tooltipProps={tooltipProps}
64
+ tooltipHasDefaultBehavior={tooltipHasDefaultBehavior}
59
65
  >
60
66
  {label as React.ReactNode}
61
67
  </SortColumn>
@@ -31,7 +31,7 @@ export const treeRow =
31
31
  {icon}
32
32
  </span>
33
33
  )}
34
- <span className="pf-v5-c-table__text" key="table-text">
34
+ <span className={styles.tableText} key="table-text">
35
35
  {content as React.ReactNode}
36
36
  </span>
37
37
  </div>
@@ -41,7 +41,7 @@ export const treeRow =
41
41
  };
42
42
  return {
43
43
  component: 'th',
44
- className: 'pf-v5-c-table__tree-view-title-cell',
44
+ className: stylesTreeView.tableTreeViewTitleCell,
45
45
  children:
46
46
  level !== undefined ? (
47
47
  <div className={css(stylesTreeView.tableTreeViewMain)}>
@@ -83,7 +83,7 @@ export const treeRow =
83
83
  onToggleRowDetails && onToggleRowDetails(event, rowIndex, content as React.ReactNode, rowData)
84
84
  }
85
85
  >
86
- <span className="pf-v5-c-table__details-toggle-icon">
86
+ <span className={`${styles.table}__details-toggle-icon`}>
87
87
  <EllipsisHIcon aria-hidden />
88
88
  </span>
89
89
  </Button>
@@ -18,7 +18,6 @@ import {
18
18
  textCenter,
19
19
  cellActions
20
20
  } from './';
21
- import { DropdownPosition, DropdownDirection } from '@patternfly/react-core/dist/esm/deprecated/components/Dropdown';
22
21
  import {
23
22
  IAction,
24
23
  IActions,
@@ -29,6 +28,9 @@ import {
29
28
  IRowData,
30
29
  ISeparator
31
30
  } from '../TableTypes';
31
+ import { css } from '@patternfly/react-styles';
32
+ import tableStyles from '@patternfly/react-styles/css/components/Table/table';
33
+ import menuStyles from '@patternfly/react-styles/css/components/Menu/menu';
32
34
 
33
35
  const testCellActions = async ({
34
36
  actions,
@@ -55,8 +57,8 @@ const testCellActions = async ({
55
57
  rowData,
56
58
  column: {
57
59
  extraParams: {
58
- dropdownPosition: DropdownPosition.right,
59
- dropdownDirection: DropdownDirection.down
60
+ dropdownPosition: 'right',
61
+ dropdownDirection: 'down'
60
62
  }
61
63
  }
62
64
  });
@@ -65,7 +67,7 @@ const testCellActions = async ({
65
67
  actions = actionResolver(rowData, extraData);
66
68
  }
67
69
 
68
- expect(returnedData).toMatchObject({ className: 'pf-v5-c-table__action' });
70
+ expect(returnedData).toMatchObject({ className: tableStyles.tableAction });
69
71
 
70
72
  if (!actions || actions.length === 0) {
71
73
  expect(returnedData.children).toBeUndefined();
@@ -73,7 +75,8 @@ const testCellActions = async ({
73
75
  const { container } = render(returnedData.children as React.ReactElement<any>);
74
76
  await user.click(screen.getAllByRole('button')[0]);
75
77
  await waitFor(() =>
76
- expect(container.querySelectorAll('.pf-v5-c-dropdown__menu li button')).toHaveLength(expectDisabled ? 0 : 1)
78
+ // eslint-disable-next-line testing-library/no-container
79
+ expect(container.querySelectorAll(`.${menuStyles.menu} li button`)).toHaveLength(expectDisabled ? 0 : 1)
77
80
  );
78
81
  }
79
82
  };
@@ -86,7 +89,7 @@ describe('Transformer functions', () => {
86
89
  extraParams: { onSelect }
87
90
  };
88
91
  const returnedData = selectable('', { column, rowData: {} } as IExtra);
89
- expect(returnedData).toMatchObject({ className: 'pf-v5-c-table__check' });
92
+ expect(returnedData).toMatchObject({ className: tableStyles.tableCheck });
90
93
 
91
94
  const user = userEvent.setup();
92
95
 
@@ -103,7 +106,7 @@ describe('Transformer functions', () => {
103
106
  extraParams: { onSelect }
104
107
  };
105
108
  const returnedData = selectable('', { column, rowIndex: 0, rowData: { selected: true } } as IExtra);
106
- expect(returnedData).toMatchObject({ className: 'pf-v5-c-table__check' });
109
+ expect(returnedData).toMatchObject({ className: tableStyles.tableCheck });
107
110
  const user = userEvent.setup();
108
111
 
109
112
  render(returnedData.children as React.ReactElement<any>);
@@ -128,7 +131,7 @@ describe('Transformer functions', () => {
128
131
  const onSort = jest.fn();
129
132
  const column = { extraParams: { sortBy: {}, onSort } };
130
133
  const returnedData = sortable('', { column, columnIndex: 0 });
131
- expect(returnedData).toMatchObject({ className: 'pf-v5-c-table__sort' });
134
+ expect(returnedData).toMatchObject({ className: tableStyles.tableSort });
132
135
 
133
136
  const user = userEvent.setup();
134
137
 
@@ -154,7 +157,7 @@ describe('Transformer functions', () => {
154
157
  const onSort = jest.fn();
155
158
  const column = { extraParams: { sortBy: { index: 0, direction: 'desc' }, onSort } };
156
159
  const returnedData = sortable('', { column, columnIndex: 0 } as IExtra);
157
- expect(returnedData).toMatchObject({ className: 'pf-v5-c-table__sort pf-m-selected' });
160
+ expect(returnedData).toMatchObject({ className: css(tableStyles.tableSort, tableStyles.modifiers.selected) });
158
161
 
159
162
  const user = userEvent.setup();
160
163
 
@@ -226,7 +229,7 @@ describe('Transformer functions', () => {
226
229
  extraParams: { onCollapse }
227
230
  };
228
231
  const returnedData = collapsible('', { rowIndex: 0, rowData, column });
229
- expect(returnedData).toMatchObject({ className: 'pf-v5-c-table__toggle' });
232
+ expect(returnedData).toMatchObject({ className: tableStyles.tableToggle });
230
233
 
231
234
  const user = userEvent.setup();
232
235
 
@@ -332,7 +335,7 @@ describe('Transformer functions', () => {
332
335
  extraParams: { onRowEdit }
333
336
  };
334
337
  const returned = editable('test', { rowIndex: 0, column });
335
- expect(returned).toMatchObject({ className: 'pf-v5-c-table__inline-edit-action' });
338
+ expect(returned).toMatchObject({ className: tableStyles.tableInlineEditAction });
336
339
  });
337
340
 
338
341
  describe('visibility classNames', () => {
@@ -0,0 +1,201 @@
1
+ import React, { useState } from 'react';
2
+ import {
3
+ Avatar,
4
+ Brand,
5
+ Button,
6
+ ButtonVariant,
7
+ Divider,
8
+ Dropdown,
9
+ DropdownGroup,
10
+ DropdownItem,
11
+ DropdownList,
12
+ Masthead,
13
+ MastheadMain,
14
+ MastheadToggle,
15
+ MastheadBrand,
16
+ MastheadLogo,
17
+ MastheadContent,
18
+ MenuToggle,
19
+ Toolbar,
20
+ ToolbarContent,
21
+ ToolbarGroup,
22
+ ToolbarItem,
23
+ PageToggleButton
24
+ } from '@patternfly/react-core';
25
+ import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
26
+ import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
27
+ import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';
28
+ import QuestionCircleIcon from '@patternfly/react-icons/dist/esm/icons/question-circle-icon';
29
+ import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
30
+ import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
31
+ import imgAvatar from '@patternfly/react-table/src/demos/assets/avatarImg.svg';
32
+ import pfLogo from '@patternfly/react-table/src/demos/assets/pf-logo.svg';
33
+
34
+ interface DashboardHeaderProps {
35
+ /** Render custom notification badge */
36
+ notificationBadge?: React.ReactNode;
37
+ }
38
+
39
+ export const DashboardHeader: React.FC<DashboardHeaderProps> = ({ notificationBadge }) => {
40
+ const [isDropdownOpen, setIsDropdownOpen] = useState(false);
41
+ const [isKebabDropdownOpen, setIsKebabDropdownOpen] = useState(false);
42
+ const [isFullKebabDropdownOpen, setIsFullKebabDropdownOpen] = useState(false);
43
+
44
+ const kebabDropdownItems = (
45
+ <>
46
+ <DropdownItem>
47
+ <CogIcon /> Settings
48
+ </DropdownItem>
49
+ <DropdownItem>
50
+ <HelpIcon /> Help
51
+ </DropdownItem>
52
+ </>
53
+ );
54
+
55
+ const userDropdownItems = (
56
+ <>
57
+ <DropdownItem key="group 2 profile">My profile</DropdownItem>
58
+ <DropdownItem key="group 2 user">User management</DropdownItem>
59
+ <DropdownItem key="group 2 logout">Logout</DropdownItem>
60
+ </>
61
+ );
62
+
63
+ const onDropdownToggle = () => {
64
+ setIsDropdownOpen(!isDropdownOpen);
65
+ };
66
+
67
+ const onDropdownSelect = () => {
68
+ setIsDropdownOpen(false);
69
+ };
70
+
71
+ const onKebabDropdownToggle = () => {
72
+ setIsKebabDropdownOpen(!isKebabDropdownOpen);
73
+ };
74
+
75
+ const onKebabDropdownSelect = () => {
76
+ setIsKebabDropdownOpen(false);
77
+ };
78
+
79
+ const onFullKebabToggle = () => {
80
+ setIsFullKebabDropdownOpen(!isFullKebabDropdownOpen);
81
+ };
82
+
83
+ const onFullKebabSelect = () => {
84
+ setIsFullKebabDropdownOpen(false);
85
+ };
86
+
87
+ return (
88
+ <Masthead>
89
+ <MastheadMain>
90
+ <MastheadToggle>
91
+ <PageToggleButton variant="plain" aria-label="Global navigation">
92
+ <BarsIcon />
93
+ </PageToggleButton>
94
+ </MastheadToggle>
95
+ <MastheadBrand>
96
+ <MastheadLogo>
97
+ <Brand src={pfLogo} alt="PatternFly" heights={{ default: '36px' }} />
98
+ </MastheadLogo>
99
+ </MastheadBrand>
100
+ </MastheadMain>
101
+ <MastheadContent>
102
+ <Toolbar id="toolbar" isFullHeight isStatic>
103
+ <ToolbarContent>
104
+ <ToolbarGroup
105
+ variant="action-group-plain"
106
+ align={{ default: 'alignEnd' }}
107
+ gap={{ default: 'gapNone', md: 'gapMd' }}
108
+ >
109
+ {notificationBadge ?? (
110
+ <ToolbarItem>
111
+ <Button
112
+ aria-label="Notifications"
113
+ variant={ButtonVariant.plain}
114
+ icon={<BellIcon />}
115
+ onClick={() => {}}
116
+ />
117
+ </ToolbarItem>
118
+ )}
119
+ <ToolbarGroup variant="action-group-plain" visibility={{ default: 'hidden', lg: 'visible' }}>
120
+ <ToolbarItem>
121
+ <Button aria-label="Settings" variant={ButtonVariant.plain} icon={<CogIcon />} />
122
+ </ToolbarItem>
123
+ <ToolbarItem>
124
+ <Button aria-label="Help" variant={ButtonVariant.plain} icon={<QuestionCircleIcon />} />
125
+ </ToolbarItem>
126
+ </ToolbarGroup>
127
+ <ToolbarItem visibility={{ default: 'hidden', md: 'visible', lg: 'hidden' }}>
128
+ <Dropdown
129
+ isOpen={isKebabDropdownOpen}
130
+ onSelect={onKebabDropdownSelect}
131
+ onOpenChange={setIsKebabDropdownOpen}
132
+ popperProps={{ position: 'right' }}
133
+ toggle={(toggleRef: React.RefObject<any>) => (
134
+ <MenuToggle
135
+ ref={toggleRef}
136
+ isExpanded={isKebabDropdownOpen}
137
+ onClick={onKebabDropdownToggle}
138
+ variant="plain"
139
+ aria-label="Settings and help"
140
+ >
141
+ <EllipsisVIcon aria-hidden="true" />
142
+ </MenuToggle>
143
+ )}
144
+ >
145
+ <DropdownList>{kebabDropdownItems}</DropdownList>
146
+ </Dropdown>
147
+ </ToolbarItem>
148
+ <ToolbarItem visibility={{ md: 'hidden' }}>
149
+ <Dropdown
150
+ isOpen={isFullKebabDropdownOpen}
151
+ onSelect={onFullKebabSelect}
152
+ onOpenChange={setIsFullKebabDropdownOpen}
153
+ popperProps={{ position: 'right' }}
154
+ toggle={(toggleRef: React.RefObject<any>) => (
155
+ <MenuToggle
156
+ ref={toggleRef}
157
+ isExpanded={isFullKebabDropdownOpen}
158
+ onClick={onFullKebabToggle}
159
+ variant="plain"
160
+ aria-label="Toolbar menu"
161
+ >
162
+ <EllipsisVIcon aria-hidden="true" />
163
+ </MenuToggle>
164
+ )}
165
+ >
166
+ <DropdownGroup key="group 2" aria-label="User actions">
167
+ <DropdownList>{userDropdownItems}</DropdownList>
168
+ </DropdownGroup>
169
+ <Divider />
170
+ <DropdownList>{kebabDropdownItems}</DropdownList>
171
+ </Dropdown>
172
+ </ToolbarItem>
173
+ </ToolbarGroup>
174
+ <ToolbarItem visibility={{ default: 'hidden', md: 'visible' }}>
175
+ <Dropdown
176
+ isOpen={isDropdownOpen}
177
+ onSelect={onDropdownSelect}
178
+ onOpenChange={setIsDropdownOpen}
179
+ popperProps={{ position: 'right' }}
180
+ toggle={(toggleRef: React.RefObject<any>) => (
181
+ <MenuToggle
182
+ ref={toggleRef}
183
+ isExpanded={isDropdownOpen}
184
+ onClick={onDropdownToggle}
185
+ icon={<Avatar src={imgAvatar} alt="" />}
186
+ isFullHeight
187
+ >
188
+ Ned Username
189
+ </MenuToggle>
190
+ )}
191
+ >
192
+ <DropdownList>{userDropdownItems}</DropdownList>
193
+ </Dropdown>
194
+ </ToolbarItem>
195
+ </ToolbarContent>
196
+ </Toolbar>
197
+ </MastheadContent>
198
+ </Masthead>
199
+ );
200
+ };
201
+ DashboardHeader.displayName = 'DashboardHeader';
@@ -0,0 +1,198 @@
1
+ import React, { useState } from 'react';
2
+ import {
3
+ Breadcrumb,
4
+ BreadcrumbItem,
5
+ Content,
6
+ Nav,
7
+ NavItem,
8
+ NavList,
9
+ Page,
10
+ PageSection,
11
+ PageSidebar,
12
+ PageSidebarBody,
13
+ SkipToContent
14
+ } from '@patternfly/react-core';
15
+ import { DashboardHeader } from './DashboardHeader';
16
+
17
+ interface DashboardWrapperProps {
18
+ /** Programmatically manage if the sidebar nav is shown */
19
+ sidebarNavOpen?: boolean;
20
+ /** Flag to render sample breadcrumb if custom breadcrumb not passed */
21
+ hasDefaultBreadcrumb?: boolean;
22
+ /** Flag to render sample page title if custom title not passed */
23
+ hasPageTemplateTitle?: boolean;
24
+ /** Content rendered inside the main section of the page layout (e.g. <PageSection />) */
25
+ children?: React.ReactNode;
26
+ /** Additional classes added to the page layout */
27
+ className?: string;
28
+ /** Masthead component (e.g. <Masthead />) */
29
+ masthead?: React.ReactNode;
30
+ /** Sidebar component for a side nav (e.g. <PageSidebar />) */
31
+ sidebar?: React.ReactNode;
32
+ /** Notification drawer component for an optional notification drawer (e.g. <NotificationDrawer />) */
33
+ notificationDrawer?: React.ReactNode;
34
+ /** Flag indicating Notification drawer in expanded */
35
+ isNotificationDrawerExpanded?: boolean;
36
+ /** Flag indicating if breadcrumb width should be limited */
37
+ isBreadcrumbWidthLimited?: boolean;
38
+ /** Callback when notification drawer panel is finished expanding. */
39
+ onNotificationDrawerExpand?: (event: KeyboardEvent | React.MouseEvent | React.TransitionEvent) => void;
40
+ /** Skip to content component for the page */
41
+ skipToContent?: React.ReactElement;
42
+ /** Sets the value for role on the <main> element */
43
+ role?: string;
44
+ /** an id to use for the [role="main"] element */
45
+ mainContainerId?: string;
46
+ /** tabIndex to use for the [role="main"] element, null to unset it */
47
+ mainTabIndex?: number | null;
48
+ /**
49
+ * If true, manages the sidebar open/close state and there is no need to pass the isSidebarOpen boolean into
50
+ * the sidebar component or add a callback onSidebarToggle function into the Masthead component
51
+ */
52
+ isManagedSidebar?: boolean;
53
+ /** Flag indicating if tertiary nav width should be limited */
54
+ isTertiaryNavWidthLimited?: boolean;
55
+ /**
56
+ * If true, the managed sidebar is initially open for desktop view
57
+ */
58
+ defaultManagedSidebarIsOpen?: boolean;
59
+ /**
60
+ * Can add callback to be notified when resize occurs, for example to set the sidebar isSidebarOpen prop to false for a width < 768px
61
+ * Returns object { mobileView: boolean, windowSize: number }
62
+ */
63
+ onPageResize?: ((event: MouseEvent | TouchEvent | React.KeyboardEvent, object: any) => void) | null;
64
+ /**
65
+ * The page resize observer uses the breakpoints returned from this function when adding the pf-m-breakpoint-[default|sm|md|lg|xl|2xl] class
66
+ * You can override the default getBreakpoint function to return breakpoints at different sizes than the default
67
+ * You can view the default getBreakpoint function here:
68
+ * https://github.com/patternfly/patternfly-react/blob/main/packages/react-core/src/helpers/util.ts
69
+ */
70
+ getBreakpoint?: (width: number | null) => 'default' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
71
+ /**
72
+ * The page resize observer uses the breakpoints returned from this function when adding the pf-m-breakpoint-[default|sm|md|lg|xl|2xl] class
73
+ * You can override the default getVerticalBreakpoint function to return breakpoints at different sizes than the default
74
+ * You can view the default getVerticalBreakpoint function here:
75
+ * https://github.com/patternfly/patternfly-react/blob/main/packages/react-core/src/helpers/util.ts
76
+ */
77
+ getVerticalBreakpoint?: (height: number | null) => 'default' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
78
+ /** Breadcrumb component for the page */
79
+ breadcrumb?: React.ReactNode;
80
+ /** Tertiary nav component for the page */
81
+ tertiaryNav?: React.ReactNode;
82
+ /** Accessible label, can be used to name main section */
83
+ mainAriaLabel?: string;
84
+ /** Flag indicating if the tertiaryNav should be in a group */
85
+ isTertiaryNavGrouped?: boolean;
86
+ /** Flag indicating if the breadcrumb should be in a group */
87
+ isBreadcrumbGrouped?: boolean;
88
+ /** Additional content of the group */
89
+ additionalGroupedContent?: React.ReactNode;
90
+ /** HTML component used as main component of the page. Defaults to 'main', only pass in 'div' if another 'main' element already exists. */
91
+ mainComponent?: 'main' | 'div';
92
+ /** Additional props of the group */
93
+ groupProps?: any;
94
+ /** Additional props of the breadcrumb */
95
+ breadcrumbProps?: any;
96
+ }
97
+
98
+ export const DashboardBreadcrumb = (
99
+ <Breadcrumb>
100
+ <BreadcrumbItem>Section home</BreadcrumbItem>
101
+ <BreadcrumbItem to="#">Section title</BreadcrumbItem>
102
+ <BreadcrumbItem to="#">Section title</BreadcrumbItem>
103
+ <BreadcrumbItem to="#" isActive>
104
+ Section landing
105
+ </BreadcrumbItem>
106
+ </Breadcrumb>
107
+ );
108
+
109
+ const PageTemplateTitle = (
110
+ <PageSection>
111
+ <Content>
112
+ <h1>Main title</h1>
113
+ <p>This is a full page demo.</p>
114
+ </Content>
115
+ </PageSection>
116
+ );
117
+
118
+ export const DashboardWrapper: React.FC<DashboardWrapperProps> = ({
119
+ children,
120
+ mainContainerId,
121
+ breadcrumb,
122
+ masthead,
123
+ sidebar,
124
+ sidebarNavOpen,
125
+ onPageResize,
126
+ hasDefaultBreadcrumb,
127
+ notificationDrawer,
128
+ isNotificationDrawerExpanded,
129
+ hasPageTemplateTitle,
130
+ ...pageProps
131
+ }: DashboardWrapperProps) => {
132
+ const [activeItem, setActiveItem] = useState(1);
133
+
134
+ const onNavSelect = (_event: React.FormEvent<HTMLInputElement>, result: any) => {
135
+ setActiveItem(result.itemId);
136
+ };
137
+
138
+ let renderedBreadcrumb;
139
+ if (!hasDefaultBreadcrumb) {
140
+ renderedBreadcrumb = breadcrumb ?? DashboardBreadcrumb;
141
+ }
142
+
143
+ const PageNav = (
144
+ <Nav onSelect={onNavSelect} aria-label="Nav">
145
+ <NavList>
146
+ <NavItem itemId={0} isActive={activeItem === 0} to="#system-panel">
147
+ System panel
148
+ </NavItem>
149
+ <NavItem itemId={1} isActive={activeItem === 1} to="#policy">
150
+ Policy
151
+ </NavItem>
152
+ <NavItem itemId={2} isActive={activeItem === 2} to="#auth">
153
+ Authentication
154
+ </NavItem>
155
+ <NavItem itemId={3} isActive={activeItem === 3} to="#network">
156
+ Network services
157
+ </NavItem>
158
+ <NavItem itemId={4} isActive={activeItem === 4} to="#server">
159
+ Server
160
+ </NavItem>
161
+ </NavList>
162
+ </Nav>
163
+ );
164
+
165
+ const _sidebar = (
166
+ <PageSidebar isSidebarOpen={sidebarNavOpen || false}>
167
+ <PageSidebarBody>{PageNav}</PageSidebarBody>
168
+ </PageSidebar>
169
+ );
170
+
171
+ const PageSkipToContent = (
172
+ <SkipToContent href={`#${mainContainerId ?? 'main-content-page-layout-default-nav'}`}>
173
+ Skip to content
174
+ </SkipToContent>
175
+ );
176
+
177
+ return (
178
+ <Page
179
+ masthead={masthead ?? <DashboardHeader />}
180
+ sidebar={sidebar ?? _sidebar}
181
+ isManagedSidebar
182
+ skipToContent={PageSkipToContent}
183
+ breadcrumb={renderedBreadcrumb}
184
+ mainContainerId={mainContainerId ?? 'main-content-page-layout-default-nav'}
185
+ notificationDrawer={notificationDrawer}
186
+ isNotificationDrawerExpanded={isNotificationDrawerExpanded}
187
+ {...(typeof onPageResize === 'function' && {
188
+ onPageResize: (event: MouseEvent | TouchEvent | React.KeyboardEvent<Element>, resizeObject: any) =>
189
+ onPageResize(event, resizeObject)
190
+ })}
191
+ {...pageProps}
192
+ >
193
+ {hasPageTemplateTitle && PageTemplateTitle}
194
+ {children}
195
+ </Page>
196
+ );
197
+ };
198
+ DashboardWrapper.displayName = 'DashboardWrapper';