@patternfly/react-table 6.0.0-alpha.7 → 6.0.0-alpha.70

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 (233) hide show
  1. package/CHANGELOG.md +812 -2
  2. package/README.md +2 -17
  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 +2 -0
  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/EditableSelectInputCell.d.ts +3 -4
  17. package/dist/esm/components/Table/EditableSelectInputCell.d.ts.map +1 -1
  18. package/dist/esm/components/Table/EditableSelectInputCell.js +9 -5
  19. package/dist/esm/components/Table/EditableSelectInputCell.js.map +1 -1
  20. package/dist/esm/components/Table/EditableTextCell.js +1 -1
  21. package/dist/esm/components/Table/EditableTextCell.js.map +1 -1
  22. package/dist/esm/components/Table/RowWrapper.js.map +1 -1
  23. package/dist/esm/components/Table/SortColumn.js.map +1 -1
  24. package/dist/esm/components/Table/Table.d.ts.map +1 -1
  25. package/dist/esm/components/Table/Table.js +4 -4
  26. package/dist/esm/components/Table/Table.js.map +1 -1
  27. package/dist/esm/components/Table/TableText.js.map +1 -1
  28. package/dist/esm/components/Table/TableTypes.d.ts +26 -25
  29. package/dist/esm/components/Table/TableTypes.d.ts.map +1 -1
  30. package/dist/esm/components/Table/TableTypes.js.map +1 -1
  31. package/dist/esm/components/Table/Td.d.ts +1 -1
  32. package/dist/esm/components/Table/Td.js +3 -3
  33. package/dist/esm/components/Table/Td.js.map +1 -1
  34. package/dist/esm/components/Table/Th.d.ts +8 -0
  35. package/dist/esm/components/Table/Th.d.ts.map +1 -1
  36. package/dist/esm/components/Table/Th.js +10 -6
  37. package/dist/esm/components/Table/Th.js.map +1 -1
  38. package/dist/esm/components/Table/Tr.js.map +1 -1
  39. package/dist/esm/components/Table/base/columns-are-equal.js.map +1 -1
  40. package/dist/esm/components/Table/base/evaluate-transforms.js.map +1 -1
  41. package/dist/esm/components/Table/base/merge-props.js.map +1 -1
  42. package/dist/esm/components/Table/base/provider.js.map +1 -1
  43. package/dist/esm/components/Table/base/types.d.ts +16 -17
  44. package/dist/esm/components/Table/base/types.d.ts.map +1 -1
  45. package/dist/esm/components/Table/base/types.js.map +1 -1
  46. package/dist/esm/components/Table/utils/decorators/compoundExpand.js.map +1 -1
  47. package/dist/esm/components/Table/utils/decorators/editable.js.map +1 -1
  48. package/dist/esm/components/Table/utils/decorators/favoritable.js.map +1 -1
  49. package/dist/esm/components/Table/utils/decorators/selectable.js +1 -1
  50. package/dist/esm/components/Table/utils/decorators/selectable.js.map +1 -1
  51. package/dist/esm/components/Table/utils/decorators/sortable.js.map +1 -1
  52. package/dist/esm/components/Table/utils/decorators/treeRow.d.ts +1 -1
  53. package/dist/esm/components/Table/utils/headerUtils.js.map +1 -1
  54. package/dist/esm/components/Table/utils/utils.js.map +1 -1
  55. package/dist/esm/demos/DashboardHeader.d.ts +8 -0
  56. package/dist/esm/demos/DashboardHeader.d.ts.map +1 -0
  57. package/dist/esm/demos/DashboardHeader.js +77 -0
  58. package/dist/esm/demos/DashboardHeader.js.map +1 -0
  59. package/dist/esm/demos/DashboardWrapper.d.ts +85 -0
  60. package/dist/esm/demos/DashboardWrapper.d.ts.map +1 -0
  61. package/dist/esm/demos/DashboardWrapper.js +41 -0
  62. package/dist/esm/demos/DashboardWrapper.js.map +1 -0
  63. package/dist/esm/demos/index.d.ts +2 -0
  64. package/dist/esm/demos/index.d.ts.map +1 -1
  65. package/dist/esm/demos/index.js +2 -0
  66. package/dist/esm/demos/index.js.map +1 -1
  67. package/dist/esm/deprecated/components/Table/Body.d.ts +1 -1
  68. package/dist/esm/deprecated/components/Table/Body.d.ts.map +1 -1
  69. package/dist/esm/deprecated/components/Table/Body.js.map +1 -1
  70. package/dist/esm/deprecated/components/Table/BodyCell.js.map +1 -1
  71. package/dist/esm/deprecated/components/Table/BodyWrapper.js.map +1 -1
  72. package/dist/esm/deprecated/components/Table/Table.d.ts.map +1 -1
  73. package/dist/esm/deprecated/components/Table/Table.js +2 -3
  74. package/dist/esm/deprecated/components/Table/Table.js.map +1 -1
  75. package/dist/esm/deprecated/components/Table/base/body-row.js.map +1 -1
  76. package/dist/esm/deprecated/components/Table/base/body.js.map +1 -1
  77. package/dist/esm/deprecated/components/Table/base/header-row.js.map +1 -1
  78. package/dist/esm/deprecated/components/Table/base/resolve-row-key.js.map +1 -1
  79. package/dist/esm/index.d.ts +0 -1
  80. package/dist/esm/index.d.ts.map +1 -1
  81. package/dist/esm/index.js +0 -1
  82. package/dist/esm/index.js.map +1 -1
  83. package/dist/esm/test-helpers/data-helpers.js.map +1 -1
  84. package/dist/js/components/Table/ActionsColumn.d.ts +2 -0
  85. package/dist/js/components/Table/ActionsColumn.d.ts.map +1 -1
  86. package/dist/js/components/Table/ActionsColumn.js +4 -5
  87. package/dist/js/components/Table/ActionsColumn.js.map +1 -1
  88. package/dist/js/components/Table/CollapseColumn.js.map +1 -1
  89. package/dist/js/components/Table/DraggableCell.js.map +1 -1
  90. package/dist/js/components/Table/EditColumn.js.map +1 -1
  91. package/dist/js/components/Table/EditableSelectInputCell.d.ts +3 -4
  92. package/dist/js/components/Table/EditableSelectInputCell.d.ts.map +1 -1
  93. package/dist/js/components/Table/EditableSelectInputCell.js +9 -5
  94. package/dist/js/components/Table/EditableSelectInputCell.js.map +1 -1
  95. package/dist/js/components/Table/EditableTextCell.js +1 -1
  96. package/dist/js/components/Table/EditableTextCell.js.map +1 -1
  97. package/dist/js/components/Table/FavoritesCell.js.map +1 -1
  98. package/dist/js/components/Table/HeaderCellInfoWrapper.js.map +1 -1
  99. package/dist/js/components/Table/RowWrapper.js +0 -1
  100. package/dist/js/components/Table/RowWrapper.js.map +1 -1
  101. package/dist/js/components/Table/SelectColumn.js +1 -1
  102. package/dist/js/components/Table/SelectColumn.js.map +1 -1
  103. package/dist/js/components/Table/SortColumn.js +1 -2
  104. package/dist/js/components/Table/SortColumn.js.map +1 -1
  105. package/dist/js/components/Table/Table.d.ts.map +1 -1
  106. package/dist/js/components/Table/Table.js +3 -3
  107. package/dist/js/components/Table/Table.js.map +1 -1
  108. package/dist/js/components/Table/TableText.js +2 -2
  109. package/dist/js/components/Table/TableText.js.map +1 -1
  110. package/dist/js/components/Table/TableTypes.d.ts +26 -25
  111. package/dist/js/components/Table/TableTypes.d.ts.map +1 -1
  112. package/dist/js/components/Table/TableTypes.js +2 -6
  113. package/dist/js/components/Table/TableTypes.js.map +1 -1
  114. package/dist/js/components/Table/Td.d.ts +1 -1
  115. package/dist/js/components/Table/Td.js +3 -3
  116. package/dist/js/components/Table/Td.js.map +1 -1
  117. package/dist/js/components/Table/Th.d.ts +8 -0
  118. package/dist/js/components/Table/Th.d.ts.map +1 -1
  119. package/dist/js/components/Table/Th.js +10 -6
  120. package/dist/js/components/Table/Th.js.map +1 -1
  121. package/dist/js/components/Table/Tr.js.map +1 -1
  122. package/dist/js/components/Table/base/columns-are-equal.js.map +1 -1
  123. package/dist/js/components/Table/base/evaluate-transforms.js.map +1 -1
  124. package/dist/js/components/Table/base/merge-props.js.map +1 -1
  125. package/dist/js/components/Table/base/provider.js.map +1 -1
  126. package/dist/js/components/Table/base/types.d.ts +16 -17
  127. package/dist/js/components/Table/base/types.d.ts.map +1 -1
  128. package/dist/js/components/Table/base/types.js +0 -4
  129. package/dist/js/components/Table/base/types.js.map +1 -1
  130. package/dist/js/components/Table/utils/decorators/compoundExpand.js.map +1 -1
  131. package/dist/js/components/Table/utils/decorators/editable.js.map +1 -1
  132. package/dist/js/components/Table/utils/decorators/favoritable.js.map +1 -1
  133. package/dist/js/components/Table/utils/decorators/selectable.js +1 -1
  134. package/dist/js/components/Table/utils/decorators/selectable.js.map +1 -1
  135. package/dist/js/components/Table/utils/decorators/sortable.js.map +1 -1
  136. package/dist/js/components/Table/utils/decorators/treeRow.d.ts +1 -1
  137. package/dist/js/components/Table/utils/decorators/treeRow.js.map +1 -1
  138. package/dist/js/components/Table/utils/headerUtils.js.map +1 -1
  139. package/dist/js/components/Table/utils/utils.js.map +1 -1
  140. package/dist/js/demos/DashboardHeader.d.ts +8 -0
  141. package/dist/js/demos/DashboardHeader.d.ts.map +1 -0
  142. package/dist/js/demos/DashboardHeader.js +82 -0
  143. package/dist/js/demos/DashboardHeader.js.map +1 -0
  144. package/dist/js/demos/DashboardWrapper.d.ts +85 -0
  145. package/dist/js/demos/DashboardWrapper.d.ts.map +1 -0
  146. package/dist/js/demos/DashboardWrapper.js +45 -0
  147. package/dist/js/demos/DashboardWrapper.js.map +1 -0
  148. package/dist/js/demos/index.d.ts +2 -0
  149. package/dist/js/demos/index.d.ts.map +1 -1
  150. package/dist/js/demos/index.js +2 -0
  151. package/dist/js/demos/index.js.map +1 -1
  152. package/dist/js/deprecated/components/Table/Body.d.ts +1 -1
  153. package/dist/js/deprecated/components/Table/Body.d.ts.map +1 -1
  154. package/dist/js/deprecated/components/Table/Body.js.map +1 -1
  155. package/dist/js/deprecated/components/Table/BodyCell.js +0 -1
  156. package/dist/js/deprecated/components/Table/BodyCell.js.map +1 -1
  157. package/dist/js/deprecated/components/Table/BodyWrapper.js.map +1 -1
  158. package/dist/js/deprecated/components/Table/Table.d.ts.map +1 -1
  159. package/dist/js/deprecated/components/Table/Table.js +9 -10
  160. package/dist/js/deprecated/components/Table/Table.js.map +1 -1
  161. package/dist/js/deprecated/components/Table/base/body-row.js.map +1 -1
  162. package/dist/js/deprecated/components/Table/base/body.js.map +1 -1
  163. package/dist/js/deprecated/components/Table/base/header-row.js.map +1 -1
  164. package/dist/js/deprecated/components/Table/base/resolve-row-key.js.map +1 -1
  165. package/dist/js/index.d.ts +0 -1
  166. package/dist/js/index.d.ts.map +1 -1
  167. package/dist/js/index.js +0 -1
  168. package/dist/js/index.js.map +1 -1
  169. package/dist/js/test-helpers/data-helpers.js.map +1 -1
  170. package/dist/umd/assets/output-ClO4SC2A.css +28024 -0
  171. package/dist/umd/react-table.min.js +4 -5
  172. package/package.json +7 -11
  173. package/rollup.config.mjs +8 -0
  174. package/single-packages.config.json +3 -6
  175. package/src/components/Table/ActionsColumn.tsx +35 -31
  176. package/src/components/Table/EditableSelectInputCell.tsx +16 -11
  177. package/src/components/Table/EditableTextCell.tsx +1 -1
  178. package/src/components/Table/Table.tsx +4 -4
  179. package/src/components/Table/TableTypes.tsx +9 -8
  180. package/src/components/Table/Td.tsx +5 -5
  181. package/src/components/Table/Th.tsx +24 -6
  182. package/src/components/Table/__tests__/Th.test.tsx +31 -0
  183. package/src/components/Table/__tests__/__snapshots__/RowWrapper.test.tsx.snap +4 -4
  184. package/src/components/Table/base/types.tsx +6 -7
  185. package/src/components/Table/examples/Table.md +35 -4
  186. package/src/components/Table/examples/TableActions.tsx +2 -2
  187. package/src/components/Table/examples/TableActionsOverflow.tsx +3 -4
  188. package/src/components/Table/examples/TableCompoundExpandable.tsx +1 -1
  189. package/src/components/Table/examples/TableDraggable.tsx +19 -16
  190. package/src/components/Table/examples/TableEmptyState.tsx +1 -8
  191. package/src/components/Table/examples/TableExpandable.tsx +1 -1
  192. package/src/components/Table/examples/TableMisc.tsx +2 -2
  193. package/src/components/Table/examples/TableNestedExpandable.tsx +1 -1
  194. package/src/components/Table/examples/TableNestedHeaders.tsx +4 -7
  195. package/src/components/Table/examples/TableNestedStickyHeader.tsx +4 -10
  196. package/src/components/Table/examples/TableNestedTableExpandable.tsx +1 -1
  197. package/src/components/Table/examples/TableSelectable.tsx +1 -0
  198. package/src/components/Table/examples/TableSelectableRadio.tsx +1 -1
  199. package/src/components/Table/examples/TableSortableCustom.tsx +2 -3
  200. package/src/components/Table/examples/TableStickyColumnsAndHeader.tsx +1 -1
  201. package/src/components/Table/examples/TableStripedExpandable.tsx +1 -1
  202. package/src/components/Table/utils/__snapshots__/transformers.test.tsx.snap +2 -2
  203. package/src/components/Table/utils/decorators/selectable.tsx +1 -1
  204. package/src/components/Table/utils/transformers.test.tsx +4 -7
  205. package/src/demos/DashboardHeader.tsx +198 -0
  206. package/src/demos/DashboardWrapper.tsx +199 -0
  207. package/src/demos/Table.md +28 -5
  208. package/src/demos/assets/avatarImg.svg +18 -0
  209. package/src/demos/assets/index.d.ts +4 -0
  210. package/src/demos/assets/pf-logo.svg +28 -0
  211. package/src/demos/examples/TableBulkSelect.tsx +2 -2
  212. package/src/demos/examples/TableColumnManagement.tsx +1 -1
  213. package/src/demos/examples/TableColumnManagementWithDraggable.tsx +2 -6
  214. package/src/demos/examples/TableCompact.tsx +8 -3
  215. package/src/demos/examples/TableCompoundExpansion.tsx +4 -3
  216. package/src/demos/examples/TableEmptyStateDefault.tsx +7 -9
  217. package/src/demos/examples/TableEmptyStateError.tsx +8 -18
  218. package/src/demos/examples/TableEmptyStateLoading.tsx +3 -13
  219. package/src/demos/examples/TableExpandCollapseAll.tsx +3 -2
  220. package/src/demos/examples/TableFilterable.tsx +1 -8
  221. package/src/demos/examples/TableSortableResponsive.tsx +6 -8
  222. package/src/demos/examples/TableStaticBottomPagination.tsx +8 -3
  223. package/src/demos/examples/TableStickyFirstColumn.tsx +1 -1
  224. package/src/demos/examples/TableStickyHeader.tsx +1 -1
  225. package/src/demos/index.ts +2 -0
  226. package/src/deprecated/components/Table/Table.tsx +2 -3
  227. package/src/deprecated/components/Table/__tests__/__snapshots__/Table.test.tsx.snap +2225 -2143
  228. package/src/deprecated/components/Table/examples/LegacyTableEmptyState.tsx +6 -8
  229. package/src/deprecated/components/Table/examples/LegacyTableMisc.tsx +2 -2
  230. package/src/deprecated/components/Table/examples/LegacyTableSortableCustom.tsx +2 -3
  231. package/src/deprecated/components/Table/examples/Table.md +48 -41
  232. package/src/index.ts +0 -1
  233. package/rollup.config.js +0 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-table",
