@patternfly/react-table 5.1.0 → 5.1.1-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 (199) hide show
  1. package/CHANGELOG.md +46 -2
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/Table/package.json +1 -1
  5. package/dist/dynamic/components/Table/utils/decorators/package.json +1 -1
  6. package/dist/dynamic/components/Table/utils/package.json +1 -1
  7. package/dist/dynamic/deprecated/components/Table/base/package.json +1 -1
  8. package/dist/dynamic/deprecated/components/Table/package.json +1 -1
  9. package/dist/dynamic/deprecated/components/package.json +1 -1
  10. package/dist/esm/components/Table/ActionsColumn.d.ts.map +1 -1
  11. package/dist/esm/components/Table/ActionsColumn.js.map +1 -1
  12. package/dist/esm/components/Table/EditColumn.js +3 -3
  13. package/dist/esm/components/Table/EditColumn.js.map +1 -1
  14. package/dist/esm/components/Table/EditableSelectInputCell.d.ts.map +1 -1
  15. package/dist/esm/components/Table/EditableSelectInputCell.js.map +1 -1
  16. package/dist/esm/components/Table/RowWrapper.d.ts +2 -1
  17. package/dist/esm/components/Table/RowWrapper.d.ts.map +1 -1
  18. package/dist/esm/components/Table/RowWrapper.js +2 -1
  19. package/dist/esm/components/Table/RowWrapper.js.map +1 -1
  20. package/dist/esm/components/Table/Table.d.ts +3 -1
  21. package/dist/esm/components/Table/Table.d.ts.map +1 -1
  22. package/dist/esm/components/Table/Table.js +4 -4
  23. package/dist/esm/components/Table/Table.js.map +1 -1
  24. package/dist/esm/components/Table/base/evaluate-transforms.js +2 -2
  25. package/dist/esm/components/Table/base/evaluate-transforms.js.map +1 -1
  26. package/dist/esm/components/Table/base/provider.d.ts +3 -2
  27. package/dist/esm/components/Table/base/provider.d.ts.map +1 -1
  28. package/dist/esm/components/Table/base/provider.js +2 -1
  29. package/dist/esm/components/Table/base/provider.js.map +1 -1
  30. package/dist/esm/components/Table/base/types.d.ts +1 -1
  31. package/dist/esm/components/Table/base/types.d.ts.map +1 -1
  32. package/dist/esm/components/Table/base/types.js.map +1 -1
  33. package/dist/esm/components/Table/utils/decorators/cellActions.d.ts.map +1 -1
  34. package/dist/esm/components/Table/utils/decorators/cellActions.js.map +1 -1
  35. package/dist/esm/components/Table/utils/decorators/cellWidth.d.ts.map +1 -1
  36. package/dist/esm/components/Table/utils/decorators/cellWidth.js.map +1 -1
  37. package/dist/esm/components/Table/utils/decorators/classNames.d.ts.map +1 -1
  38. package/dist/esm/components/Table/utils/decorators/classNames.js +1 -1
  39. package/dist/esm/components/Table/utils/decorators/classNames.js.map +1 -1
  40. package/dist/esm/components/Table/utils/decorators/editable.js +2 -2
  41. package/dist/esm/components/Table/utils/decorators/editable.js.map +1 -1
  42. package/dist/esm/components/Table/utils/headerUtils.d.ts.map +1 -1
  43. package/dist/esm/components/Table/utils/headerUtils.js +1 -6
  44. package/dist/esm/components/Table/utils/headerUtils.js.map +1 -1
  45. package/dist/esm/components/Table/utils/utils.d.ts.map +1 -1
  46. package/dist/esm/components/Table/utils/utils.js +7 -10
  47. package/dist/esm/components/Table/utils/utils.js.map +1 -1
  48. package/dist/esm/deprecated/components/Table/BodyWrapper.js +1 -1
  49. package/dist/esm/deprecated/components/Table/BodyWrapper.js.map +1 -1
  50. package/dist/esm/deprecated/components/Table/Table.d.ts +2 -1
  51. package/dist/esm/deprecated/components/Table/Table.d.ts.map +1 -1
  52. package/dist/esm/deprecated/components/Table/Table.js +2 -1
  53. package/dist/esm/deprecated/components/Table/Table.js.map +1 -1
  54. package/dist/esm/deprecated/components/Table/base/body-row.d.ts +2 -1
  55. package/dist/esm/deprecated/components/Table/base/body-row.d.ts.map +1 -1
  56. package/dist/esm/deprecated/components/Table/base/body-row.js +2 -1
  57. package/dist/esm/deprecated/components/Table/base/body-row.js.map +1 -1
  58. package/dist/esm/deprecated/components/Table/base/body.d.ts.map +1 -1
  59. package/dist/esm/deprecated/components/Table/base/body.js.map +1 -1
  60. package/dist/esm/deprecated/components/Table/base/header.d.ts.map +1 -1
  61. package/dist/esm/deprecated/components/Table/base/header.js.map +1 -1
  62. package/dist/js/components/Table/ActionsColumn.d.ts.map +1 -1
  63. package/dist/js/components/Table/ActionsColumn.js +6 -6
  64. package/dist/js/components/Table/ActionsColumn.js.map +1 -1
  65. package/dist/js/components/Table/CollapseColumn.js +2 -2
  66. package/dist/js/components/Table/CollapseColumn.js.map +1 -1
  67. package/dist/js/components/Table/DraggableCell.js +2 -2
  68. package/dist/js/components/Table/DraggableCell.js.map +1 -1
  69. package/dist/js/components/Table/EditColumn.js +7 -7
  70. package/dist/js/components/Table/EditColumn.js.map +1 -1
  71. package/dist/js/components/Table/EditableSelectInputCell.d.ts.map +1 -1
  72. package/dist/js/components/Table/EditableSelectInputCell.js +1 -1
  73. package/dist/js/components/Table/EditableSelectInputCell.js.map +1 -1
  74. package/dist/js/components/Table/EditableTextCell.js +1 -1
  75. package/dist/js/components/Table/EditableTextCell.js.map +1 -1
  76. package/dist/js/components/Table/FavoritesCell.js +2 -2
  77. package/dist/js/components/Table/FavoritesCell.js.map +1 -1
  78. package/dist/js/components/Table/HeaderCellInfoWrapper.js +4 -4
  79. package/dist/js/components/Table/HeaderCellInfoWrapper.js.map +1 -1
  80. package/dist/js/components/Table/RowWrapper.d.ts +2 -1
  81. package/dist/js/components/Table/RowWrapper.d.ts.map +1 -1
  82. package/dist/js/components/Table/RowWrapper.js +1 -2
  83. package/dist/js/components/Table/RowWrapper.js.map +1 -1
  84. package/dist/js/components/Table/SortColumn.js +3 -3
  85. package/dist/js/components/Table/SortColumn.js.map +1 -1
  86. package/dist/js/components/Table/Table.d.ts +3 -1
  87. package/dist/js/components/Table/Table.d.ts.map +1 -1
  88. package/dist/js/components/Table/Table.js +4 -4
  89. package/dist/js/components/Table/Table.js.map +1 -1
  90. package/dist/js/components/Table/TableText.js +1 -1
  91. package/dist/js/components/Table/TableText.js.map +1 -1
  92. package/dist/js/components/Table/TableTypes.js +0 -4
  93. package/dist/js/components/Table/TableTypes.js.map +1 -1
  94. package/dist/js/components/Table/Td.js +1 -1
  95. package/dist/js/components/Table/Td.js.map +1 -1
  96. package/dist/js/components/Table/Th.js +1 -1
  97. package/dist/js/components/Table/Th.js.map +1 -1
  98. package/dist/js/components/Table/Tr.js +1 -1
  99. package/dist/js/components/Table/Tr.js.map +1 -1
  100. package/dist/js/components/Table/base/evaluate-transforms.js +2 -2
  101. package/dist/js/components/Table/base/evaluate-transforms.js.map +1 -1
  102. package/dist/js/components/Table/base/provider.d.ts +3 -2
  103. package/dist/js/components/Table/base/provider.d.ts.map +1 -1
  104. package/dist/js/components/Table/base/provider.js.map +1 -1
  105. package/dist/js/components/Table/base/types.d.ts +1 -1
  106. package/dist/js/components/Table/base/types.d.ts.map +1 -1
  107. package/dist/js/components/Table/base/types.js +0 -4
  108. package/dist/js/components/Table/base/types.js.map +1 -1
  109. package/dist/js/components/Table/utils/decorators/cellActions.d.ts.map +1 -1
  110. package/dist/js/components/Table/utils/decorators/cellActions.js.map +1 -1
  111. package/dist/js/components/Table/utils/decorators/cellWidth.d.ts.map +1 -1
  112. package/dist/js/components/Table/utils/decorators/cellWidth.js.map +1 -1
  113. package/dist/js/components/Table/utils/decorators/classNames.d.ts.map +1 -1
  114. package/dist/js/components/Table/utils/decorators/classNames.js +1 -1
  115. package/dist/js/components/Table/utils/decorators/classNames.js.map +1 -1
  116. package/dist/js/components/Table/utils/decorators/editable.js +2 -2
  117. package/dist/js/components/Table/utils/decorators/editable.js.map +1 -1
  118. package/dist/js/components/Table/utils/decorators/sortable.js +1 -1
  119. package/dist/js/components/Table/utils/decorators/sortable.js.map +1 -1
  120. package/dist/js/components/Table/utils/decorators/treeRow.js +4 -4
  121. package/dist/js/components/Table/utils/decorators/treeRow.js.map +1 -1
  122. package/dist/js/components/Table/utils/headerUtils.d.ts.map +1 -1
  123. package/dist/js/components/Table/utils/headerUtils.js +1 -6
  124. package/dist/js/components/Table/utils/headerUtils.js.map +1 -1
  125. package/dist/js/components/Table/utils/utils.d.ts.map +1 -1
  126. package/dist/js/components/Table/utils/utils.js +7 -10
  127. package/dist/js/components/Table/utils/utils.js.map +1 -1
  128. package/dist/js/deprecated/components/Table/BodyCell.js +3 -4
  129. package/dist/js/deprecated/components/Table/BodyCell.js.map +1 -1
  130. package/dist/js/deprecated/components/Table/BodyWrapper.js +1 -1
  131. package/dist/js/deprecated/components/Table/BodyWrapper.js.map +1 -1
  132. package/dist/js/deprecated/components/Table/Table.d.ts +2 -1
  133. package/dist/js/deprecated/components/Table/Table.d.ts.map +1 -1
  134. package/dist/js/deprecated/components/Table/Table.js +1 -1
  135. package/dist/js/deprecated/components/Table/Table.js.map +1 -1
  136. package/dist/js/deprecated/components/Table/base/body-row.d.ts +2 -1
  137. package/dist/js/deprecated/components/Table/base/body-row.d.ts.map +1 -1
  138. package/dist/js/deprecated/components/Table/base/body-row.js.map +1 -1
  139. package/dist/js/deprecated/components/Table/base/body.d.ts.map +1 -1
  140. package/dist/js/deprecated/components/Table/base/body.js.map +1 -1
  141. package/dist/js/deprecated/components/Table/base/header.d.ts.map +1 -1
  142. package/dist/js/deprecated/components/Table/base/header.js.map +1 -1
  143. package/dist/umd/react-table.min.js +4 -4
  144. package/package.json +7 -8
  145. package/src/components/Table/ActionsColumn.tsx +3 -1
  146. package/src/components/Table/EditColumn.tsx +3 -3
  147. package/src/components/Table/EditableSelectInputCell.tsx +1 -4
  148. package/src/components/Table/RowWrapper.tsx +5 -3
  149. package/src/components/Table/Table.tsx +5 -1
  150. package/src/components/Table/base/evaluate-transforms.ts +2 -2
  151. package/src/components/Table/base/provider.tsx +3 -1
  152. package/src/components/Table/base/types.tsx +1 -4
  153. package/src/components/Table/examples/Table.md +7 -0
  154. package/src/components/Table/examples/TableActions.tsx +1 -1
  155. package/src/components/Table/examples/TableBasic.tsx +1 -1
  156. package/src/components/Table/examples/TableCellWidth.tsx +1 -1
  157. package/src/components/Table/examples/TableClickable.tsx +1 -1
  158. package/src/components/Table/examples/TableDraggable.tsx +10 -10
  159. package/src/components/Table/examples/TableExpandable.tsx +3 -3
  160. package/src/components/Table/examples/TableFavoritable.tsx +6 -6
  161. package/src/components/Table/examples/TableMultipleStickyColumns.tsx +1 -1
  162. package/src/components/Table/examples/TableNestedExpandable.tsx +3 -12
  163. package/src/components/Table/examples/TableNestedTableExpandable.tsx +5 -15
  164. package/src/components/Table/examples/TableRightStickyColumn.tsx +1 -1
  165. package/src/components/Table/examples/TableSelectable.tsx +4 -4
  166. package/src/components/Table/examples/TableStickyColumn.tsx +1 -1
  167. package/src/components/Table/examples/TableStickyColumnsAndHeader.tsx +1 -1
  168. package/src/components/Table/examples/TableStriped.tsx +1 -1
  169. package/src/components/Table/examples/TableStripedExpandable.tsx +4 -9
  170. package/src/components/Table/examples/TableStripedMultipleTbody.tsx +2 -2
  171. package/src/components/Table/examples/TableTree.tsx +10 -10
  172. package/src/components/Table/examples/TableTreeNoInset.tsx +121 -0
  173. package/src/components/Table/utils/decorators/cellActions.tsx +51 -53
  174. package/src/components/Table/utils/decorators/cellWidth.ts +9 -9
  175. package/src/components/Table/utils/decorators/classNames.ts +6 -4
  176. package/src/components/Table/utils/decorators/editable.tsx +2 -2
  177. package/src/components/Table/utils/headerUtils.test.tsx +10 -10
  178. package/src/components/Table/utils/headerUtils.tsx +1 -7
  179. package/src/components/Table/utils/utils.tsx +7 -11
  180. package/src/deprecated/components/Table/BodyWrapper.tsx +1 -1
  181. package/src/deprecated/components/Table/Table.tsx +5 -2
  182. package/src/deprecated/components/Table/base/body-row.tsx +3 -1
  183. package/src/deprecated/components/Table/base/body.tsx +8 -1
  184. package/src/deprecated/components/Table/base/header.tsx +1 -6
  185. package/src/deprecated/components/Table/examples/LegacyTableActions.tsx +3 -8
  186. package/src/deprecated/components/Table/examples/LegacyTableBasic.tsx +1 -1
  187. package/src/deprecated/components/Table/examples/LegacyTableCellWidth.tsx +1 -1
  188. package/src/deprecated/components/Table/examples/LegacyTableClickable.tsx +1 -1
  189. package/src/deprecated/components/Table/examples/LegacyTableControllingText.tsx +1 -8
  190. package/src/deprecated/components/Table/examples/LegacyTableExpandable.tsx +4 -4
  191. package/src/deprecated/components/Table/examples/LegacyTableFavoritable.tsx +6 -6
  192. package/src/deprecated/components/Table/examples/LegacyTableSelectableRadio.tsx +1 -1
  193. package/src/deprecated/components/Table/examples/LegacyTableSortable.tsx +1 -1
  194. package/src/deprecated/components/Table/examples/LegacyTableStriped.tsx +1 -1
  195. package/src/deprecated/components/Table/examples/LegacyTableStripedCustomTr.tsx +1 -1
  196. package/src/deprecated/components/Table/examples/LegacyTableStripedExpandable.tsx +4 -4
  197. package/src/deprecated/components/Table/examples/LegacyTableTree.tsx +9 -9
  198. package/src/docs/demos/Table.md +2 -2
  199. package/src/test-helpers/MockedTableChanges.js +20 -18
