@patternfly/react-table 6.0.0-alpha.10 → 6.0.0-alpha.101
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.
- package/CHANGELOG.md +934 -2
- package/README.md +2 -17
- package/components/package.json +1 -1
- package/deprecated/package.json +1 -1
- package/dist/dynamic/components/Table/package.json +1 -1
- package/dist/dynamic/components/Table/utils/decorators/package.json +1 -1
- package/dist/dynamic/components/Table/utils/package.json +1 -1
- package/dist/dynamic/deprecated/components/Table/base/package.json +1 -1
- package/dist/dynamic/deprecated/components/Table/package.json +1 -1
- package/dist/dynamic/deprecated/components/package.json +1 -1
- package/dist/dynamic-modules.json +127 -0
- package/dist/esm/components/Table/ActionsColumn.d.ts +2 -0
- package/dist/esm/components/Table/ActionsColumn.d.ts.map +1 -1
- package/dist/esm/components/Table/ActionsColumn.js +4 -5
- package/dist/esm/components/Table/ActionsColumn.js.map +1 -1
- package/dist/esm/components/Table/DraggableCell.d.ts.map +1 -1
- package/dist/esm/components/Table/DraggableCell.js +1 -2
- package/dist/esm/components/Table/DraggableCell.js.map +1 -1
- package/dist/esm/components/Table/EditColumn.d.ts.map +1 -1
- package/dist/esm/components/Table/EditColumn.js +3 -6
- package/dist/esm/components/Table/EditColumn.js.map +1 -1
- package/dist/esm/components/Table/EditableSelectInputCell.d.ts +3 -4
- package/dist/esm/components/Table/EditableSelectInputCell.d.ts.map +1 -1
- package/dist/esm/components/Table/EditableSelectInputCell.js +8 -4
- package/dist/esm/components/Table/EditableSelectInputCell.js.map +1 -1
- package/dist/esm/components/Table/FavoritesCell.d.ts.map +1 -1
- package/dist/esm/components/Table/FavoritesCell.js +1 -2
- package/dist/esm/components/Table/FavoritesCell.js.map +1 -1
- package/dist/esm/components/Table/HeaderCellInfoWrapper.d.ts.map +1 -1
- package/dist/esm/components/Table/HeaderCellInfoWrapper.js +2 -4
- package/dist/esm/components/Table/HeaderCellInfoWrapper.js.map +1 -1
- package/dist/esm/components/Table/RowWrapper.js.map +1 -1
- package/dist/esm/components/Table/SortColumn.js.map +1 -1
- package/dist/esm/components/Table/Table.d.ts.map +1 -1
- package/dist/esm/components/Table/Table.js +4 -4
- package/dist/esm/components/Table/Table.js.map +1 -1
- package/dist/esm/components/Table/TableText.js.map +1 -1
- package/dist/esm/components/Table/TableTypes.d.ts +26 -25
- package/dist/esm/components/Table/TableTypes.d.ts.map +1 -1
- package/dist/esm/components/Table/TableTypes.js.map +1 -1
- package/dist/esm/components/Table/Td.d.ts +1 -1
- package/dist/esm/components/Table/Td.js +3 -3
- package/dist/esm/components/Table/Td.js.map +1 -1
- package/dist/esm/components/Table/Th.d.ts +8 -0
- package/dist/esm/components/Table/Th.d.ts.map +1 -1
- package/dist/esm/components/Table/Th.js +10 -6
- package/dist/esm/components/Table/Th.js.map +1 -1
- package/dist/esm/components/Table/Tr.d.ts +2 -0
- package/dist/esm/components/Table/Tr.d.ts.map +1 -1
- package/dist/esm/components/Table/Tr.js +2 -2
- package/dist/esm/components/Table/Tr.js.map +1 -1
- package/dist/esm/components/Table/base/columns-are-equal.js.map +1 -1
- package/dist/esm/components/Table/base/evaluate-transforms.js.map +1 -1
- package/dist/esm/components/Table/base/merge-props.js.map +1 -1
- package/dist/esm/components/Table/base/provider.js.map +1 -1
- package/dist/esm/components/Table/base/types.d.ts +16 -17
- package/dist/esm/components/Table/base/types.d.ts.map +1 -1
- package/dist/esm/components/Table/base/types.js.map +1 -1
- package/dist/esm/components/Table/utils/decorators/compoundExpand.js.map +1 -1
- package/dist/esm/components/Table/utils/decorators/editable.js.map +1 -1
- package/dist/esm/components/Table/utils/decorators/favoritable.js.map +1 -1
- package/dist/esm/components/Table/utils/decorators/selectable.js +1 -1
- package/dist/esm/components/Table/utils/decorators/selectable.js.map +1 -1
- package/dist/esm/components/Table/utils/decorators/sortable.js.map +1 -1
- package/dist/esm/components/Table/utils/decorators/treeRow.d.ts +1 -1
- package/dist/esm/components/Table/utils/headerUtils.js.map +1 -1
- package/dist/esm/components/Table/utils/utils.js.map +1 -1
- package/dist/esm/demos/DashboardHeader.d.ts +8 -0
- package/dist/esm/demos/DashboardHeader.d.ts.map +1 -0
- package/dist/esm/demos/DashboardHeader.js +78 -0
- package/dist/esm/demos/DashboardHeader.js.map +1 -0
- package/dist/esm/demos/DashboardWrapper.d.ts +85 -0
- package/dist/esm/demos/DashboardWrapper.d.ts.map +1 -0
- package/dist/esm/demos/DashboardWrapper.js +41 -0
- package/dist/esm/demos/DashboardWrapper.js.map +1 -0
- package/dist/esm/demos/index.d.ts +2 -0
- package/dist/esm/demos/index.d.ts.map +1 -1
- package/dist/esm/demos/index.js +2 -0
- package/dist/esm/demos/index.js.map +1 -1
- package/dist/esm/deprecated/components/Table/Body.d.ts +1 -1
- package/dist/esm/deprecated/components/Table/Body.d.ts.map +1 -1
- package/dist/esm/deprecated/components/Table/Body.js.map +1 -1
- package/dist/esm/deprecated/components/Table/BodyCell.js.map +1 -1
- package/dist/esm/deprecated/components/Table/BodyWrapper.js.map +1 -1
- package/dist/esm/deprecated/components/Table/Table.d.ts.map +1 -1
- package/dist/esm/deprecated/components/Table/Table.js +2 -3
- package/dist/esm/deprecated/components/Table/Table.js.map +1 -1
- package/dist/esm/deprecated/components/Table/base/body-row.js.map +1 -1
- package/dist/esm/deprecated/components/Table/base/body.js.map +1 -1
- package/dist/esm/deprecated/components/Table/base/header-row.js +1 -1
- package/dist/esm/deprecated/components/Table/base/header-row.js.map +1 -1
- package/dist/esm/deprecated/components/Table/base/resolve-row-key.js.map +1 -1
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/test-helpers/data-helpers.js.map +1 -1
- package/dist/js/components/Table/ActionsColumn.d.ts +2 -0
- package/dist/js/components/Table/ActionsColumn.d.ts.map +1 -1
- package/dist/js/components/Table/ActionsColumn.js +4 -5
- package/dist/js/components/Table/ActionsColumn.js.map +1 -1
- package/dist/js/components/Table/CollapseColumn.js.map +1 -1
- package/dist/js/components/Table/DraggableCell.d.ts.map +1 -1
- package/dist/js/components/Table/DraggableCell.js +1 -2
- package/dist/js/components/Table/DraggableCell.js.map +1 -1
- package/dist/js/components/Table/EditColumn.d.ts.map +1 -1
- package/dist/js/components/Table/EditColumn.js +3 -6
- package/dist/js/components/Table/EditColumn.js.map +1 -1
- package/dist/js/components/Table/EditableSelectInputCell.d.ts +3 -4
- package/dist/js/components/Table/EditableSelectInputCell.d.ts.map +1 -1
- package/dist/js/components/Table/EditableSelectInputCell.js +8 -4
- package/dist/js/components/Table/EditableSelectInputCell.js.map +1 -1
- package/dist/js/components/Table/EditableTextCell.js.map +1 -1
- package/dist/js/components/Table/FavoritesCell.d.ts.map +1 -1
- package/dist/js/components/Table/FavoritesCell.js +1 -2
- package/dist/js/components/Table/FavoritesCell.js.map +1 -1
- package/dist/js/components/Table/HeaderCellInfoWrapper.d.ts.map +1 -1
- package/dist/js/components/Table/HeaderCellInfoWrapper.js +2 -4
- package/dist/js/components/Table/HeaderCellInfoWrapper.js.map +1 -1
- package/dist/js/components/Table/RowWrapper.js +0 -1
- package/dist/js/components/Table/RowWrapper.js.map +1 -1
- package/dist/js/components/Table/SelectColumn.js +1 -1
- package/dist/js/components/Table/SelectColumn.js.map +1 -1
- package/dist/js/components/Table/SortColumn.js +1 -2
- package/dist/js/components/Table/SortColumn.js.map +1 -1
- package/dist/js/components/Table/Table.d.ts.map +1 -1
- package/dist/js/components/Table/Table.js +3 -3
- package/dist/js/components/Table/Table.js.map +1 -1
- package/dist/js/components/Table/TableText.js +2 -2
- package/dist/js/components/Table/TableText.js.map +1 -1
- package/dist/js/components/Table/TableTypes.d.ts +26 -25
- package/dist/js/components/Table/TableTypes.d.ts.map +1 -1
- package/dist/js/components/Table/TableTypes.js +2 -6
- package/dist/js/components/Table/TableTypes.js.map +1 -1
- package/dist/js/components/Table/Td.d.ts +1 -1
- package/dist/js/components/Table/Td.js +3 -3
- package/dist/js/components/Table/Td.js.map +1 -1
- package/dist/js/components/Table/Th.d.ts +8 -0
- package/dist/js/components/Table/Th.d.ts.map +1 -1
- package/dist/js/components/Table/Th.js +10 -6
- package/dist/js/components/Table/Th.js.map +1 -1
- package/dist/js/components/Table/Tr.d.ts +2 -0
- package/dist/js/components/Table/Tr.d.ts.map +1 -1
- package/dist/js/components/Table/Tr.js +2 -2
- package/dist/js/components/Table/Tr.js.map +1 -1
- package/dist/js/components/Table/base/columns-are-equal.js.map +1 -1
- package/dist/js/components/Table/base/evaluate-transforms.js.map +1 -1
- package/dist/js/components/Table/base/merge-props.js.map +1 -1
- package/dist/js/components/Table/base/provider.js.map +1 -1
- package/dist/js/components/Table/base/types.d.ts +16 -17
- package/dist/js/components/Table/base/types.d.ts.map +1 -1
- package/dist/js/components/Table/base/types.js +0 -4
- package/dist/js/components/Table/base/types.js.map +1 -1
- package/dist/js/components/Table/utils/decorators/compoundExpand.js.map +1 -1
- package/dist/js/components/Table/utils/decorators/editable.js.map +1 -1
- package/dist/js/components/Table/utils/decorators/favoritable.js.map +1 -1
- package/dist/js/components/Table/utils/decorators/selectable.js +1 -1
- package/dist/js/components/Table/utils/decorators/selectable.js.map +1 -1
- package/dist/js/components/Table/utils/decorators/sortable.js.map +1 -1
- package/dist/js/components/Table/utils/decorators/treeRow.d.ts +1 -1
- package/dist/js/components/Table/utils/decorators/treeRow.js.map +1 -1
- package/dist/js/components/Table/utils/headerUtils.js.map +1 -1
- package/dist/js/components/Table/utils/utils.js.map +1 -1
- package/dist/js/demos/DashboardHeader.d.ts +8 -0
- package/dist/js/demos/DashboardHeader.d.ts.map +1 -0
- package/dist/js/demos/DashboardHeader.js +83 -0
- package/dist/js/demos/DashboardHeader.js.map +1 -0
- package/dist/js/demos/DashboardWrapper.d.ts +85 -0
- package/dist/js/demos/DashboardWrapper.d.ts.map +1 -0
- package/dist/js/demos/DashboardWrapper.js +45 -0
- package/dist/js/demos/DashboardWrapper.js.map +1 -0
- package/dist/js/demos/index.d.ts +2 -0
- package/dist/js/demos/index.d.ts.map +1 -1
- package/dist/js/demos/index.js +2 -0
- package/dist/js/demos/index.js.map +1 -1
- package/dist/js/deprecated/components/Table/Body.d.ts +1 -1
- package/dist/js/deprecated/components/Table/Body.d.ts.map +1 -1
- package/dist/js/deprecated/components/Table/Body.js.map +1 -1
- package/dist/js/deprecated/components/Table/BodyCell.js +0 -1
- package/dist/js/deprecated/components/Table/BodyCell.js.map +1 -1
- package/dist/js/deprecated/components/Table/BodyWrapper.js.map +1 -1
- package/dist/js/deprecated/components/Table/Table.d.ts.map +1 -1
- package/dist/js/deprecated/components/Table/Table.js +9 -10
- package/dist/js/deprecated/components/Table/Table.js.map +1 -1
- package/dist/js/deprecated/components/Table/base/body-row.js.map +1 -1
- package/dist/js/deprecated/components/Table/base/body.js.map +1 -1
- package/dist/js/deprecated/components/Table/base/header-row.js +1 -1
- package/dist/js/deprecated/components/Table/base/header-row.js.map +1 -1
- package/dist/js/deprecated/components/Table/base/resolve-row-key.js.map +1 -1
- package/dist/js/index.d.ts +0 -1
- package/dist/js/index.d.ts.map +1 -1
- package/dist/js/index.js +0 -1
- package/dist/js/index.js.map +1 -1
- package/dist/js/test-helpers/data-helpers.js.map +1 -1
- package/dist/umd/assets/output-BtVZZiou.css +26986 -0
- package/dist/umd/react-table.min.js +4 -5
- package/package.json +8 -12
- package/rollup.config.mjs +8 -0
- package/single-packages.config.json +3 -6
- package/src/components/Table/ActionsColumn.tsx +35 -31
- package/src/components/Table/DraggableCell.tsx +2 -3
- package/src/components/Table/EditColumn.tsx +21 -9
- package/src/components/Table/EditableSelectInputCell.tsx +15 -10
- package/src/components/Table/FavoritesCell.tsx +2 -3
- package/src/components/Table/HeaderCellInfoWrapper.tsx +10 -6
- package/src/components/Table/Table.tsx +4 -4
- package/src/components/Table/TableTypes.tsx +9 -9
- package/src/components/Table/Td.tsx +5 -5
- package/src/components/Table/Th.tsx +24 -6
- package/src/components/Table/Tr.tsx +4 -0
- package/src/components/Table/__tests__/Th.test.tsx +31 -0
- package/src/components/Table/__tests__/__snapshots__/RowWrapper.test.tsx.snap +4 -4
- package/src/components/Table/base/types.tsx +6 -7
- package/src/components/Table/examples/Table.md +46 -4
- package/src/components/Table/examples/TableActions.tsx +2 -2
- package/src/components/Table/examples/TableActionsOverflow.tsx +3 -5
- package/src/components/Table/examples/TableCompoundExpandable.tsx +3 -3
- package/src/components/Table/examples/TableDraggable.tsx +19 -16
- package/src/components/Table/examples/TableEditable.tsx +313 -0
- package/src/components/Table/examples/TableEmptyState.tsx +1 -8
- package/src/components/Table/examples/TableExpandable.tsx +1 -2
- package/src/components/Table/examples/TableMisc.tsx +2 -2
- package/src/components/Table/examples/TableNestedExpandable.tsx +1 -1
- package/src/components/Table/examples/TableNestedHeaders.tsx +4 -7
- package/src/components/Table/examples/TableNestedStickyHeader.tsx +4 -10
- package/src/components/Table/examples/TableNestedTableExpandable.tsx +1 -1
- package/src/components/Table/examples/TableSelectable.tsx +1 -0
- package/src/components/Table/examples/TableSelectableRadio.tsx +1 -1
- package/src/components/Table/examples/TableSortableCustom.tsx +2 -3
- package/src/components/Table/examples/TableStickyColumnsAndHeader.tsx +1 -1
- package/src/components/Table/examples/TableStripedExpandable.tsx +1 -1
- package/src/components/Table/utils/__snapshots__/transformers.test.tsx.snap +4 -4
- package/src/components/Table/utils/decorators/selectable.tsx +1 -1
- package/src/components/Table/utils/transformers.test.tsx +4 -7
- package/src/demos/DashboardHeader.tsx +201 -0
- package/src/demos/DashboardWrapper.tsx +198 -0
- package/src/demos/Table.md +30 -8
- package/src/demos/assets/avatarImg.svg +18 -0
- package/src/demos/assets/index.d.ts +4 -0
- package/src/demos/assets/pf-logo.svg +28 -0
- package/src/demos/examples/TableBulkSelect.tsx +2 -2
- package/src/demos/examples/TableColumnManagement.tsx +7 -9
- package/src/demos/examples/TableColumnManagementWithDraggable.tsx +7 -13
- package/src/demos/examples/TableCompact.tsx +8 -3
- package/src/demos/examples/TableCompoundExpansion.tsx +5 -4
- package/src/demos/examples/TableEmptyStateDefault.tsx +7 -9
- package/src/demos/examples/TableEmptyStateError.tsx +8 -18
- package/src/demos/examples/TableEmptyStateLoading.tsx +3 -13
- package/src/demos/examples/TableExpandCollapseAll.tsx +59 -58
- package/src/demos/examples/TableFilterable.tsx +10 -17
- package/src/demos/examples/TableSortableResponsive.tsx +13 -16
- package/src/demos/examples/TableStaticBottomPagination.tsx +8 -3
- package/src/demos/examples/TableStickyFirstColumn.tsx +1 -1
- package/src/demos/examples/TableStickyHeader.tsx +1 -1
- package/src/demos/index.ts +2 -0
- package/src/deprecated/components/Table/Table.tsx +2 -3
- package/src/deprecated/components/Table/__tests__/__snapshots__/Table.test.tsx.snap +2457 -2274
- package/src/deprecated/components/Table/base/header-row.tsx +1 -1
- package/src/deprecated/components/Table/examples/LegacyTableEmptyState.tsx +6 -8
- package/src/deprecated/components/Table/examples/LegacyTableMisc.tsx +2 -2
- package/src/deprecated/components/Table/examples/LegacyTableSortableCustom.tsx +2 -3
- package/src/deprecated/components/Table/examples/Table.md +48 -41
- package/src/index.ts +0 -1
- 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.
|
|
3
|
+
"version": "6.0.0-alpha.101",
|
|
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.
|
|
44
|
-
"@patternfly/react-icons": "^6.0.0-alpha.
|
|
45
|
-
"@patternfly/react-styles": "^6.0.0-alpha.
|
|
46
|
-
"@patternfly/react-tokens": "^6.0.0-alpha.
|
|
47
|
-
"lodash": "^4.17.
|
|
48
|
-
"tslib": "^2.
|
|
49
|
-
},
|
|
50
|
-
"devDependencies": {
|
|
51
|
-
"rimraf": "^2.6.2",
|
|
52
|
-
"typescript": "^4.7.4"
|
|
43
|
+
"@patternfly/react-core": "^6.0.0-alpha.100",
|
|
44
|
+
"@patternfly/react-icons": "^6.0.0-alpha.35",
|
|
45
|
+
"@patternfly/react-styles": "^6.0.0-alpha.34",
|
|
46
|
+
"@patternfly/react-tokens": "^6.0.0-alpha.34",
|
|
47
|
+
"lodash": "^4.17.21",
|
|
48
|
+
"tslib": "^2.6.3"
|
|
53
49
|
},
|
|
54
50
|
"peerDependencies": {
|
|
55
51
|
"react": "^17 || ^18",
|
|
56
52
|
"react-dom": "^17 || ^18"
|
|
57
53
|
},
|
|
58
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "aee9a75f90293e6533c2d7b59d7cf099b5f3d506"
|
|
59
55
|
}
|
|
@@ -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
|
-
|
|
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(
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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
|
-
|
|
145
|
-
|
|
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>
|
|
@@ -24,9 +24,8 @@ export const DraggableCell: React.FunctionComponent<DraggableCellProps> = ({
|
|
|
24
24
|
aria-label={ariaLabel || `Draggable row draggable button`}
|
|
25
25
|
onClick={onClick}
|
|
26
26
|
{...props}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
</Button>
|
|
27
|
+
icon={<GripVerticalIcon aria-hidden />}
|
|
28
|
+
/>
|
|
30
29
|
);
|
|
31
30
|
|
|
32
31
|
DraggableCell.displayName = 'DraggableCell';
|
|
@@ -33,20 +33,32 @@ export const EditColumn: React.FunctionComponent<EditColumnProps> = ({
|
|
|
33
33
|
<React.Fragment>
|
|
34
34
|
<div className={css(inlineStyles.inlineEditGroup, inlineStyles.modifiers.iconGroup, 'pf-m-action-group')}>
|
|
35
35
|
<div className={css(inlineStyles.inlineEditAction)}>
|
|
36
|
-
<Button
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
<Button
|
|
37
|
+
aria-label={saveAriaLabel}
|
|
38
|
+
{...props}
|
|
39
|
+
onClick={(e) => onClick(e, 'save')}
|
|
40
|
+
variant="plain"
|
|
41
|
+
icon={<CheckIcon />}
|
|
42
|
+
/>
|
|
39
43
|
</div>
|
|
40
44
|
<div className={css(inlineStyles.inlineEditAction)}>
|
|
41
|
-
<Button
|
|
42
|
-
|
|
43
|
-
|
|
45
|
+
<Button
|
|
46
|
+
aria-label={cancelAriaLabel}
|
|
47
|
+
{...props}
|
|
48
|
+
onClick={(e) => onClick(e, 'cancel')}
|
|
49
|
+
variant="plain"
|
|
50
|
+
icon={<TimesIcon />}
|
|
51
|
+
/>
|
|
44
52
|
</div>
|
|
45
53
|
</div>
|
|
46
54
|
<div className={css(inlineStyles.inlineEditAction, inlineStyles.modifiers.enableEditable)}>
|
|
47
|
-
<Button
|
|
48
|
-
|
|
49
|
-
|
|
55
|
+
<Button
|
|
56
|
+
aria-label={editAriaLabel}
|
|
57
|
+
{...props}
|
|
58
|
+
onClick={(e) => onClick(e, 'edit')}
|
|
59
|
+
variant="plain"
|
|
60
|
+
icon={<PencilAltIcon />}
|
|
61
|
+
/>
|
|
50
62
|
</div>
|
|
51
63
|
</React.Fragment>
|
|
52
64
|
);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { css } from '@patternfly/react-styles';
|
|
3
|
-
import { 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:
|
|
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?:
|
|
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 |
|
|
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:
|
|
52
|
-
isPlaceholder: boolean
|
|
52
|
+
newValue: any | any[]
|
|
53
|
+
// isPlaceholder: boolean
|
|
53
54
|
) => {
|
|
54
|
-
onSelect(event, newValue, rowIndex, cellIndex
|
|
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
|
-
|
|
68
|
-
|
|
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
|
|
|
@@ -33,9 +33,8 @@ export const FavoritesCell: React.FunctionComponent<FavoritesCellProps> = ({
|
|
|
33
33
|
onClick={onFavorite}
|
|
34
34
|
{...ariaProps}
|
|
35
35
|
{...props}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
</Button>
|
|
36
|
+
icon={<StarIcon aria-hidden />}
|
|
37
|
+
/>
|
|
39
38
|
);
|
|
40
39
|
};
|
|
41
40
|
FavoritesCell.displayName = 'FavoritesCell';
|
|
@@ -52,15 +52,19 @@ export const HeaderCellInfoWrapper: React.FunctionComponent<ColumnHelpWrapperPro
|
|
|
52
52
|
<span className={css(styles.tableColumnHelpAction)}>
|
|
53
53
|
{variant === 'tooltip' ? (
|
|
54
54
|
<Tooltip content={info} {...tooltipProps}>
|
|
55
|
-
<Button
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
<Button
|
|
56
|
+
variant="plain"
|
|
57
|
+
aria-label={ariaLabel || (typeof info === 'string' && info) || 'More info'}
|
|
58
|
+
icon={<HelpIcon />}
|
|
59
|
+
/>
|
|
58
60
|
</Tooltip>
|
|
59
61
|
) : (
|
|
60
62
|
<Popover bodyContent={info} {...popoverProps}>
|
|
61
|
-
<Button
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
<Button
|
|
64
|
+
variant="plain"
|
|
65
|
+
aria-label={ariaLabel || (typeof info === 'string' && info) || 'More info'}
|
|
66
|
+
icon={<HelpIcon />}
|
|
67
|
+
/>
|
|
64
68
|
</Popover>
|
|
65
69
|
)}
|
|
66
70
|
</span>
|
|
@@ -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-
|
|
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-
|
|
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 ===
|
|
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';
|
|
@@ -82,7 +81,6 @@ export type OnCheckChange = (
|
|
|
82
81
|
// Todo: Update type with next breaking change release
|
|
83
82
|
// export type IHeaderRow = ColumnType;
|
|
84
83
|
|
|
85
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
86
84
|
export interface IHeaderRow extends ColumnType {}
|
|
87
85
|
|
|
88
86
|
export interface IRowData extends IRow {
|
|
@@ -102,8 +100,8 @@ export interface IColumn {
|
|
|
102
100
|
rowLabeledBy?: string;
|
|
103
101
|
expandId?: string;
|
|
104
102
|
contentId?: string;
|
|
105
|
-
dropdownPosition?:
|
|
106
|
-
dropdownDirection?:
|
|
103
|
+
dropdownPosition?: 'right' | 'left';
|
|
104
|
+
dropdownDirection?: 'up' | 'down';
|
|
107
105
|
menuAppendTo?: HTMLElement | (() => HTMLElement) | 'inline' | 'parent';
|
|
108
106
|
actionsToggle?: (props: CustomActionsToggleProps) => React.ReactNode;
|
|
109
107
|
actionsPopperProps?: any;
|
|
@@ -138,7 +136,7 @@ export interface IExtra extends IExtraData {
|
|
|
138
136
|
}
|
|
139
137
|
|
|
140
138
|
export type IFormatterValueType = formatterValueType & {
|
|
141
|
-
title?:
|
|
139
|
+
title?: React.ReactNode;
|
|
142
140
|
props?: any;
|
|
143
141
|
};
|
|
144
142
|
|
|
@@ -157,7 +155,7 @@ export interface IAction extends Omit<DropdownItemProps, 'title' | 'onClick'>, P
|
|
|
157
155
|
/** Key of actions menu item */
|
|
158
156
|
itemKey?: string;
|
|
159
157
|
/** Content to display in the actions menu item */
|
|
160
|
-
title?:
|
|
158
|
+
title?: React.ReactNode;
|
|
161
159
|
/** Render item as aria-disabled option */
|
|
162
160
|
isAriaDisabled?: boolean;
|
|
163
161
|
/** Props for adding a tooltip to a menu item. This is used to display tooltip when hovered over the item */
|
|
@@ -166,6 +164,8 @@ export interface IAction extends Omit<DropdownItemProps, 'title' | 'onClick'>, P
|
|
|
166
164
|
onClick?: (event: React.MouseEvent, rowIndex: number, rowData: IRowData, extraData: IExtraData) => void;
|
|
167
165
|
/** Flag indicating this action should be placed outside the actions menu, beside the toggle */
|
|
168
166
|
isOutsideDropdown?: boolean;
|
|
167
|
+
/** Flag indicating whether the actions dropdown should close after an item is clicked. */
|
|
168
|
+
shouldCloseOnClick?: boolean;
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
export interface ISeparator extends IAction {
|
|
@@ -189,7 +189,7 @@ export interface decoratorReturnType {
|
|
|
189
189
|
textCenter?: boolean;
|
|
190
190
|
component?: string;
|
|
191
191
|
isVisible?: boolean;
|
|
192
|
-
title?:
|
|
192
|
+
title?: React.ReactNode;
|
|
193
193
|
props?: any;
|
|
194
194
|
scope?: string;
|
|
195
195
|
parentId?: number;
|
|
@@ -203,7 +203,7 @@ export type IFormatter = (data?: IFormatterValueType, extra?: IExtra) => formatt
|
|
|
203
203
|
|
|
204
204
|
export interface ICell {
|
|
205
205
|
/* cell contents */
|
|
206
|
-
title?:
|
|
206
|
+
title?: React.ReactNode;
|
|
207
207
|
/** transformations applied to the header cell */
|
|
208
208
|
transforms?: ITransform[];
|
|
209
209
|
/** transformations applied to the cells within the column's body */
|
|
@@ -227,7 +227,7 @@ export interface ICell {
|
|
|
227
227
|
export type RowCellContent<T = any> = (value?: string, rowIndex?: number, cellIndex?: number, props?: T) => void;
|
|
228
228
|
|
|
229
229
|
export interface IRowCell<T = any> {
|
|
230
|
-
title?:
|
|
230
|
+
title?: React.ReactNode | RowCellContent<T>;
|
|
231
231
|
props?: T;
|
|
232
232
|
formatters?: IFormatter[];
|
|
233
233
|
}
|
|
@@ -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
|
|
34
|
-
import
|
|
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-
|
|
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
|
-
[
|
|
298
|
-
[
|
|
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
|
|
14
|
-
import
|
|
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'
|
|
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
|
-
[
|
|
210
|
-
[
|
|
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
|
|
|
@@ -28,6 +28,8 @@ export interface TrProps extends Omit<React.HTMLProps<HTMLTableRowElement>, 'onR
|
|
|
28
28
|
isStriped?: boolean;
|
|
29
29
|
/** Flag indicating the row will act as a border. This is typically used for a table with a nested and sticky header. */
|
|
30
30
|
isBorderRow?: boolean;
|
|
31
|
+
/** Flag indicating the row is controlling the expansion of another row. */
|
|
32
|
+
isControlRow?: boolean;
|
|
31
33
|
/** An event handler for the row */
|
|
32
34
|
onRowClick?: (event?: React.KeyboardEvent | React.MouseEvent) => void;
|
|
33
35
|
/** Flag indicating that the row is selectable */
|
|
@@ -50,6 +52,7 @@ const TrBase: React.FunctionComponent<TrProps> = ({
|
|
|
50
52
|
isRowSelected = false,
|
|
51
53
|
isStriped = false,
|
|
52
54
|
isBorderRow = false,
|
|
55
|
+
isControlRow = false,
|
|
53
56
|
innerRef,
|
|
54
57
|
ouiaId,
|
|
55
58
|
ouiaSafe = true,
|
|
@@ -100,6 +103,7 @@ const TrBase: React.FunctionComponent<TrProps> = ({
|
|
|
100
103
|
isRowSelected && styles.modifiers.selected,
|
|
101
104
|
isStriped && styles.modifiers.striped,
|
|
102
105
|
isBorderRow && styles.modifiers.borderRow,
|
|
106
|
+
isControlRow && styles.tableControlRow,
|
|
103
107
|
resetOffset && styles.modifiers.firstCellOffsetReset
|
|
104
108
|
)}
|
|
105
109
|
hidden={rowIsHidden}
|
|
@@ -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-
|
|
8
|
+
class="pf-v6-c-table__tr"
|
|
9
9
|
data-ouia-component-id="OUIA-Generated-TableRow-1"
|
|
10
|
-
data-ouia-component-type="
|
|
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-
|
|
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="
|
|
25
|
+
data-ouia-component-type="PF6/TableRow"
|
|
26
26
|
data-ouia-safe="true"
|
|
27
27
|
/>
|
|
28
28
|
</tbody>
|