3
- "version": "6.0.0-alpha.7",
3
+ "version": "6.0.0-alpha.70",
4
4
  "description": "This library provides a set of React table components for use with the PatternFly 4",
5
5
  "main": "dist/js/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -40,20 +40,16 @@
40
40
  "subpaths": "node ../../scripts/exportSubpaths.js --config subpaths.config.json"
41
41
  },
42
42
  "dependencies": {
43
- "@patternfly/react-core": "^6.0.0-alpha.7",
44
- "@patternfly/react-icons": "^6.0.0-alpha.5",
45
- "@patternfly/react-styles": "^6.0.0-alpha.5",
46
- "@patternfly/react-tokens": "^6.0.0-alpha.5",
43
+ "@patternfly/react-core": "^6.0.0-alpha.69",
44
+ "@patternfly/react-icons": "^6.0.0-alpha.24",
45
+ "@patternfly/react-styles": "^6.0.0-alpha.24",
46
+ "@patternfly/react-tokens": "^6.0.0-alpha.24",
47
47
  "lodash": "^4.17.19",
48
- "tslib": "^2.5.0"
49
- },
50
- "devDependencies": {
51
- "rimraf": "^2.6.2",
52
- "typescript": "^4.7.4"
48
+ "tslib": "^2.6.2"
53
49
  },