@@ -0,0 +1,121 @@
1
+ import React from 'react';
2
+ import { Table, Thead, Tr, Th, Tbody, Td, TreeRowWrapper, TdProps } from '@patternfly/react-table';
3
+ import LeafIcon from '@patternfly/react-icons/dist/esm/icons/leaf-icon';
4
+
5
+ interface RepositoriesTreeNode {
6
+ name: string;
7
+ branches: string;
8
+ pullRequests: string;
9
+ workspaces: string;
10
+ children?: RepositoriesTreeNode[];
11
+ }
12
+
13
+ export const TableTreeNoInset: React.FunctionComponent = () => {
14
+ // In real usage, this data would come from some external source like an API via props.
15
+ const data: RepositoriesTreeNode[] = [
16
+ {
17
+ name: 'Repositories one',
18
+ branches: 'Branch one',
19
+ pullRequests: 'Pull request one',
20
+ workspaces: 'Workplace one',
21
+ children: []
22
+ },
23
+ {
24
+ name: 'Repositories seven',
25
+ branches: 'Branch seven',
26
+ pullRequests: 'Pull request seven',
27
+ workspaces: 'Workplace seven',
28
+ children: []
29
+ },
30
+ {
31
+ name: 'Repositories nine',
32
+ branches: 'Branch nine',
33
+ pullRequests: 'Pull request nine',
34
+ workspaces: 'Workplace nine'
35
+ }
36
+ ];
37
+
38
+ const columnNames = {
39
+ name: 'Repositories',
40
+ branches: 'Branches',
41
+ prs: 'Pull requests',
42
+ workspaces: 'Workspaces'
43
+ };
44
+
45
+ const [selectedNodeNames, setSelectedNodeNames] = React.useState<string[]>([]);
46
+ const isNodeChecked = (node: RepositoriesTreeNode) => selectedNodeNames.includes(node.name);
47
+
48
+ /**
49
+ Recursive function which flattens the data into an array of flattened TreeRowWrapper components
50
+ params:
51
+ - nodes - array of a single level of tree nodes
52
+ - level - number representing how deeply nested the current row is
53
+ - posinset - position of the row relative to this row's siblings
54
+ - currentRowIndex - position of the row relative to the entire table
55
+ - isHidden - defaults to false, true if this row's parent is expanded
56
+ */
57
+ const renderRows = (
58
+ [node, ...remainingNodes]: RepositoriesTreeNode[],
59
+ level = 1,
60
+ posinset = 1,
61
+ rowIndex = 0,
62
+ isHidden = false
63
+ ): React.ReactNode[] => {
64
+ if (!node) {
65
+ return [];
66
+ }
67
+ const isChecked = isNodeChecked(node);
68
+ const icon = <LeafIcon />;
69
+
70
+ const treeRow: TdProps['treeRow'] = {
71
+ onCollapse: () => {},
72
+ onToggleRowDetails: () => {},
73
+ onCheckChange: (_event, isChecking) => {
74
+ setSelectedNodeNames((prevSelected) => {
75
+ const otherSelectedNodeNames = prevSelected.filter((name) => name === node.name);
76
+ return !isChecking ? otherSelectedNodeNames : [...otherSelectedNodeNames, node.name];
77
+ });
78
+ },
79
+ rowIndex,
80
+ props: {
81
+ isHidden,
82
+ 'aria-level': level,
83
+ 'aria-posinset': posinset,
84
+ 'aria-setsize': node.children ? node.children.length : 0,
85
+ isChecked,
86
+ checkboxId: `flat_checkbox_id_${node.name.toLowerCase().replace(/\s+/g, '_')}`,
87
+ icon
88
+ }
89
+ };
90
+
91
+ const childRows =
92
+ node.children && node.children.length ? renderRows(node.children, level + 1, 1, rowIndex + 1, isHidden) : [];
93
+
94
+ return [
95
+ <TreeRowWrapper key={node.name} row={{ props: treeRow.props }}>
96
+ <Td dataLabel={columnNames.name} treeRow={treeRow}>
97
+ {node.name}
98
+ </Td>
99
+ <Td dataLabel={columnNames.branches}>{node.branches}</Td>
100
+ <Td dataLabel={columnNames.prs}>{node.pullRequests}</Td>
101
+ <Td dataLabel={columnNames.workspaces}>{node.workspaces}</Td>
102
+ </TreeRowWrapper>,
103
+ ...childRows,
104
+ ...renderRows(remainingNodes, level, posinset + 1, rowIndex + 1 + childRows.length, isHidden)
105
+ ];
106
+ };
107
+
108
+ return (
109
+ <Table isTreeTable aria-label="Tree table" hasNoInset>
110
+ <Thead>
111
+ <Tr>
112
+ <Th width={40}>{columnNames.name}</Th>
113
+ <Th>{columnNames.branches}</Th>
114
+ <Th>{columnNames.prs}</Th>
115
+ <Th>{columnNames.workspaces}</Th>
116
+ </Tr>
117
+ </Thead>
118
+ <Tbody>{renderRows(data)}</Tbody>
119
+ </Table>
120
+ );
121
+ };
@@ -21,59 +21,57 @@ const resolveOrDefault = (
21
21
  extraData: IExtraData
22
22
  ) => (typeof resolver === 'function' ? resolver(rowData, extraData) : defaultValue);
