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

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 (268) hide show
  1. package/CHANGELOG.md +290 -0
  2. package/README.md +2 -2
  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/esm/components/Table/ActionsColumn.d.ts +1 -1
  12. package/dist/esm/components/Table/ActionsColumn.d.ts.map +1 -1
  13. package/dist/esm/components/Table/Caption.js +1 -1
  14. package/dist/esm/components/Table/Caption.js.map +1 -1
  15. package/dist/esm/components/Table/CollapseColumn.js +1 -1
  16. package/dist/esm/components/Table/CollapseColumn.js.map +1 -1
  17. package/dist/esm/components/Table/DraggableRowWrapper.js +2 -2
  18. package/dist/esm/components/Table/DraggableRowWrapper.js.map +1 -1
  19. package/dist/esm/components/Table/EditColumn.js +1 -1
  20. package/dist/esm/components/Table/EditColumn.js.map +1 -1
  21. package/dist/esm/components/Table/EditableSelectInputCell.js +3 -3
  22. package/dist/esm/components/Table/EditableSelectInputCell.js.map +1 -1
  23. package/dist/esm/components/Table/EditableTextCell.js +3 -3
  24. package/dist/esm/components/Table/EditableTextCell.js.map +1 -1
  25. package/dist/esm/components/Table/ExpandableRowContent.js +1 -1
  26. package/dist/esm/components/Table/ExpandableRowContent.js.map +1 -1
  27. package/dist/esm/components/Table/HeaderCellInfoWrapper.js +1 -1
  28. package/dist/esm/components/Table/HeaderCellInfoWrapper.js.map +1 -1
  29. package/dist/esm/components/Table/InnerScrollContainer.js +1 -1
  30. package/dist/esm/components/Table/InnerScrollContainer.js.map +1 -1
  31. package/dist/esm/components/Table/OuterScrollContainer.js +1 -1
  32. package/dist/esm/components/Table/OuterScrollContainer.js.map +1 -1
  33. package/dist/esm/components/Table/RowWrapper.d.ts +1 -1
  34. package/dist/esm/components/Table/SelectColumn.d.ts +5 -0
  35. package/dist/esm/components/Table/SelectColumn.d.ts.map +1 -1
  36. package/dist/esm/components/Table/SelectColumn.js +6 -3
  37. package/dist/esm/components/Table/SelectColumn.js.map +1 -1
  38. package/dist/esm/components/Table/SortColumn.d.ts +4 -0
  39. package/dist/esm/components/Table/SortColumn.d.ts.map +1 -1
  40. package/dist/esm/components/Table/SortColumn.js +3 -3
  41. package/dist/esm/components/Table/SortColumn.js.map +1 -1
  42. package/dist/esm/components/Table/Table.d.ts +1 -1
  43. package/dist/esm/components/Table/Table.d.ts.map +1 -1
  44. package/dist/esm/components/Table/Table.js +5 -5
  45. package/dist/esm/components/Table/Table.js.map +1 -1
  46. package/dist/esm/components/Table/TableText.d.ts +3 -1
  47. package/dist/esm/components/Table/TableText.d.ts.map +1 -1
  48. package/dist/esm/components/Table/TableText.js +13 -11
  49. package/dist/esm/components/Table/TableText.js.map +1 -1
  50. package/dist/esm/components/Table/TableTypes.d.ts +3 -0
  51. package/dist/esm/components/Table/TableTypes.d.ts.map +1 -1
  52. package/dist/esm/components/Table/Tbody.d.ts +1 -1
  53. package/dist/esm/components/Table/Tbody.d.ts.map +1 -1
  54. package/dist/esm/components/Table/Tbody.js +1 -1
  55. package/dist/esm/components/Table/Tbody.js.map +1 -1
  56. package/dist/esm/components/Table/Td.d.ts +1 -1
  57. package/dist/esm/components/Table/Td.d.ts.map +1 -1
  58. package/dist/esm/components/Table/Td.js +9 -5
  59. package/dist/esm/components/Table/Td.js.map +1 -1
  60. package/dist/esm/components/Table/Th.d.ts +4 -1
  61. package/dist/esm/components/Table/Th.d.ts.map +1 -1
  62. package/dist/esm/components/Table/Th.js +20 -10
  63. package/dist/esm/components/Table/Th.js.map +1 -1
  64. package/dist/esm/components/Table/Thead.d.ts +1 -1
  65. package/dist/esm/components/Table/Thead.d.ts.map +1 -1
  66. package/dist/esm/components/Table/Thead.js +1 -1
  67. package/dist/esm/components/Table/Thead.js.map +1 -1
  68. package/dist/esm/components/Table/Tr.d.ts +2 -2
  69. package/dist/esm/components/Table/Tr.d.ts.map +1 -1
  70. package/dist/esm/components/Table/Tr.js +2 -2
  71. package/dist/esm/components/Table/Tr.js.map +1 -1
  72. package/dist/esm/components/Table/TreeRowWrapper.js +2 -2
  73. package/dist/esm/components/Table/TreeRowWrapper.js.map +1 -1
  74. package/dist/esm/components/Table/base/provider.d.ts +8 -8
  75. package/dist/esm/components/Table/base/types.d.ts +7 -7
  76. package/dist/esm/components/Table/utils/decorators/cellActions.js +1 -1
  77. package/dist/esm/components/Table/utils/decorators/cellActions.js.map +1 -1
  78. package/dist/esm/components/Table/utils/decorators/cellWidth.js +1 -1
  79. package/dist/esm/components/Table/utils/decorators/cellWidth.js.map +1 -1
  80. package/dist/esm/components/Table/utils/decorators/classNames.js +1 -1
  81. package/dist/esm/components/Table/utils/decorators/classNames.js.map +1 -1
  82. package/dist/esm/components/Table/utils/decorators/collapsible.js +1 -1
  83. package/dist/esm/components/Table/utils/decorators/collapsible.js.map +1 -1
  84. package/dist/esm/components/Table/utils/decorators/compoundExpand.js +1 -1
  85. package/dist/esm/components/Table/utils/decorators/compoundExpand.js.map +1 -1
  86. package/dist/esm/components/Table/utils/decorators/editable.js +1 -1
  87. package/dist/esm/components/Table/utils/decorators/editable.js.map +1 -1
  88. package/dist/esm/components/Table/utils/decorators/favoritable.js +1 -1
  89. package/dist/esm/components/Table/utils/decorators/favoritable.js.map +1 -1
  90. package/dist/esm/components/Table/utils/decorators/info.js +1 -1
  91. package/dist/esm/components/Table/utils/decorators/info.js.map +1 -1
  92. package/dist/esm/components/Table/utils/decorators/selectable.d.ts.map +1 -1
  93. package/dist/esm/components/Table/utils/decorators/selectable.js +4 -4
  94. package/dist/esm/components/Table/utils/decorators/selectable.js.map +1 -1
  95. package/dist/esm/components/Table/utils/decorators/sortable.d.ts.map +1 -1
  96. package/dist/esm/components/Table/utils/decorators/sortable.js +7 -4
  97. package/dist/esm/components/Table/utils/decorators/sortable.js.map +1 -1
  98. package/dist/esm/components/Table/utils/decorators/treeRow.d.ts +3 -3
  99. package/dist/esm/components/Table/utils/decorators/treeRow.d.ts.map +1 -1
  100. package/dist/esm/components/Table/utils/decorators/treeRow.js +5 -5
  101. package/dist/esm/components/Table/utils/decorators/treeRow.js.map +1 -1
  102. package/dist/esm/components/Table/utils/decorators/wrappable.js +1 -1
  103. package/dist/esm/components/Table/utils/decorators/wrappable.js.map +1 -1
  104. package/dist/esm/demos/index.d.ts +2 -0
  105. package/dist/esm/demos/index.d.ts.map +1 -0
  106. package/dist/esm/demos/index.js +2 -0
  107. package/dist/esm/demos/index.js.map +1 -0
  108. package/dist/esm/demos/sampleData.d.ts +13 -0
  109. package/dist/esm/demos/sampleData.d.ts.map +1 -0
  110. package/dist/esm/demos/sampleData.js +764 -0
  111. package/dist/esm/demos/sampleData.js.map +1 -0
  112. package/dist/esm/deprecated/components/Table/Body.d.ts +1 -1
  113. package/dist/esm/deprecated/components/Table/Body.d.ts.map +1 -1
  114. package/dist/esm/deprecated/components/Table/Table.d.ts +1 -1
  115. package/dist/esm/deprecated/components/Table/Table.js +1 -1
  116. package/dist/esm/deprecated/components/Table/Table.js.map +1 -1
  117. package/dist/esm/deprecated/components/Table/base/body.d.ts +8 -2
  118. package/dist/esm/deprecated/components/Table/base/body.d.ts.map +1 -1
  119. package/dist/esm/deprecated/components/Table/base/header.d.ts +1 -1
  120. package/dist/esm/deprecated/components/Table/base/header.d.ts.map +1 -1
  121. package/dist/esm/index.d.ts +1 -0
  122. package/dist/esm/index.d.ts.map +1 -1
  123. package/dist/esm/index.js +1 -0
  124. package/dist/esm/index.js.map +1 -1
  125. package/dist/js/components/Table/ActionsColumn.d.ts +1 -1
  126. package/dist/js/components/Table/ActionsColumn.d.ts.map +1 -1
  127. package/dist/js/components/Table/ActionsColumn.js +6 -6
  128. package/dist/js/components/Table/ActionsColumn.js.map +1 -1
  129. package/dist/js/components/Table/CollapseColumn.js +2 -2
  130. package/dist/js/components/Table/CollapseColumn.js.map +1 -1
  131. package/dist/js/components/Table/DraggableCell.js +2 -2
  132. package/dist/js/components/Table/DraggableCell.js.map +1 -1
  133. package/dist/js/components/Table/EditColumn.js +4 -4
  134. package/dist/js/components/Table/EditColumn.js.map +1 -1
  135. package/dist/js/components/Table/EditableSelectInputCell.js +2 -2
  136. package/dist/js/components/Table/EditableSelectInputCell.js.map +1 -1
  137. package/dist/js/components/Table/EditableTextCell.js +2 -2
  138. package/dist/js/components/Table/EditableTextCell.js.map +1 -1
  139. package/dist/js/components/Table/FavoritesCell.js +2 -2
  140. package/dist/js/components/Table/FavoritesCell.js.map +1 -1
  141. package/dist/js/components/Table/HeaderCellInfoWrapper.js +4 -4
  142. package/dist/js/components/Table/HeaderCellInfoWrapper.js.map +1 -1
  143. package/dist/js/components/Table/RowWrapper.d.ts +1 -1
  144. package/dist/js/components/Table/RowWrapper.js +2 -1
  145. package/dist/js/components/Table/RowWrapper.js.map +1 -1
  146. package/dist/js/components/Table/SelectColumn.d.ts +5 -0
  147. package/dist/js/components/Table/SelectColumn.d.ts.map +1 -1
  148. package/dist/js/components/Table/SelectColumn.js +6 -3
  149. package/dist/js/components/Table/SelectColumn.js.map +1 -1
  150. package/dist/js/components/Table/SortColumn.d.ts +4 -0
  151. package/dist/js/components/Table/SortColumn.d.ts.map +1 -1
  152. package/dist/js/components/Table/SortColumn.js +6 -5
  153. package/dist/js/components/Table/SortColumn.js.map +1 -1
  154. package/dist/js/components/Table/Table.d.ts +1 -1
  155. package/dist/js/components/Table/Table.d.ts.map +1 -1
  156. package/dist/js/components/Table/Table.js +2 -2
  157. package/dist/js/components/Table/Table.js.map +1 -1
  158. package/dist/js/components/Table/TableText.d.ts +3 -1
  159. package/dist/js/components/Table/TableText.d.ts.map +1 -1
  160. package/dist/js/components/Table/TableText.js +13 -11
  161. package/dist/js/components/Table/TableText.js.map +1 -1
  162. package/dist/js/components/Table/TableTypes.d.ts +3 -0
  163. package/dist/js/components/Table/TableTypes.d.ts.map +1 -1
  164. package/dist/js/components/Table/TableTypes.js +4 -0
  165. package/dist/js/components/Table/TableTypes.js.map +1 -1
  166. package/dist/js/components/Table/Tbody.d.ts +1 -1
  167. package/dist/js/components/Table/Tbody.d.ts.map +1 -1
  168. package/dist/js/components/Table/Td.d.ts +1 -1
  169. package/dist/js/components/Table/Td.d.ts.map +1 -1
  170. package/dist/js/components/Table/Td.js +8 -4
  171. package/dist/js/components/Table/Td.js.map +1 -1
  172. package/dist/js/components/Table/Th.d.ts +4 -1
  173. package/dist/js/components/Table/Th.d.ts.map +1 -1
  174. package/dist/js/components/Table/Th.js +18 -8
  175. package/dist/js/components/Table/Th.js.map +1 -1
  176. package/dist/js/components/Table/Thead.d.ts +1 -1
  177. package/dist/js/components/Table/Thead.d.ts.map +1 -1
  178. package/dist/js/components/Table/Tr.d.ts +2 -2
  179. package/dist/js/components/Table/Tr.d.ts.map +1 -1
  180. package/dist/js/components/Table/Tr.js +1 -1
  181. package/dist/js/components/Table/Tr.js.map +1 -1
  182. package/dist/js/components/Table/base/provider.d.ts +8 -8
  183. package/dist/js/components/Table/base/types.d.ts +7 -7
  184. package/dist/js/components/Table/base/types.js +4 -0
  185. package/dist/js/components/Table/base/types.js.map +1 -1
  186. package/dist/js/components/Table/utils/decorators/selectable.d.ts.map +1 -1
  187. package/dist/js/components/Table/utils/decorators/selectable.js +2 -2
  188. package/dist/js/components/Table/utils/decorators/selectable.js.map +1 -1
  189. package/dist/js/components/Table/utils/decorators/sortable.d.ts.map +1 -1
  190. package/dist/js/components/Table/utils/decorators/sortable.js +7 -4
  191. package/dist/js/components/Table/utils/decorators/sortable.js.map +1 -1
  192. package/dist/js/components/Table/utils/decorators/treeRow.d.ts +3 -3
  193. package/dist/js/components/Table/utils/decorators/treeRow.d.ts.map +1 -1
  194. package/dist/js/components/Table/utils/decorators/treeRow.js +7 -7
  195. package/dist/js/components/Table/utils/decorators/treeRow.js.map +1 -1
  196. package/dist/js/demos/index.d.ts +2 -0
  197. package/dist/js/demos/index.d.ts.map +1 -0
  198. package/dist/js/demos/index.js +5 -0
  199. package/dist/js/demos/index.js.map +1 -0
  200. package/dist/js/demos/sampleData.d.ts +13 -0
  201. package/dist/js/demos/sampleData.d.ts.map +1 -0
  202. package/dist/js/demos/sampleData.js +767 -0
  203. package/dist/js/demos/sampleData.js.map +1 -0
  204. package/dist/js/deprecated/components/Table/Body.d.ts +1 -1
  205. package/dist/js/deprecated/components/Table/Body.d.ts.map +1 -1
  206. package/dist/js/deprecated/components/Table/BodyCell.js +4 -3
  207. package/dist/js/deprecated/components/Table/BodyCell.js.map +1 -1
  208. package/dist/js/deprecated/components/Table/Table.d.ts +1 -1
  209. package/dist/js/deprecated/components/Table/Table.js +1 -1
  210. package/dist/js/deprecated/components/Table/Table.js.map +1 -1
  211. package/dist/js/deprecated/components/Table/base/body.d.ts +8 -2
  212. package/dist/js/deprecated/components/Table/base/body.d.ts.map +1 -1
  213. package/dist/js/deprecated/components/Table/base/header.d.ts +1 -1
  214. package/dist/js/deprecated/components/Table/base/header.d.ts.map +1 -1
  215. package/dist/js/index.d.ts +1 -0
  216. package/dist/js/index.d.ts.map +1 -1
  217. package/dist/js/index.js +1 -0
  218. package/dist/js/index.js.map +1 -1
  219. package/dist/umd/react-table.min.js +9 -9
  220. package/package.json +6 -6
  221. package/src/components/Table/EditableSelectInputCell.tsx +1 -1
  222. package/src/components/Table/EditableTextCell.tsx +1 -1
  223. package/src/components/Table/SelectColumn.tsx +27 -8
  224. package/src/components/Table/SortColumn.tsx +15 -1
  225. package/src/components/Table/Table.tsx +2 -2
  226. package/src/components/Table/TableText.tsx +19 -9
  227. package/src/components/Table/TableTypes.tsx +3 -0
  228. package/src/components/Table/Td.tsx +10 -5
  229. package/src/components/Table/Th.tsx +22 -8
  230. package/src/components/Table/Tr.tsx +1 -1
  231. package/src/components/Table/examples/Table.md +3 -0
  232. package/src/components/Table/examples/TableCompoundExpandable.tsx +2 -1
  233. package/src/components/Table/examples/TableMisc.tsx +3 -1
  234. package/src/components/Table/examples/TableNestedHeaders.tsx +4 -3
  235. package/src/components/Table/examples/TableNestedStickyHeader.tsx +4 -3
  236. package/src/components/Table/examples/TableStickyColumnsAndHeader.tsx +5 -4
  237. package/src/components/Table/utils/decorators/selectable.tsx +2 -1
  238. package/src/components/Table/utils/decorators/sortable.tsx +8 -2
  239. package/src/components/Table/utils/decorators/treeRow.tsx +3 -3
  240. package/src/components/Table/utils/transformers.test.tsx +14 -8
  241. package/src/demos/Table.md +159 -0
  242. package/src/demos/examples/TableAutomaticPagination.tsx +101 -0
  243. package/src/{docs/demos/table-demos/BulkSelect.jsx → demos/examples/TableBulkSelect.tsx} +41 -20
  244. package/src/demos/examples/TableColumnManagement.tsx +486 -0
  245. package/src/demos/examples/TableColumnManagementWithDraggable.tsx +641 -0
  246. package/src/{docs/demos/table-demos/Compact.jsx → demos/examples/TableCompact.tsx} +32 -16
  247. package/src/{docs/demos/table-demos/CompoundExpansion.jsx → demos/examples/TableCompoundExpansion.tsx} +27 -13
  248. package/src/demos/examples/TableEmptyStateDefault.tsx +60 -0
  249. package/src/demos/examples/TableEmptyStateError.tsx +53 -0
  250. package/src/demos/examples/TableEmptyStateLoading.tsx +43 -0
  251. package/src/{docs/demos/table-demos/ExpandCollapseAll.jsx → demos/examples/TableExpandCollapseAll.tsx} +17 -10
  252. package/src/demos/examples/TableFilterable.tsx +394 -0
  253. package/src/{docs/demos/table-demos/SortableResponsive.jsx → demos/examples/TableSortableResponsive.tsx} +30 -28
  254. package/src/{docs/demos/table-demos/StaticBottomPagination.jsx → demos/examples/TableStaticBottomPagination.tsx} +22 -9
  255. package/src/{docs/demos/table-demos/StickyFirstColumn.jsx → demos/examples/TableStickyFirstColumn.tsx} +31 -9
  256. package/src/{docs/demos/table-demos/StickyHeader.jsx → demos/examples/TableStickyHeader.tsx} +3 -3
  257. package/src/demos/index.ts +1 -0
  258. package/src/{docs/demos/table-demos/sampleData.js → demos/sampleData.tsx} +88 -77
  259. package/src/deprecated/components/Table/__tests__/Table.test.tsx +4 -9
  260. package/src/deprecated/components/Table/__tests__/__snapshots__/Table.test.tsx.snap +8 -8
  261. package/src/deprecated/components/Table/examples/LegacyTableCompoundExpandable.tsx +4 -3
  262. package/src/deprecated/components/Table/examples/LegacyTableMisc.tsx +4 -3
  263. package/src/deprecated/components/Table/examples/LegacyTableSelectable.tsx +2 -1
  264. package/src/deprecated/components/Table/examples/LegacyTableStripedCustomTr.tsx +2 -6
  265. package/src/deprecated/components/Table/examples/Table.md +2 -0
  266. package/src/index.ts +1 -0
  267. package/src/docs/demos/Table.md +0 -1622
  268. package/src/docs/demos/table-demos/ColumnManagement.jsx +0 -471