54
50
  "peerDependencies": {
55
51
  "react": "^17 || ^18",
56
52
  "react-dom": "^17 || ^18"
57
53
  },
58
- "gitHead": "e9117354af65f496fe3166e6faea7b8721f08b62"
54
+ "gitHead": "c9886cacdd291d0ead56bd43ff15a49880a7eb3a"
59
55
  }
@@ -0,0 +1,8 @@
1
+ // @ts-check
2
+ import baseConfig from '../rollup.base.mjs';
3
+ import pkg from './package.json' with { type: 'json' };
4
+
5
+ export default baseConfig({
6
+ packageName: pkg.name.replace('@patternfly/', ''),
7
+ name: 'PatternFlyTable'
8
+ });
@@ -1,7 +1,4 @@
1
1
  {
2
- "packageName": "@patternfly/react-table",
3
- "exclude": [
4
- "dist/esm/deprecated/index.js",
5
- "dist/esm/next/index.js"
6
- ]
7
- }
2
+ "packageName": "@patternfly/react-table",
3
+ "exclude": ["dist/esm/deprecated/index.js", "dist/esm/next/index.js"]
4
+ }
@@ -30,6 +30,8 @@ export interface ActionsColumnProps extends Omit<React.HTMLProps<HTMLElement>, '
30
30
  innerRef?: React.Ref<any>;