23
23
 
24
- export const cellActions = (
25
- actions: IActions,
26
- actionResolver: IActionsResolver,
27
- areActionsDisabled: IAreActionsDisabled
28
- ): ITransform => (
29
- label: IFormatterValueType,
30
- {
31
- rowData,
32
- column,
33
- rowIndex,
34
- columnIndex,
35
- column: {
36
- extraParams: { actionsToggle, actionsPopperProps }
37
- },
38
- property
39
- }: IExtra
40
- ) => {
41
- const extraData = {
42
- rowIndex,
43
- columnIndex,
44
- column,
45
- property
46
- };
47
- const resolvedActions = resolveOrDefault(actionResolver, actions, rowData, extraData) as IAction[];
48
- const resolvedIsDisabled = resolveOrDefault(
49
- areActionsDisabled,
50
- rowData && rowData.disableActions,
51
- rowData,
52
- extraData
53
- ) as boolean;
24
+ export const cellActions =
25
+ (actions: IActions, actionResolver: IActionsResolver, areActionsDisabled: IAreActionsDisabled): ITransform =>
26
+ (
27
+ label: IFormatterValueType,
28
+ {
29
+ rowData,
30
+ column,
31
+ rowIndex,
32
+ columnIndex,
33
+ column: {
34
+ extraParams: { actionsToggle, actionsPopperProps }
35
+ },
36
+ property
37
+ }: IExtra
38
+ ) => {
39
+ const extraData = {
40
+ rowIndex,
41
+ columnIndex,
42
+ column,
43
+ property
44
+ };
45
+ const resolvedActions = resolveOrDefault(actionResolver, actions, rowData, extraData) as IAction[];
46
+ const resolvedIsDisabled = resolveOrDefault(
47
+ areActionsDisabled,
48
+ rowData && rowData.disableActions,
49
+ rowData,
50
+ extraData
51
+ ) as boolean;
54
52
 
55
- const renderProps =
56
- resolvedActions && (resolvedActions as []).length > 0
57
- ? {
58
- children: (
59
- <ActionsColumn
60
- items={resolvedActions}
61
- isDisabled={resolvedIsDisabled}
62
- rowData={rowData}
63
- extraData={extraData}
64
- actionsToggle={actionsToggle}
65
- popperProps={actionsPopperProps}
66
- >
67
- {label as React.ReactNode}
68
- </ActionsColumn>
69
- )
70
- }
71
- : {};
53
+ const renderProps =
54
+ resolvedActions && (resolvedActions as []).length > 0
55
+ ? {
56
+ children: (
57
+ <ActionsColumn
58
+ items={resolvedActions}
59
+ isDisabled={resolvedIsDisabled}
60
+ rowData={rowData}
61
+ extraData={extraData}
62
+ actionsToggle={actionsToggle}
63
+ popperProps={actionsPopperProps}
64
+ >
65
+ {label as React.ReactNode}
66
+ </ActionsColumn>
67
+ )
68
+ }
69
+ : {};
72
70
 
73
- return {
74
- className: css(styles.tableAction),
75
- style: { paddingRight: 0 },
76
- isVisible: true,
77
- ...renderProps
71
+ return {
72
+ className: css(styles.tableAction),
73
+ style: { paddingRight: 0 },
74
+ isVisible: true,
75
+ ...renderProps
76
+ };
78
77
  };
79
- };
@@ -19,12 +19,12 @@ type WidthClass =
19
19
  | 'width_90'
20
20
  | 'width_100';
21
21
 
22
- export const cellWidth = (
23
- width: 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 60 | 70 | 80 | 90 | 100
24
- ): ITransform => () => ({
25
- className: css(
26
- styles.modifiers[
27
- typeof width === 'number' ? (`width_${width}` as WidthClass) : (`width${capitalize(width)}` as WidthClass)
28
- ]
29
- )
30
- });
22
+ export const cellWidth =
23
+ (width: 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 60 | 70 | 80 | 90 | 100): ITransform =>
24
+ () => ({
25
+ className: css(
26
+ styles.modifiers[
27
+ typeof width === 'number' ? (`width_${width}` as WidthClass) : (`width${capitalize(width)}` as WidthClass)
28
+ ]
29
+ )
30
+ });
@@ -31,13 +31,15 @@ export interface IVisibility {
31
31
  }
32
32
 
33
33
  export const Visibility = visibilityModifiers
34
- .filter(key => styles.modifiers[key])
34
+ .filter((key) => styles.modifiers[key])
35
35
  .reduce((acc, curr) => {
36
36
  const key2 = curr.replace('_2xl', '2Xl') as keyof typeof Visibility;
37
37
  acc[key2] = styles.modifiers[curr];
38
38
  return acc;
39
39
  }, {} as IVisibility);
40
40
 
41
- export const classNames = (...classes: string[]): ITransform => () => ({
42
- className: css(...classes)
43
- });
41
+ export const classNames =
42
+ (...classes: string[]): ITransform =>
43
+ () => ({
44
+ className: css(...classes)
45
+ });
@@ -15,7 +15,7 @@ export const editable: ITransform = (label: IFormatterValueType, { rowIndex, row
15
15
  validationErrors =
16
16
  rowData.rowEditValidationRules &&
17
17
  rowData.rowEditValidationRules.reduce((acc, rule) => {
18
- const invalidCells = (rowData.cells as IRowCell[]).filter(cellData => {
18
+ const invalidCells = (rowData.cells as IRowCell[]).filter((cellData) => {
19
19
  const testValue =
20
20
  cellData.props.editableValue === '' ? '' : cellData.props.editableValue || cellData.props.value;
21
21
 
@@ -45,7 +45,7 @@ export const editable: ITransform = (label: IFormatterValueType, { rowIndex, row
45
45
  });
46
46
 
47
47
  if (invalidCells.length) {
48
- acc[rule.name] = invalidCells.map(cell => cell.props.name);
48
+ acc[rule.name] = invalidCells.map((cell) => cell.props.name);
49
49
  }
50
50
  return acc;
51
51
  }, {} as RowErrors);
@@ -12,9 +12,9 @@ describe('headerUtils', () => {
12
12
  expect(collapsibleTransfroms[0].extraParams.onCollapse).toBeDefined();
13
13
  expect(collapsibleTransfroms[0].header.transforms).toHaveLength(2);
14
14
  expect(collapsibleTransfroms[1].cell.transforms).toHaveLength(3);
15
- expect(collapsibleTransfroms[1].cell.transforms.find(transform => transform.name === 'parentId')).toBeDefined();
15
+ expect(collapsibleTransfroms[1].cell.transforms.find((transform) => transform.name === 'parentId')).toBeDefined();
16
16
  expect(
17
- collapsibleTransfroms[1].cell.transforms.find(transform => transform.name === 'expandedRowFormatter')
17
+ collapsibleTransfroms[1].cell.transforms.find((transform) => transform.name === 'expandedRowFormatter')
18
18
  ).toBeDefined();
19
19
  });
20
20
 
@@ -101,8 +101,8 @@ describe('headerUtils', () => {
101
101
  ],
102
102
  {}
103
103
  );
104
- expect(result[0].header.formatters.find(formatter => formatter.name === 'testFunc')).toBeDefined();
105
- expect(result[0].header.transforms.find(transform => transform.name === 'testFunc')).toBeDefined();
104
+ expect(result[0].header.formatters.find((formatter) => formatter.name === 'testFunc')).toBeDefined();
105
+ expect(result[0].header.transforms.find((transform) => transform.name === 'testFunc')).toBeDefined();
106
106
  });
107
107
 
108
108
  test('custom functions in header', () => {
@@ -119,8 +119,8 @@ describe('headerUtils', () => {
119
119
  ],
120
120
  {}
121
121
  );
122
- expect(result[0].header.formatters.find(formatter => formatter.name === 'testFunc')).toBeDefined();
123
- expect(result[0].header.transforms.find(transform => transform.name === 'testFunc')).toBeDefined();
122
+ expect(result[0].header.formatters.find((formatter) => formatter.name === 'testFunc')).toBeDefined();
123
+ expect(result[0].header.transforms.find((transform) => transform.name === 'testFunc')).toBeDefined();
124
124
  });
125
125
  });
126
126
 
@@ -151,8 +151,8 @@ describe('headerUtils', () => {
151
151
  ],
152
152
  {}
153
153
  );
154
- expect(result[0].cell.formatters.find(formatter => formatter.name === 'testFunc')).toBeDefined();
155
- expect(result[0].cell.transforms.find(transform => transform.name === 'testFunc')).toBeDefined();
154
+ expect(result[0].cell.formatters.find((formatter) => formatter.name === 'testFunc')).toBeDefined();
155
+ expect(result[0].cell.transforms.find((transform) => transform.name === 'testFunc')).toBeDefined();
156
156
  });
157
157
 
158
158
  test('custom functions in header', () => {
@@ -169,8 +169,8 @@ describe('headerUtils', () => {
169
169
  ],
170
170
  {}
171
171
  );
172
- expect(result[0].cell.formatters.find(formatter => formatter.name === 'testFunc')).toBeDefined();
173
- expect(result[0].cell.transforms.find(transform => transform.name === 'testFunc')).toBeDefined();
172
+ expect(result[0].cell.formatters.find((formatter) => formatter.name === 'testFunc')).toBeDefined();
173
+ expect(result[0].cell.transforms.find((transform) => transform.name === 'testFunc')).toBeDefined();
174
174
  });
175
175
 
176
176
  describe('custom dataLabel', () => {
@@ -99,13 +99,7 @@ const mapHeader = (column: ICell, extra: any, key: number, ...props: any) => {
99
99
  }
100
100
 
101
101
  return {
102
- property:
103
- (typeof title === 'string' &&
104
- title
105
- .toLowerCase()
106
- .trim()
107
- .replace(/\s/g, '-')) ||
108
- `column-${key}`,
102
+ property: (typeof title === 'string' && title.toLowerCase().trim().replace(/\s/g, '-')) || `column-${key}`,
109
103
  extraParams: extra,
110
104
  data: column.data,
111
105
  header: generateHeader(column, title),
@@ -37,12 +37,12 @@ export const isRowExpanded = (row: IRow, rows: IRow[]) => {
37
37
  };
38
38
 
39
39
  export const getErrorTextByValidator = (validatorName: string, validators: IValidatorDef[]) => {
40
- const result = validators.filter(validator => validator.name === validatorName);
40
+ const result = validators.filter((validator) => validator.name === validatorName);
41
41
  return result[0].errorText;
42
42
  };
43
43
 
44
44
  export const cancelCellEdits = (row: IRow) => {
45
- (row.cells as IRowCell[]).forEach(cell => {
45
+ (row.cells as IRowCell[]).forEach((cell) => {
46
46
  delete cell.props.errorText;
47
47
  delete cell.props.editableValue;
48
48
  cell.props.isValid = true;
@@ -65,7 +65,7 @@ export const validateCellEdits = (
65
65
  ) => {
66
66
  row.isValid = Object.keys(validationErrors).length ? false : true;
67
67
 
68
- (row.cells as IRowCell[]).forEach(cell => {
68
+ (row.cells as IRowCell[]).forEach((cell) => {
69
69
  delete cell.props.errorText;
70
70
 
71
71
  const hasValue = cell.props.value !== undefined && cell.props.value !== null;
@@ -74,8 +74,8 @@ export const validateCellEdits = (
74
74
  if (cell.props && hasValue && hasEditableValue) {
75
75
  if (type === 'save') {
76
76
  const errorMsg = Object.keys(validationErrors)
77
- .filter(validatorName => validationErrors[validatorName].includes(cell.props.name))
78
- .map(validatorName => getErrorTextByValidator(validatorName, row.rowEditValidationRules));
77
+ .filter((validatorName) => validationErrors[validatorName].includes(cell.props.name))
78
+ .map((validatorName) => getErrorTextByValidator(validatorName, row.rowEditValidationRules));
79
79
 
80
80
  if (errorMsg.length) {
81
81
  cell.props.errorText = cell.props.name ? errorMsg.join(', ') : missingPropErrorTxt;
@@ -94,7 +94,7 @@ export const validateCellEdits = (
94
94
  };
95
95
 
96
96
  export const applyCellEdits = (row: IRow, type: RowEditType) => {
97
- (row.cells as IRowCell[]).forEach(cell => {
97
+ (row.cells as IRowCell[]).forEach((cell) => {
98
98
  delete cell.props.errorText;
99
99
  const hasValue = cell.props.value !== undefined && cell.props.value !== null;
100
100
  const hasEditableValue = cell.props.editableValue !== undefined && cell.props.editableValue !== null;
@@ -119,11 +119,7 @@ export const applyCellEdits = (row: IRow, type: RowEditType) => {
119
119
  return row;
120
120
  };
121
121
 
122
- const camelize = (s: string) =>
123
- s
124
- .toUpperCase()
125
- .replace('-', '')
126
- .replace('_', '');
122
+ const camelize = (s: string) => s.toUpperCase().replace('-', '').replace('_', '');
127
123
  export const toCamel = (s: string) => s.replace(/([-_][a-z])/gi, camelize);
128
124
 
129
125
  /**
@@ -28,7 +28,7 @@ export const BodyWrapper: React.FunctionComponent<BodyWrapperProps> = ({
28
28
  /* eslint-enable @typescript-eslint/no-unused-vars */
29
29
  ...props
30
30
  }: BodyWrapperProps) => {
31
- if (mappedRows && mappedRows.some(row => row.hasOwnProperty('parent'))) {
31
+ if (mappedRows && mappedRows.some((row) => row.hasOwnProperty('parent'))) {
32
32
  return (
33
33
  <React.Fragment>
34
34
  {mapOpenedRows(mappedRows, props.children).map((oneRow, key) => (
@@ -27,7 +27,8 @@ import {
27
27
  IHeaderRow,
28
28
  OnFavorite,
29
29
  TreeRowWrapper,
30
- CustomActionsToggleProps } from '../../../components';
30
+ CustomActionsToggleProps
31
+ } from '../../../components';
31
32
 
32
33
  export interface TableProps extends OUIAProps {
33
34
  /** Adds an accessible name for the Table */
@@ -131,7 +132,7 @@ export interface TableProps extends OUIAProps {
131
132
  ouiaSafe?: boolean;
132
133
  }
133
134
 
134
- export class Table extends React.Component<TableProps, {}> {
135
+ class Table extends React.Component<TableProps, {}> {
135
136
  static displayName = 'Table';
136
137
  static hasWarnBeta = false;
137
138
  static defaultProps: Partial<TableProps> = {
@@ -297,3 +298,5 @@ export class Table extends React.Component<TableProps, {}> {
297
298
  return table;
298
299
  }
299
300
  }
301
+
302
+ export { Table };
@@ -28,7 +28,7 @@ export interface BodyRowProps {
28
28
  rowKey: string;
29
29
  }
30
30
 
31
- export class BodyRow extends React.Component<BodyRowProps, {}> {
31
+ class BodyRow extends React.Component<BodyRowProps, {}> {
32
32
  static displayName = 'BodyRow';
33
33
  static defaultProps = {
34
34
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -97,3 +97,5 @@ export class BodyRow extends React.Component<BodyRowProps, {}> {
97
97
  );
98
98
  }
99
99
  }
100
+
101
+ export { BodyRow };
@@ -6,7 +6,14 @@
6
6
  */
7
7
  import * as React from 'react';
8
8
  import isEqual from 'lodash/isEqual';
9
- import { RowsType, RowType, RowKeyType, RenderersTypes, createElementType, ColumnsType } from '../../../../components/Table/base/types';
9
+ import {
10
+ RowsType,
11
+ RowType,
12
+ RowKeyType,
13
+ RenderersTypes,
14
+ createElementType,
15
+ ColumnsType
16
+ } from '../../../../components/Table/base/types';
10
17
  import { ProviderContext } from '../../../../components/Table/base/provider';
11
18
  import { resolveRowKey } from './resolve-row-key';
12
19
  import { BodyRow } from './body-row';
@@ -5,12 +5,7 @@
5
5
  * https://github.com/reactabular/reactabular/tree/v8.14.0/packages/reactabular-table/src
6
6
  */
7
7
  import * as React from 'react';
8
- import {
9
- createElementType,
10
- RowsType,
11
- ColumnsType,
12
- RenderersTypes
13
- } from '../../../../components/Table/base/types';
8
+ import { createElementType, RowsType, ColumnsType, RenderersTypes } from '../../../../components/Table/base/types';
14
9
  import { ProviderContext } from '../../../../components/Table/base/provider';
15
10
 
16
11
  import { HeaderRow } from './header-row';
@@ -19,12 +19,7 @@ import {
19
19
  IActionsResolver,
20
20
  TableText
21
21
  } from '@patternfly/react-table';
22
- import {
23
- Table,
24
- TableBody,
25
- TableHeader,
26
- TableProps
27
- } from '@patternfly/react-table/deprecated';
22
+ import { Table, TableBody, TableHeader, TableProps } from '@patternfly/react-table/deprecated';
28
23
 
29
24
  interface Repository {
30
25
  name: string;
@@ -78,7 +73,7 @@ export const LegacyTableActions: React.FunctionComponent = () => {
78
73
  { title: '', dataLabel: 'Action', cellTransforms: [fitContent] }
79
74
  ];
80
75
 
81
- const rows: TableProps['rows'] = repositories.map(repo => {
76
+ const rows: TableProps['rows'] = repositories.map((repo) => {
82
77
  let singleActionButton: React.ReactNode = null;
83
78
  if (repo.singleAction !== '') {
84
79
  singleActionButton = (
@@ -196,7 +191,7 @@ export const LegacyTableActions: React.FunctionComponent = () => {
196
191
  rows={rows}
197
192
  {...(propToUse === 'actions' && { actions })}
198
193
  {...(propToUse === 'actionResolver' && { actionResolver })}
199
- areActionsDisabled={rowData => !!rowData.disableActions}
194
+ areActionsDisabled={(rowData) => !!rowData.disableActions}
200
195
  dropdownPosition="left"
201
196
  dropdownDirection="down"
202
197
  actionsToggle={useCustomToggle ? customActionsToggle : undefined}
@@ -45,7 +45,7 @@ export const LegacyTableBasic: React.FunctionComponent = () => {
45
45
  };
46
46
 
47
47
  const columns: TableProps['cells'] = ['Repositories', 'Branches', 'Pull requests', 'Workspaces', 'Last commit'];
48
- const rows: TableProps['rows'] = repositories.map(repo => [
48
+ const rows: TableProps['rows'] = repositories.map((repo) => [
49
49
  repo.name,
50
50
  repo.branches,
51
51
  repo.prs,
@@ -50,7 +50,7 @@ export const LegacyTableCellWidth: React.FunctionComponent = () => {
50
50
  transforms: [cellWidth(30)]
51
51
  }
52
52
  ];
53
- const rows: TableProps['rows'] = repositories.map(repo => [
53
+ const rows: TableProps['rows'] = repositories.map((repo) => [
54
54
  repo.name,
55
55
  repo.branches,
56
56
  repo.prs,
@@ -72,7 +72,7 @@ export const LegacyTableClickable: React.FunctionComponent = () => {
72
72
  cellTransforms: [textCenter]
73
73
  }
74
74
  ];
75
- const rows: TableProps['rows'] = repositories.map(repo => {
75
+ const rows: TableProps['rows'] = repositories.map((repo) => {
76
76
  let cells: (string | ICell)[] = [repo.name, repo.branches || '', repo.prs || '', repo.workspaces, repo.lastCommit];
77
77
  // These rows have arbitrary differences for this example, but these could be based on some other conditions
78
78
  if (repo.name === 'one - 2') {
@@ -1,12 +1,5 @@
1
1
  import React from 'react';
2
- import {
3
- cellWidth,
4
- truncate,
5
- breakWord,
6
- wrappable,
7
- fitContent,
8
- nowrap
9
- } from '@patternfly/react-table';
2
+ import { cellWidth, truncate, breakWord, wrappable, fitContent, nowrap } from '@patternfly/react-table';
10
3
  import { Table, TableHeader, TableBody, TableProps } from '@patternfly/react-table/deprecated';
11
4
 
12
5
  // This example has been simplified to focus on the text modifier props. In real usage,
@@ -77,11 +77,11 @@ export const LegacyTableExpandable: React.FunctionComponent = () => {
77
77
  // In this example, expanded rows are tracked by the repo names from each row. This could be any unique identifier.
78
78
  // This is to prevent state from being based on row order index in case we later add sorting.
79
79
  // Note that this behavior is very similar to selection state.
80
- const initialExpandedRepoNames = repositories.filter(repo => !!repo.details).map(repo => repo.name); // Default to all expanded
80
+ const initialExpandedRepoNames = repositories.filter((repo) => !!repo.details).map((repo) => repo.name); // Default to all expanded
81
81
  const [expandedRepoNames, setExpandedRepoNames] = React.useState<string[]>(initialExpandedRepoNames);
82
82
  const setRepoExpanded = (repo: Repository, isExpanding = true) =>
83
- setExpandedRepoNames(prevExpanded => {
84
- const otherExpandedRepoNames = prevExpanded.filter(r => r !== repo.name);
83
+ setExpandedRepoNames((prevExpanded) => {
84
+ const otherExpandedRepoNames = prevExpanded.filter((r) => r !== repo.name);
85
85
  return isExpanding ? [...otherExpandedRepoNames, repo.name] : otherExpandedRepoNames;
86
86
  });
87
87
  const isRepoExpanded = (repo: Repository) => expandedRepoNames.includes(repo.name);
@@ -103,7 +103,7 @@ export const LegacyTableExpandable: React.FunctionComponent = () => {
103
103
  { title: '' /* deliberately empty */, dataLabel: 'Label for mobile view' }
104
104
  ];
105
105
  const rows: TableProps['rows'] = [];
106
- repositories.forEach(repo => {
106
+ repositories.forEach((repo) => {
107
107
  rows.push({
108
108
  ...(repo.details ? { isOpen: isRepoExpanded(repo) } : {}),
109
109
  cells: [repo.name, repo.branches, repo.prs, repo.workspaces]
@@ -30,8 +30,8 @@ export const LegacyTableFavoritable: React.FunctionComponent = () => {
30
30
  // Favorite state is similar to selection state. See selectedRepoNames and associated code below.
31
31
  const [favoriteRepoNames, setFavoriteRepoNames] = React.useState<string[]>([]);
32
32
  const setRepoFavorited = (repo: Repository, isFavoriting = true) =>
33
- setFavoriteRepoNames(prevFavorites => {
34
- const otherFavorites = prevFavorites.filter(r => r !== repo.name);
33
+ setFavoriteRepoNames((prevFavorites) => {
34
+ const otherFavorites = prevFavorites.filter((r) => r !== repo.name);
35
35
  return isFavoriting ? [...otherFavorites, repo.name] : otherFavorites;
36
36
  });
37
37
  const isRepoFavorited = (repo: Repository) => favoriteRepoNames.includes(repo.name);
@@ -78,12 +78,12 @@ export const LegacyTableFavoritable: React.FunctionComponent = () => {
78
78
  // This is to prevent state from being based on row order index in case we later add sorting.
79
79
  const [selectedRepoNames, setSelectedRepoNames] = React.useState<string[]>([]);
80
80
  const setRepoSelected = (repo: Repository, isSelecting = true) =>
81
- setSelectedRepoNames(prevSelected => {
82
- const otherSelectedRepoNames = prevSelected.filter(r => r !== repo.name);
81
+ setSelectedRepoNames((prevSelected) => {
82
+ const otherSelectedRepoNames = prevSelected.filter((r) => r !== repo.name);
83
83
  return isSelecting && isRepoSelectable(repo) ? [...otherSelectedRepoNames, repo.name] : otherSelectedRepoNames;
84
84
  });
85
85
  const selectAllRepos = (isSelecting = true) =>
86
- setSelectedRepoNames(isSelecting ? selectableRepos.map(r => r.name) : []);
86
+ setSelectedRepoNames(isSelecting ? selectableRepos.map((r) => r.name) : []);
87
87
  const isRepoSelected = (repo: Repository) => selectedRepoNames.includes(repo.name);
88
88
 
89
89
  const columns: TableProps['cells'] = [
@@ -93,7 +93,7 @@ export const LegacyTableFavoritable: React.FunctionComponent = () => {
93
93
  'Workspaces',
94
94
  'Last commit'
95
95
  ];
96
- const rows: TableProps['rows'] = sortedRepositories.map(repo => {
96
+ const rows: TableProps['rows'] = sortedRepositories.map((repo) => {
97
97
  const favorited = isRepoFavorited(repo);
98
98
  return {
99
99
  favorited,
@@ -31,7 +31,7 @@ export const LegacyTableSelectableRadio: React.FunctionComponent = () => {
31
31
  'Workspaces',
32
32
  'Last commit'
33
33
  ];
34
- const rows: TableProps['rows'] = repositories.map(repo => ({
34
+ const rows: TableProps['rows'] = repositories.map((repo) => ({
35
35
  cells: [repo.name, repo.branches, repo.prs, repo.workspaces, repo.lastCommit],
36
36
  selected: selectedRepoName === repo.name,
37
37
  disableSelection: !isRepoSelectable(repo)