@@ -1,9 +1,7 @@
1
1
  import React from 'react';
2
-
3
2
  import {
4
3
  Button,
5
4
  Card,
6
- Label,
7
5
  MenuToggle,
8
6
  MenuToggleElement,
9
7
  Pagination,
@@ -13,29 +11,45 @@ import {
13
11
  Toolbar,
14
12
  ToolbarContent,
15
13
  ToolbarGroup,
16
- ToolbarItem
14
+ ToolbarItem,
15
+ Label,
16
+ PaginationVariant
17
17
  } from '@patternfly/react-core';
18
18
  import { Table, TableText, Thead, Tr, Th, Tbody, Td } from '@patternfly/react-table';
19
19
  import FilterIcon from '@patternfly/react-icons/dist/esm/icons/filter-icon';
20
- import DashboardWrapper from '@patternfly/react-core/src/demos/examples/DashboardWrapper';
21
- import { rows, columns } from '@patternfly/react-table/src/docs/demos/table-demos/sampleData';
20
+ import { rows, columns } from '@patternfly/react-table/dist/esm/demos/sampleData';
21
+ import { DashboardWrapper } from '@patternfly/react-core/dist/esm/demos/DashboardWrapper';
22
22
 
23
- export const CompactTable = () => {
24
- const [isSelectOpen, setIsSelectOpen] = React.useState(false);
25
- const [page, setPage] = React.useState(1);
26
- const [perPage, setPerPage] = React.useState(10);
23
+ export const TableCompact: React.FunctionComponent = () => {
24
+ const [isSelectOpen, setIsSelectOpen] = React.useState<boolean>(false);
25
+ const [page, setPage] = React.useState<number>(1);
26
+ const [perPage, setPerPage] = React.useState<number>(10);
27
27
  const [paginatedRows, setPaginatedRows] = React.useState(rows.slice(0, 10));
28
- const handleSetPage = (_evt, newPage, perPage, startIdx, endIdx) => {
28
+
29
+ const handleSetPage = (
30
+ _evt: React.MouseEvent | React.KeyboardEvent | MouseEvent,
31
+ newPage: number,
32
+ _perPage: number,
33
+ startIdx: number,
34
+ endIdx: number
35
+ ) => {
29
36
  setPaginatedRows(rows.slice(startIdx, endIdx));
30
37
  setPage(newPage);
31
38
  };
32
- handlePerPageSelect = (_evt, newPerPage, newPage, startIdx, endIdx) => {
39
+
40
+ const handlePerPageSelect = (
41
+ _evt: React.MouseEvent | React.KeyboardEvent | MouseEvent,
42
+ newPerPage: number,
43
+ newPage: number,
44
+ startIdx: number,
45
+ endIdx: number
46
+ ) => {
33
47
  setPaginatedRows(rows.slice(startIdx, endIdx));
34
48
  setPage(newPage);
35
49
  setPerPage(newPerPage);
36
50
  };
37
51
 
38
- const renderPagination = (variant, isCompact) => (
52
+ const renderPagination = (variant: string, isCompact: boolean) => (
39
53
  <Pagination
40
54
  isCompact={isCompact}
41
55
  itemCount={rows.length}
@@ -43,7 +57,7 @@ export const CompactTable = () => {
43
57
  perPage={perPage}
44
58
  onSetPage={handleSetPage}
45
59
  onPerPageSelect={handlePerPageSelect}
46
- variant={variant}
60
+ variant={variant as PaginationVariant}
47
61
  titles={{
48
62
  paginationAriaLabel: `${variant} pagination`
49
63
  }}
@@ -63,7 +77,7 @@ export const CompactTable = () => {
63
77
  </MenuToggle>
64
78
  )}
65
79
  isOpen={isSelectOpen}
66
- onOpenChange={(isOpen) => setIsSelectOpen(isOpen)}
80
+ onOpenChange={(isOpen: boolean) => setIsSelectOpen(isOpen)}
67
81
  onSelect={() => setIsSelectOpen(!isSelectOpen)}
68
82
  >
69
83
  {[
@@ -92,7 +106,7 @@ export const CompactTable = () => {
92
106
  </Toolbar>
93
107
  );
94
108
 
95
- const renderLabel = (labelText) => {
109
+ const renderLabel = (labelText: string) => {
96
110
  switch (labelText) {
97
111
  case 'Running':
98
112
  return <Label color="green">{labelText}</Label>;
@@ -102,8 +116,11 @@ export const CompactTable = () => {
102
116
  return <Label color="blue">{labelText}</Label>;
103
117
  case 'Down':
104
118
  return <Label color="red">{labelText}</Label>;
119
+ default:
120
+ return <></>;
105
121
  }
106
122
  };
123
+
107
124
  return (
108
125
  <React.Fragment>
109
126
  <DashboardWrapper hasPageTemplateTitle>
@@ -146,7 +163,6 @@ export const CompactTable = () => {
146
163
  ))}
147
164
  </Tbody>
148
165
  </Table>
149
- {renderPagination('bottom', false)}
150
166
  </Card>
151
167
  </PageSection>
152
168
  </DashboardWrapper>
@@ -14,15 +14,17 @@ import {
14
14
  Pagination,
15
15
  PageSection,
16
16
  Select,
17
- SelectOption
17
+ SelectOption,
18
+ PaginationVariant
18
19
  } from '@patternfly/react-core';
19
20
  import CodeBranchIcon from '@patternfly/react-icons/dist/esm/icons/code-branch-icon';
20
21
  import CodeIcon from '@patternfly/react-icons/dist/esm/icons/code-icon';
21
22
  import CubeIcon from '@patternfly/react-icons/dist/esm/icons/cube-icon';
22
- import DashboardWrapper from '@patternfly/react-core/src/demos/examples/DashboardWrapper';
23
+ import { DashboardWrapper } from '@patternfly/react-core/dist/esm/demos/DashboardWrapper';
23
24
  import FilterIcon from '@patternfly/react-icons/dist/esm/icons/filter-icon';
25
+ import spacing from '@patternfly/react-styles/css/utilities/Spacing/spacing';
24
26
 
25
- export const CompoundExpandable = () => {
27
+ export const TableCompoundExpansion: React.FunctionComponent = () => {
26
28
  // In real usage, this data would come from some external source like an API via props.
27
29
  const [isSelectOpen, setIsSelectOpen] = React.useState(false);
28
30
 
@@ -54,7 +56,7 @@ export const CompoundExpandable = () => {
54
56
  </Thead>
55
57
  <Tbody>
56
58
  {items.map((item) => (
57
- <Tr key={item.name}>
59
+ <Tr key={item.description}>
58
60
  <Td dataLabel={columnNames.description}>{item.description}</Td>
59
61
  <Td dataLabel={columnNames.date}>{item.date}</Td>
60
62
  <Td dataLabel={columnNames.status}>{item.status}</Td>
@@ -68,7 +70,7 @@ export const CompoundExpandable = () => {
68
70
  );
69
71
  };
70
72
 
71
- const renderPagination = (variant, isCompact) => (
73
+ const renderPagination = (variant: 'top' | 'bottom' | PaginationVariant, isCompact: boolean) => (
72
74
  <Pagination
73
75
  isCompact={isCompact}
74
76
  itemCount={36}
@@ -94,7 +96,7 @@ export const CompoundExpandable = () => {
94
96
  </MenuToggle>
95
97
  )}
96
98
  isOpen={isSelectOpen}
97
- onOpenChange={(isOpen) => setIsSelectOpen(isOpen)}
99
+ onOpenChange={(isOpen: boolean) => setIsSelectOpen(isOpen)}
98
100
  onSelect={() => setIsSelectOpen(!isSelectOpen)}
99
101
  >
100
102
  {[
@@ -136,7 +138,19 @@ export const CompoundExpandable = () => {
136
138
  }
137
139
  ];
138
140
 
139
- const repositories = [
141
+ interface Repo {
142
+ name: string;
143
+ branches: number;
144
+ prs: number;
145
+ workspaces: number;
146
+ lastCommit: string;
147
+ }
148
+
149
+ interface IDictionary<T> {
150
+ [Key: string]: T;
151
+ }
152
+
153
+ const repositories: Repo[] = [
140
154
  {
141
155
  name: 'siemur/test-space',
142
156
  branches: 10,
@@ -147,7 +161,7 @@ export const CompoundExpandable = () => {
147
161
  { name: 'siemur/test-space-2', branches: 3, prs: 4, workspaces: 4, lastCommit: '20 minutes' }
148
162
  ];
149
163
 
150
- const columnNames = {
164
+ const columnNames: IDictionary<string> = {
151
165
  name: 'Repositories',
152
166
  branches: 'Branches',
153
167
  prs: 'Pull requests',
@@ -158,11 +172,11 @@ export const CompoundExpandable = () => {
158
172
  // In this example, expanded cells are tracked by the repo and property names from each row. This could be any pair of unique identifiers.
159
173
  // This is to prevent state from being based on row and column order index in case we later add sorting and rearranging columns.
160
174
  // Note that this behavior is very similar to selection state.
161
- const [expandedCells, setExpandedCells] = React.useState({
175
+ const [expandedCells, setExpandedCells] = React.useState<IDictionary<string>>({
162
176
  'siemur/test-space': 'branches' // Default to the first cell of the first row being expanded
163
177
  });
164
- const setCellExpanded = (repo, columnKey, isExpanding = true) => {
165
- const newExpandedCells = { ...expandedCells };
178
+ const setCellExpanded = (repo: Repo, columnKey: string, isExpanding = true) => {
179
+ const newExpandedCells: IDictionary<string> = { ...expandedCells };
166
180
  if (isExpanding) {
167
181
  newExpandedCells[repo.name] = columnKey;
168
182
  } else {
@@ -170,7 +184,7 @@ export const CompoundExpandable = () => {
170
184
  }
171
185
  setExpandedCells(newExpandedCells);
172
186
  };
173
- const compoundExpandParams = (repo, columnKey, rowIndex, columnIndex) => ({
187
+ const compoundExpandParams = (repo: Repo, columnKey: string, rowIndex: number, columnIndex: number) => ({
174
188
  isExpanded: expandedCells[repo.name] === columnKey,
175
189
  onToggle: () => setCellExpanded(repo, columnKey, expandedCells[repo.name] !== columnKey),
176
190
  expandId: 'compound-expandable-demo',
@@ -248,7 +262,7 @@ export const CompoundExpandable = () => {
248
262
  <NestedItemsTable />
249
263
  ) : (
250
264
  <ExpandableRowContent>
251
- <div className="pf-v5-u-m-md">
265
+ <div className={spacing.mMd}>
252
266
  Expanded content for {repo.name}: {expandedCellKey} goes here!
253
267
  </div>
254
268
  </ExpandableRowContent>
@@ -0,0 +1,60 @@
1
+ import React from 'react';
2
+ import { Table, Thead, Tr, Th, Tbody, Td } from '@patternfly/react-table';
3
+ import {
4
+ Bullseye,
5
+ Button,
6
+ Card,
7
+ EmptyState,
8
+ EmptyStateVariant,
9
+ EmptyStateIcon,
10
+ EmptyStateBody,
11
+ EmptyStateHeader,
12
+ EmptyStateFooter,
13
+ EmptyStateActions,
14
+ PageSection
15
+ } from '@patternfly/react-core';
16
+ import SearchIcon from '@patternfly/react-icons/dist/esm/icons/search-icon';
17
+ import { DashboardWrapper } from '@patternfly/react-core/dist/esm/demos/DashboardWrapper';
18
+
19
+ export const TableEmptyStateDefault: React.FunctionComponent = () => (
20
+ <DashboardWrapper hasPageTemplateTitle>
21
+ <PageSection padding={{ default: 'noPadding', xl: 'padding' }}>
22
+ <Card component="div">
23
+ <Table aria-label="Empty state table">
24
+ <Thead>
25
+ <Tr>
26
+ <Th>Repositories</Th>
27
+ <Th>Branches</Th>
28
+ <Th>Pull requests</Th>
29
+ <Th>Workspaces</Th>
30
+ <Th>Last commit</Th>
31
+ </Tr>
32
+ </Thead>
33
+ <Tbody>
34
+ <Tr>
35
+ <Td colSpan={8}>
36
+ <Bullseye>
37
+ <EmptyState variant={EmptyStateVariant.sm}>
38
+ <EmptyStateHeader
39
+ icon={<EmptyStateIcon icon={SearchIcon} />}
40
+ titleText="No results found"
41
+ headingLevel="h2"
42
+ />
43
+ <EmptyStateBody>
44
+ No results match this filter criteria. Clear all filters and try again.
45
+ </EmptyStateBody>
46
+ <EmptyStateFooter>
47
+ <EmptyStateActions>
48
+ <Button variant="link">Clear all filters</Button>
49
+ </EmptyStateActions>
50
+ </EmptyStateFooter>
51
+ </EmptyState>
52
+ </Bullseye>
53
+ </Td>
54
+ </Tr>
55
+ </Tbody>
56
+ </Table>
57
+ </Card>
58
+ </PageSection>
59
+ </DashboardWrapper>
60
+ );
@@ -0,0 +1,53 @@
1
+ import React from 'react';
2
+ import { Table, Thead, Tr, Th, Tbody, Td } from '@patternfly/react-table';
3
+ import {
4
+ Bullseye,
5
+ Card,
6
+ EmptyState,
7
+ EmptyStateVariant,
8
+ EmptyStateIcon,
9
+ EmptyStateBody,
10
+ EmptyStateHeader,
11
+ PageSection
12
+ } from '@patternfly/react-core';
13
+ import ExclamationCircleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-circle-icon';
14
+ import globalDangerColor200 from '@patternfly/react-tokens/dist/esm/global_danger_color_200';
15
+ import { DashboardWrapper } from '@patternfly/react-core/dist/esm/demos/DashboardWrapper';
16
+
17
+ export const TableEmptyStateError: React.FunctionComponent = () => (
18
+ <DashboardWrapper hasPageTemplateTitle>
19
+ <PageSection padding={{ default: 'noPadding', xl: 'padding' }}>
20
+ <Card component="div">
21
+ <Table aria-label="Loading table demo">
22
+ <Thead>
23
+ <Tr>
24
+ <Th>Repositories</Th>
25
+ <Th>Branches</Th>
26
+ <Th>Pull requests</Th>
27
+ <Th>Workspaces</Th>
28
+ <Th>Last commit</Th>
29
+ </Tr>
30
+ </Thead>
31
+ <Tbody>
32
+ <Tr>
33
+ <Td colSpan={8}>
34
+ <Bullseye>
35
+ <EmptyState variant={EmptyStateVariant.sm}>
36
+ <EmptyStateHeader
37
+ titleText="Unable to connect"
38
+ icon={<EmptyStateIcon icon={ExclamationCircleIcon} color={globalDangerColor200.value} />}
39
+ headingLevel="h2"
40
+ />
41
+ <EmptyStateBody>
42
+ There was an error retrieving data. Check your connection and reload the page.
43
+ </EmptyStateBody>
44
+ </EmptyState>
45
+ </Bullseye>
46
+ </Td>
47
+ </Tr>
48
+ </Tbody>
49
+ </Table>
50
+ </Card>
51
+ </PageSection>
52
+ </DashboardWrapper>
53
+ );
@@ -0,0 +1,43 @@
1
+ import React from 'react';
2
+ import { Table, Thead, Tr, Th, Tbody, Td } from '@patternfly/react-table';
3
+ import {
4
+ Bullseye,
5
+ Card,
6
+ EmptyState,
7
+ EmptyStateIcon,
8
+ EmptyStateHeader,
9
+ PageSection,
10
+ Spinner
11
+ } from '@patternfly/react-core';
12
+ import { DashboardWrapper } from '@patternfly/react-core/dist/esm/demos/DashboardWrapper';
13
+
14
+ export const TableEmptyStateLoading: React.FunctionComponent = () => (
15
+ <DashboardWrapper hasPageTemplateTitle>
16
+ <PageSection padding={{ default: 'noPadding', xl: 'padding' }}>
17
+ <Card component="div">
18
+ <Table aria-label="Loading table demo">
19
+ <Thead>
20
+ <Tr>
21
+ <Th>Repositories</Th>
22
+ <Th>Branches</Th>
23
+ <Th>Pull requests</Th>
24
+ <Th>Workspaces</Th>
25
+ <Th>Last commit</Th>
26
+ </Tr>
27
+ </Thead>
28
+ <Tbody>
29
+ <Tr>
30
+ <Td colSpan={8}>
31
+ <Bullseye>
32
+ <EmptyState>
33
+ <EmptyStateHeader titleText="Loading" headingLevel="h2" icon={<EmptyStateIcon icon={Spinner} />} />
34
+ </EmptyState>
35
+ </Bullseye>
36
+ </Td>
37
+ </Tr>
38
+ </Tbody>
39
+ </Table>
40
+ </Card>
41
+ </PageSection>
42
+ </DashboardWrapper>
43
+ );
@@ -1,11 +1,20 @@
1
- import React from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  import { Card, Label, PageSection, TextVariants, Text, TextContent } from '@patternfly/react-core';
3
3
  import { Table, Thead, Tbody, Tr, Th, Td, ExpandableRowContent } from '@patternfly/react-table';
4
- import DashboardWrapper from '@patternfly/react-core/src/demos/examples/DashboardWrapper';
4
+ import { DashboardWrapper } from '@patternfly/react-core/dist/esm/demos/DashboardWrapper';
5
5
 
6
6
  const expandableColumns = ['Servers', 'Threads', 'Applications', 'Workspaces', 'Status'];
7
7
 
8
- const serverData = [
8
+ interface Server {
9
+ name: string;
10
+ threads: number;
11
+ applications: number;
12
+ workspaces: number;
13
+ status: { title: ReactNode };
14
+ details: ReactNode;
15
+ }
16
+
17
+ const serverData: Server[] = [
9
18
  {
10
19
  name: 'US-Node 1',
11
20
  threads: 18,
@@ -110,7 +119,7 @@ const serverData = [
110
119
 
111
120
  const initialExpandedServerNames = ['US-Node 2']; // Default to expanded
112
121
 
113
- const ExpandCollapseAllTableDemo = () => {
122
+ export const TableExpandCollapseAll: React.FunctionComponent = () => {
114
123
  const [areAllExpanded, setAreAllExpanded] = React.useState(false);
115
124
  const [collapseAllAriaLabel, setCollapseAllAriaLabel] = React.useState('Expand all');
116
125
  const [expandedServerNames, setExpandedServerNames] = React.useState(initialExpandedServerNames);
@@ -121,20 +130,18 @@ const ExpandCollapseAllTableDemo = () => {
121
130
  setCollapseAllAriaLabel(allExpanded ? 'Collapse all' : 'Expand all');
122
131
  }, [expandedServerNames]);
123
132
 
124
- const setServerExpanded = (server, isExpanding) => {
133
+ const setServerExpanded = (server: Server, isExpanding: boolean) => {
125
134
  const otherExpandedServerNames = expandedServerNames.filter((r) => r !== server.name);
126
135
  setExpandedServerNames(isExpanding ? [...otherExpandedServerNames, server.name] : otherExpandedServerNames);
127
136
  };
128
137
 
129
- const isServerExpanded = (server) => {
130
- return expandedServerNames.includes(server.name);
131
- };
138
+ const isServerExpanded = (server: Server) => expandedServerNames.includes(server.name);
132
139
 
133
140
  // We want to be able to reference the original data object based on row index. But because an expanded
134
141
  // row takes up two row indexes, servers[rowIndex] will not be accurate like it would in a normal table.
135
142
  // One solution to this is to create an array of data objects indexed by the displayed row index.
136
143
 
137
- const onCollapseAll = (_event, _rowIndex, isOpen) => {
144
+ const onCollapseAll = (_event: any, _rowIndex: number, isOpen: boolean) => {
138
145
  setExpandedServerNames(isOpen ? [...serverData.map((server) => server.name)] : []);
139
146
  };
140
147
 
@@ -154,7 +161,7 @@ const ExpandCollapseAllTableDemo = () => {
154
161
  <Th
155
162
  expand={{
156
163
  areAllExpanded: !areAllExpanded,
157
- collapseAllAriaLabel: collapseAllAriaLabel,
164
+ collapseAllAriaLabel,
158
165
  onToggle: onCollapseAll
159
166
  }}
160
167
  ></Th>