31
31
  /** Ref to forward to the first item in the popup menu */
32
32
  firstActionItemRef?: React.Ref<HTMLButtonElement>;
33
+ /** Flag indicating that the dropdown's onOpenChange callback should not be called. */
34
+ isOnOpenChangeDisabled?: boolean;
33
35
  }
34
36
 
35
37
  const ActionsColumnBase: React.FunctionComponent<ActionsColumnProps> = ({
@@ -44,6 +46,7 @@ const ActionsColumnBase: React.FunctionComponent<ActionsColumnProps> = ({
44
46
  },
45
47
  innerRef,
46
48
  firstActionItemRef,
49
+ isOnOpenChangeDisabled = false,
47
50
  ...props
48
51
  }: ActionsColumnProps) => {
49
52
  const [isOpen, setIsOpen] = React.useState(false);
@@ -91,7 +94,7 @@ const ActionsColumnBase: React.FunctionComponent<ActionsColumnProps> = ({
91
94
 
92
95
  <Dropdown
93
96
  isOpen={isOpen}
94
- onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}
97
+ onOpenChange={!isOnOpenChangeDisabled ? (isOpen: boolean) => setIsOpen(isOpen) : undefined}
95
98
  toggle={(toggleRef: any) =>
96
99
  actionsToggle ? (
97
100
  actionsToggle({ onToggle, isOpen, isDisabled, toggleRef })
@@ -103,9 +106,8 @@ const ActionsColumnBase: React.FunctionComponent<ActionsColumnProps> = ({
103
106
  isExpanded={isOpen}
104
107
  isDisabled={isDisabled}
105
108
  variant="plain"
106
- >
107
- <EllipsisVIcon />
108
- </MenuToggle>
109
+ icon={<EllipsisVIcon />}
110
+ />
109
111
  )
110
112
  }
111
113
  {...(rowData && rowData.actionProps)}
@@ -116,35 +118,37 @@ const ActionsColumnBase: React.FunctionComponent<ActionsColumnProps> = ({
116
118
  <DropdownList>
117
119
  {items
118
120
  .filter((item) => !item.isOutsideDropdown)
119
- .map(({ title, itemKey, onClick, tooltipProps, isSeparator, ...props }, index) => {
120
- if (isSeparator) {
121
- return <Divider key={itemKey || index} data-key={itemKey || index} />;
122
- }
123
- const item = (
124
- <DropdownItem
125
- onClick={(event: any) => {
126
- onActionClick(event, onClick);
127
- onToggle();
128
- }}
129
- {...props}
130
- key={itemKey || index}
131
- data-key={itemKey || index}
132
- ref={index === 0 ? firstActionItemRef : undefined}
133
- >
134
- {title}
135
- </DropdownItem>
136
- );
137
-
138
- if (tooltipProps?.content) {
139
- return (
140
- <Tooltip key={itemKey || index} {...tooltipProps}>
141
- {item}
142
- </Tooltip>
121
+ .map(
122
+ ({ title, itemKey, onClick, tooltipProps, isSeparator, shouldCloseOnClick = true, ...props }, index) => {
123
+ if (isSeparator) {
124
+ return <Divider key={itemKey || index} data-key={itemKey || index} />;
125
+ }
126
+ const item = (
127
+ <DropdownItem
128
+ onClick={(event: any) => {
129
+ onActionClick(event, onClick);
130
+ shouldCloseOnClick && onToggle();
131
+ }}
132
+ {...props}
133
+ key={itemKey || index}
134
+ data-key={itemKey || index}
135
+ ref={index === 0 ? firstActionItemRef : undefined}
136
+ >
137
+ {title}
138
+ </DropdownItem>
143
139
  );
144
- } else {
145
- return item;
140
+
141
+ if (tooltipProps?.content) {
142
+ return (
143
+ <Tooltip key={itemKey || index} {...tooltipProps}>
144
+ {item}
145
+ </Tooltip>
146
+ );
147
+ } else {
148
+ return item;
149
+ }
146
150
  }
147
- })}
151
+ )}
148
152
  </DropdownList>
149
153
  </Dropdown>
150
154
  </React.Fragment>
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { css } from '@patternfly/react-styles';
3
- import { Select, SelectOptionObject } from '@patternfly/react-core/dist/esm/deprecated/components/Select';
3
+ import { Select, SelectList } from '@patternfly/react-core/dist/esm/components/Select';
4
+ import { MenuToggle } from '@patternfly/react-core/dist/esm/components/MenuToggle';
4
5
  import inlineStyles from '@patternfly/react-styles/css/components/InlineEdit/inline-edit';
5
6
  import formStyles from '@patternfly/react-styles/css/components/Form/form';
6
7
  import { EditableSelectInputProps } from './base/types';
@@ -15,7 +16,7 @@ export interface IEditableSelectInputCell extends Omit<React.HTMLProps<HTMLEleme
15
16
  /** Event handler which fires when user selects an option in this cell */
16
17
  onSelect: (
17
18
  event: React.MouseEvent | React.ChangeEvent,
18
- newValue: string | SelectOptionObject,
19
+ newValue: any | any[],
19
20
  rowIndex: number,
20
21
  cellIndex: number,
21
22
  isPlaceholder?: boolean
@@ -25,11 +26,11 @@ export interface IEditableSelectInputCell extends Omit<React.HTMLProps<HTMLEleme
25
26
  /** Flag indicating the select input is disabled */
26
27
  isDisabled?: boolean;
27
28
  /** Current selected options to display as the read only value of the table cell */
28
- selections?: string | SelectOptionObject | (string | SelectOptionObject)[];
29
+ selections?: any | any[];
29
30
  /** Flag indicating the select menu is open */
30
31
  isOpen?: boolean;
31
32
  /** Event handler which fires when the select toggle is toggled */
32
- onToggle?: (event: React.MouseEvent | React.ChangeEvent | React.KeyboardEvent | Event, isExpanded: boolean) => void;
33
+ onToggle?: (event: React.MouseEvent | undefined) => void;
33
34
  /** Event handler which fires when the user clears the selections */
34
35
  clearSelection?: (event: React.MouseEvent, rowIndex: number, cellIndex: number) => void;
35
36
  }
@@ -48,10 +49,10 @@ export const EditableSelectInputCell: React.FunctionComponent<IEditableSelectInp
48
49
  }: IEditableSelectInputCell) => {
49
50
  const onSelectHandler = (
50
51
  event: React.MouseEvent | React.ChangeEvent,
51
- newValue: string | SelectOptionObject,
52
- isPlaceholder: boolean
52
+ newValue: any | any[]
53
+ // isPlaceholder: boolean
53
54
  ) => {
54
- onSelect(event, newValue, rowIndex, cellIndex, isPlaceholder);
55
+ onSelect(event, newValue, rowIndex, cellIndex);
55
56
  };
56
57
 
57
58
  const onClear = (event: React.MouseEvent) => {
@@ -64,10 +65,14 @@ export const EditableSelectInputCell: React.FunctionComponent<IEditableSelectInp
64
65
  onSelect={onSelectHandler}
65
66
  {...(clearSelection && { onClear })}
66
67
  isOpen={isOpen}
67
- onToggle={onToggle}
68
- selections={selections}
68
+ selected={selections}
69
+ toggle={(toggleRef: any) => (
70
+ <MenuToggle ref={toggleRef} onClick={onToggle} isExpanded={isOpen}>
71
+ {isOpen ? 'Expanded' : 'Collapsed'}
72
+ </MenuToggle>
73
+ )}
69
74
  >
70
- {options}
75
+ <SelectList>{options}</SelectList>
71
76
  </Select>
72
77
  );
73
78
 
@@ -76,7 +81,7 @@ export const EditableSelectInputCell: React.FunctionComponent<IEditableSelectInp
76
81
  <div className={inlineStyles.inlineEditValue}>{Array.isArray(value) ? value.join(', ') : value}</div>
77
82
  <div className={inlineStyles.inlineEditInput}>
78
83
  {select}
79
- <div className={css(formStyles.formHelperText, formStyles.modifiers.error)} aria-live="polite">
84
+ <div className={css(formStyles.formHelperText)} aria-live="polite">
80
85
  {props.errorText}
81
86
  </div>
82
87
  </div>
@@ -49,7 +49,7 @@ export const EditableTextCell: React.FunctionComponent<IEditableTextCell> = ({
49
49
  }}
50
50
  aria-label={inputAriaLabel}
51
51
  />
52
- <div className={css(formStyles.formHelperText, formStyles.modifiers.error)} aria-live="polite">
52
+ <div className={css(formStyles.formHelperText)} aria-live="polite">
53
53
  {props.errorText}
54
54
  </div>
55
55
  </div>
@@ -5,7 +5,7 @@ import stylesTreeView from '@patternfly/react-styles/css/components/Table/table-
5
5
  import { css } from '@patternfly/react-styles';
6
6
  import { toCamel } from './utils';
7
7
  import { IVisibility } from './utils/decorators/classNames';
8
- import { useOUIAProps, OUIAProps, handleArrows, setTabIndex } from '@patternfly/react-core';
8
+ import { useOUIAProps, OUIAProps, handleArrows, setTabIndex, KeyTypes } from '@patternfly/react-core';
9
9
  import { TableGridBreakpoint, TableVariant } from './TableTypes';
10
10
 
11
11
  export interface BaseCellProps {
@@ -124,7 +124,7 @@ const TableBase: React.FunctionComponent<TableProps> = ({
124
124
  setTableCaption(
125
125
  <caption>
126
126
  {selectableRowCaptionText}
127
- <div className="pf-v5-screen-reader">
127
+ <div className="pf-v6-screen-reader">
128
128
  This table has selectable rows. It can be navigated by row using tab, and each row can be selected using
129
129
  space or enter.
130
130
  </div>
@@ -132,7 +132,7 @@ const TableBase: React.FunctionComponent<TableProps> = ({
132
132
  );
133
133
  } else {
134
134
  setTableCaption(
135
- <caption className="pf-v5-screen-reader">
135
+ <caption className="pf-v6-screen-reader">
136
136
  This table has selectable rows. It can be navigated by row using tab, and each row can be selected using space
137
137
  or enter.
138
138
  </caption>
@@ -169,7 +169,7 @@ const TableBase: React.FunctionComponent<TableProps> = ({
169
169
  const rows = (Array.from(tableRef.current.querySelectorAll('tbody tr')) as Element[]).filter(
170
170
  (el) => !el.classList.contains('pf-m-disabled') && !(el as HTMLElement).hidden
171
171
  );
172
- if (key === 'Space' || key === 'Enter') {
172
+ if (key === KeyTypes.Space || key === KeyTypes.Enter) {
173
173
  (activeElement as HTMLElement).click();
174
174
  event.preventDefault();
175
175
  }
@@ -1,7 +1,6 @@
1
1
  import { formatterValueType, ColumnType, RowType, RowKeyType, HeaderType } from './base/types';
2
2
  import { SortByDirection } from './SortColumn';
3
3
  import { DropdownItemProps } from '@patternfly/react-core/dist/esm/components/Dropdown';
4
- import { DropdownDirection, DropdownPosition } from '@patternfly/react-core/dist/esm/deprecated/components/Dropdown';
5
4
  import * as React from 'react';
6
5
  import { CustomActionsToggleProps } from './ActionsColumn';
7
6
  import { ButtonProps } from '@patternfly/react-core/dist/esm/components/Button';
@@ -102,8 +101,8 @@ export interface IColumn {
102
101
  rowLabeledBy?: string;
103
102
  expandId?: string;
104
103
  contentId?: string;
105
- dropdownPosition?: DropdownPosition;
106
- dropdownDirection?: DropdownDirection;
104
+ dropdownPosition?: 'right' | 'left';
105
+ dropdownDirection?: 'up' | 'down';
107
106
  menuAppendTo?: HTMLElement | (() => HTMLElement) | 'inline' | 'parent';
108
107
  actionsToggle?: (props: CustomActionsToggleProps) => React.ReactNode;
109
108
  actionsPopperProps?: any;
@@ -138,7 +137,7 @@ export interface IExtra extends IExtraData {
138
137
  }
139
138
 
140
139
  export type IFormatterValueType = formatterValueType & {
141
- title?: string | React.ReactNode;
140
+ title?: React.ReactNode;
142
141
  props?: any;
143
142
  };
144
143
 
@@ -157,7 +156,7 @@ export interface IAction extends Omit<DropdownItemProps, 'title' | 'onClick'>, P
157
156
  /** Key of actions menu item */
158
157
  itemKey?: string;
159
158
  /** Content to display in the actions menu item */
160
- title?: string | React.ReactNode;
159
+ title?: React.ReactNode;
161
160
  /** Render item as aria-disabled option */
162
161
  isAriaDisabled?: boolean;
163
162
  /** Props for adding a tooltip to a menu item. This is used to display tooltip when hovered over the item */
@@ -166,6 +165,8 @@ export interface IAction extends Omit<DropdownItemProps, 'title' | 'onClick'>, P
166
165
  onClick?: (event: React.MouseEvent, rowIndex: number, rowData: IRowData, extraData: IExtraData) => void;
167
166
  /** Flag indicating this action should be placed outside the actions menu, beside the toggle */
168
167
  isOutsideDropdown?: boolean;
168
+ /** Flag indicating whether the actions dropdown should close after an item is clicked. */
169
+ shouldCloseOnClick?: boolean;
169
170
  }
170
171
 
171
172
  export interface ISeparator extends IAction {
@@ -189,7 +190,7 @@ export interface decoratorReturnType {
189
190
  textCenter?: boolean;
190
191
  component?: string;
191
192
  isVisible?: boolean;
192
- title?: string | React.ReactNode;
193
+ title?: React.ReactNode;
193
194
  props?: any;
194
195
  scope?: string;
195
196
  parentId?: number;
@@ -203,7 +204,7 @@ export type IFormatter = (data?: IFormatterValueType, extra?: IExtra) => formatt
203
204
 
204
205
  export interface ICell {
205
206
  /* cell contents */
206
- title?: string | React.ReactNode;
207
+ title?: React.ReactNode;
207
208
  /** transformations applied to the header cell */
208
209
  transforms?: ITransform[];
209
210
  /** transformations applied to the cells within the column's body */
@@ -227,7 +228,7 @@ export interface ICell {
227
228
  export type RowCellContent<T = any> = (value?: string, rowIndex?: number, cellIndex?: number, props?: T) => void;
228
229
 
229
230
  export interface IRowCell<T = any> {
230
- title?: string | React.ReactNode | RowCellContent<T>;
231
+ title?: React.ReactNode | RowCellContent<T>;
231
232
  props?: T;
232
233
  formatters?: IFormatter[];
233
234
  }
@@ -30,8 +30,8 @@ import {
30
30
  TdTreeRowType
31
31
  } from './base/types';
32
32
  import cssStickyCellMinWidth from '@patternfly/react-tokens/dist/esm/c_table__sticky_cell_MinWidth';
33
- import cssStickyCellLeft from '@patternfly/react-tokens/dist/esm/c_table__sticky_cell_Left';
34
- import cssStickyCellRight from '@patternfly/react-tokens/dist/esm/c_table__sticky_cell_Right';
33
+ import cssStickyCellInlineStart from '@patternfly/react-tokens/dist/esm/c_table__sticky_cell_InsetInlineStart';
34
+ import cssStickyCellInlineEnd from '@patternfly/react-tokens/dist/esm/c_table__sticky_cell_InsetInlineEnd';
35
35
 
36
36
  export interface TdProps extends BaseCellProps, Omit<React.HTMLProps<HTMLTableDataCellElement>, 'onSelect' | 'width'> {
37
37
  /**
@@ -55,7 +55,7 @@ export interface TdProps extends BaseCellProps, Omit<React.HTMLProps<HTMLTableDa
55
55
  draggableRow?: TdDraggableType;
56
56
  /** True to remove padding */
57
57
  noPadding?: boolean;
58
- /** Applies pf-v5-c-table__action to td */
58
+ /** Applies pf-v6-c-table__action to td */
59
59
  isActionCell?: boolean;
60
60
  /**
61
61
  * Tooltip to show on the body cell.
@@ -294,8 +294,8 @@ const TdBase: React.FunctionComponent<TdProps> = ({
294
294
  {...(isStickyColumn && {
295
295
  style: {
296
296
  [cssStickyCellMinWidth.name]: stickyMinWidth ? stickyMinWidth : undefined,
297
- [cssStickyCellLeft.name]: stickyLeftOffset ? stickyLeftOffset : 0,
298
- [cssStickyCellRight.name]: stickyRightOffset ? stickyRightOffset : 0,
297
+ [cssStickyCellInlineStart.name]: stickyLeftOffset ? stickyLeftOffset : 0,
298
+ [cssStickyCellInlineEnd.name]: stickyRightOffset ? stickyRightOffset : 0,
299
299
  ...props.style
300
300
  } as React.CSSProperties
301
301
  })}
@@ -10,8 +10,8 @@ import { Tooltip, TooltipProps } from '@patternfly/react-core/dist/esm/component
10
10
  import { BaseCellProps } from './Table';
11
11
  import { IFormatterValueType, IColumn } from './TableTypes';
12
12
  import cssStickyCellMinWidth from '@patternfly/react-tokens/dist/esm/c_table__sticky_cell_MinWidth';
13
- import cssStickyCellLeft from '@patternfly/react-tokens/dist/esm/c_table__sticky_cell_Left';
14
- import cssStickyCellRight from '@patternfly/react-tokens/dist/esm/c_table__sticky_cell_Right';
13
+ import cssStickyCellInlineStart from '@patternfly/react-tokens/dist/esm/c_table__sticky_cell_InsetInlineStart';
14
+ import cssStickyCellInlineEnd from '@patternfly/react-tokens/dist/esm/c_table__sticky_cell_InsetInlineEnd';
15
15
 
16
16
  export interface ThProps
17
17
  extends BaseCellProps,
@@ -56,6 +56,14 @@ export interface ThProps
56
56
  stickyRightOffset?: string;
57
57
  /** Indicates the <th> is part of a subheader of a nested header */
58
58
  isSubheader?: boolean;
59
+ /** Visually hidden text accessible only via assistive technologies. This must be passed in if the
60
+ * th is intended to be visually empty, and must be conveyed as a column header text.
61
+ */
62
+ screenReaderText?: string;
63
+ /** Provides an accessible name to the th. This should only be passed in when the th contains only non-text
64
+ * content, such as a "select all" checkbox or "expand all" toggle.
65
+ */
66
+ 'aria-label'?: string;
59
67
  }
60
68
 
61
69
  const ThBase: React.FunctionComponent<ThProps> = ({
@@ -83,8 +91,17 @@ const ThBase: React.FunctionComponent<ThProps> = ({
83
91
  stickyLeftOffset,
84
92
  stickyRightOffset,
85
93
  isSubheader = false,
94
+ screenReaderText,
95
+ 'aria-label': ariaLabel,
86
96
  ...props
87
97
  }: ThProps) => {
98
+ if (!children && !screenReaderText && !ariaLabel) {
99
+ // eslint-disable-next-line no-console
100
+ console.warn(
101
+ 'Th: Table headers must have an accessible name. If the Th is intended to be visually empty, pass in screenReaderText. If the Th contains only non-text, interactive content such as a checkbox or expand toggle, pass in an aria-label.'
102
+ );
103
+ }
104
+
88
105
  const [showTooltip, setShowTooltip] = React.useState(false);
89
106
  const [truncated, setTruncated] = React.useState(false);
90
107
  const cellRef = innerRef ? innerRef : React.createRef();
@@ -188,8 +205,9 @@ const ThBase: React.FunctionComponent<ThProps> = ({
188
205
  onBlur={() => setShowTooltip(false)}
189
206
  data-label={dataLabel}
190
207
  onMouseEnter={tooltip !== null ? onMouseEnter : onMouseEnterProp}
191
- scope={component === 'th' && children ? scope : null}
208
+ scope={component === 'th' ? scope : null}
192
209
  ref={cellRef}
210
+ aria-label={ariaLabel}
193
211
  className={css(
194
212
  styles.tableTh,
195
213
  className,
@@ -206,13 +224,13 @@ const ThBase: React.FunctionComponent<ThProps> = ({
206
224
  {...(isStickyColumn && {
207
225
  style: {
208
226
  [cssStickyCellMinWidth.name]: stickyMinWidth ? stickyMinWidth : undefined,
209
- [cssStickyCellLeft.name]: stickyLeftOffset ? stickyLeftOffset : 0,
210
- [cssStickyCellRight.name]: stickyRightOffset ? stickyRightOffset : 0,
227
+ [cssStickyCellInlineStart.name]: stickyLeftOffset ? stickyLeftOffset : 0,
228
+ [cssStickyCellInlineEnd.name]: stickyRightOffset ? stickyRightOffset : 0,
211
229
  ...props.style
212
230
  } as React.CSSProperties
213
231
  })}
214
232
  >
215
- {transformedChildren}
233
+ {transformedChildren || (screenReaderText && <span className="pf-v5-screen-reader">{screenReaderText}</span>)}
216
234
  </MergedComponent>
217
235
  );
218
236
 
@@ -0,0 +1,31 @@
1
+ import * as React from 'react';
2
+ import { render, screen } from '@testing-library/react';
3
+ import { Th } from '../Th';
4
+
5
+ test('Does not render with aria-label by default', () => {
6
+ render(<Th />);
7
+ expect(screen.getByRole('columnheader')).not.toHaveAccessibleName();
8
+ });
9
+
10
+ test('Renders with aria-label when passed in', () => {
11
+ render(<Th aria-label="Test" />);
12
+ expect(screen.getByRole('columnheader')).toHaveAccessibleName('Test');
13
+ });
14
+
15
+ test('Does not render with screen reader text by default', () => {
16
+ render(<Th />);
17
+
18
+ expect(screen.getByRole('columnheader')).toBeEmptyDOMElement();
19
+ });
20
+
21
+ test('Does not render with screen reader text when children are passed in', () => {
22
+ render(<Th screenReaderText="Test">Heading label</Th>);
23
+
24
+ expect(screen.getByRole('columnheader')).not.toHaveTextContent('Test');
25
+ });
26
+
27
+ test('Renders with screen reader text when screenReaderText is passed in', () => {
28
+ render(<Th screenReaderText="Test" />);
29
+
30
+ expect(screen.getByRole('columnheader')).toHaveTextContent('Test');
31
+ });
@@ -5,9 +5,9 @@ exports[`RowWrapper renders correctly 1`] = `
5
5
  <table>
6
6
  <tbody>
7
7
  <tr
8
- class="pf-v5-c-table__tr"
8
+ class="pf-v6-c-table__tr"
9
9
  data-ouia-component-id="OUIA-Generated-TableRow-1"
10
- data-ouia-component-type="PF5/TableRow"
10
+ data-ouia-component-type="PF6/TableRow"
11
11
  data-ouia-safe="true"
12
12
  />
13
13
  </tbody>
@@ -20,9 +20,9 @@ exports[`RowWrapper renders expanded correctly 1`] = `
20
20
  <table>
21
21
  <tbody>
22
22
  <tr
23
- class="pf-v5-c-table__tr pf-v5-c-table__expandable-row pf-m-expanded"
23
+ class="pf-v6-c-table__tr pf-v6-c-table__expandable-row pf-m-expanded"
24
24
  data-ouia-component-id="OUIA-Generated-TableRow-2"
25
- data-ouia-component-type="PF5/TableRow"
25
+ data-ouia-component-type="PF6/TableRow"
26
26
  data-ouia-safe="true"
27
27
  />
28
28
  </tbody>
@@ -8,8 +8,7 @@
8
8
  import * as React from 'react';
9
9
  import { TooltipProps } from '@patternfly/react-core/dist/esm/components/Tooltip';
10
10
  import { PopoverProps } from '@patternfly/react-core/dist/esm/components/Popover';
11
- import { DropdownPosition, DropdownDirection } from '@patternfly/react-core/dist/esm/deprecated/components/Dropdown';
12
- import { SelectOptionObject, SelectProps } from '@patternfly/react-core/dist/esm/deprecated/components/Select';
11
+ import { SelectProps } from '@patternfly/react-core/dist/esm/components/Select';
13
12
  import { Table } from '../Table';
14
13
  import { Thead } from '../Thead';
15
14
  import { Tbody } from '../Tbody';
@@ -61,9 +60,9 @@ export interface TdActionsType {
61
60
  /** Whether the actions are disabled */
62
61
  isDisabled?: boolean;
63
62
  /** Actions dropdown position */
64
- dropdownPosition?: DropdownPosition;
63
+ dropdownPosition?: 'right' | 'left';
65
64
  /** Actions dropdown direction */
66
- dropdownDirection?: DropdownDirection;
65
+ dropdownDirection?: 'up' | 'down';
67
66
  /** The container to append the dropdown menu to. Defaults to 'inline'.
68
67
  * If your menu is being cut off you can append it to an element higher up the DOM tree.
69
68
  * Some examples:
@@ -286,11 +285,11 @@ export interface EditableSelectInputProps {
286
285
  value: string | string[];
287
286
  /** Flag controlling isOpen state of select */
288
287
  isSelectOpen: boolean;
289
- /** String or SelectOptionObject, or array of strings or SelectOptionObjects representing current selections */
290
- selected: string | SelectOptionObject | (string | SelectOptionObject)[];
288
+ /** Single select option value for single select menus, or array of select option values for multi select. You can also specify isSelected on the SelectOption */
289
+ selected: any | any[];
291
290
  /** Array of react elements to display in the select menu */
292
291
  options: React.ReactElement[];
293
- /** Props to be passed down to the Select component */
292
+ /** Props to be passed down to the select component */
294
293
  editableSelectProps?: SelectProps;
295
294
  /** arbitrary data to pass to the internal select component in the editable select input cell */
296
295
  [key: string]: any;