Skip to content

Commit 311c73b

Browse files
authored
Merge pull request #463 from kmcfaul/react-19-support
feat(ver): enable react 19 support
2 parents f547973 + 162e625 commit 311c73b

39 files changed

+112
-116
lines changed

.eslintrc.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"plugin:react/recommended",
1010
"plugin:react-hooks/recommended",
1111
"plugin:@typescript-eslint/recommended",
12+
"plugin:react/jsx-runtime",
1213
"prettier"
1314
],
1415
"overrides": [

package-lock.json

Lines changed: 6 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/module/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@
3939
"react-jss": "^10.10.0"
4040
},
4141
"peerDependencies": {
42-
"react": "^17 || ^18",
43-
"react-dom": "^17 || ^18"
42+
"react": "^17 || ^18 || ^19",
43+
"react-dom": "^17 || ^18 || ^19"
4444
},
4545
"devDependencies": {
4646
"@patternfly/documentation-framework": "^6.5.20",
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import { FunctionComponent } from 'react';
22
import DataView from '@patternfly/react-data-view/dist/dynamic/DataView';
33

44
const layoutItemStyling = {
@@ -8,10 +8,10 @@ const layoutItemStyling = {
88
border: 'var(--pf-t--global--border--width--box--default) dashed var(--pf-t--global--border--color--default)'
99
};
1010

11-
export const BasicExample: React.FunctionComponent = () => (
11+
export const BasicExample: FunctionComponent = () => (
1212
<DataView>
1313
<div style={layoutItemStyling}>Header</div>
1414
<div style={layoutItemStyling}>Data representation</div>
1515
<div style={layoutItemStyling}>Footer</div>
1616
</DataView>
17-
)
17+
);

packages/module/patternfly-docs/content/extensions/data-view/examples/DataView/DataView.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ propComponents: ['DataView']
77
sortValue: 1
88
sourceLink: https://github.com/patternfly/react-data-view/blob/main/packages/module/patternfly-docs/content/extensions/data-view/examples/DataView/DataView.md
99
---
10-
import { useState, useEffect, useRef, useMemo } from 'react';
10+
import { FunctionComponent, useState, useEffect, useRef, useMemo } from 'react';
1111
import { Drawer, DrawerContent, DrawerContentBody } from '@patternfly/react-core';
1212
import { CubesIcon } from '@patternfly/react-icons';
1313
import { useDataViewPagination, useDataViewSelection, useDataViewFilters, useDataViewSort } from '@patternfly/react-data-view/dist/dynamic/Hooks';

packages/module/patternfly-docs/content/extensions/data-view/examples/DataView/EventsExample.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useEffect, useState, useRef, useMemo } from 'react';
1+
import { FunctionComponent, useEffect, useState, useRef, useMemo } from 'react';
22
import { Drawer, DrawerActions, DrawerCloseButton, DrawerContent, DrawerContentBody, DrawerHead, DrawerPanelContent, Title, Content } from '@patternfly/react-core';
33
import { DataView } from '@patternfly/react-data-view/dist/dynamic/DataView';
44
import { DataViewTable } from '@patternfly/react-data-view/dist/dynamic/DataViewTable';
@@ -32,7 +32,7 @@ interface RepositoryDetailProps {
3232
setSelectedRepo: React.Dispatch<React.SetStateAction<Repository | undefined>>;
3333
}
3434

35-
const RepositoryDetail: React.FunctionComponent<RepositoryDetailProps> = ({ selectedRepo, setSelectedRepo }) => {
35+
const RepositoryDetail: FunctionComponent<RepositoryDetailProps> = ({ selectedRepo, setSelectedRepo }) => {
3636
const context = useDataViewEventsContext();
3737

3838
useEffect(() => {
@@ -84,7 +84,7 @@ const rowActions = [
8484
}
8585
];
8686

87-
const RepositoriesTable: React.FunctionComponent<RepositoriesTableProps> = ({ selectedRepo = undefined }) => {
87+
const RepositoriesTable: FunctionComponent<RepositoriesTableProps> = ({ selectedRepo = undefined }) => {
8888
const selection = useDataViewSelection({ matchOption: (a, b) => a.row[0] === b.row[0] });
8989
const { trigger } = useDataViewEventsContext();
9090
const rows = useMemo(() => {
@@ -110,7 +110,7 @@ const RepositoriesTable: React.FunctionComponent<RepositoriesTableProps> = ({ se
110110
);
111111
};
112112

113-
export const BasicExample: React.FunctionComponent = () => {
113+
export const BasicExample: FunctionComponent = () => {
114114
const [ selectedRepo, setSelectedRepo ] = useState<Repository>();
115115
const drawerRef = useRef<HTMLDivElement>(null);
116116

packages/module/patternfly-docs/content/extensions/data-view/examples/DataView/PredefinedLayoutFullExample.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* eslint-disable no-nested-ternary */
2-
import React, { useEffect, useState, useRef, useMemo } from 'react';
2+
import { FunctionComponent, useEffect, useState, useRef, useMemo } from 'react';
33
import { Drawer, DrawerActions, DrawerCloseButton, DrawerContent, DrawerContentBody, DrawerHead, DrawerPanelContent, Title, Content, EmptyState, EmptyStateBody, EmptyStateFooter, EmptyStateActions, Button, } from '@patternfly/react-core';
44
import { ActionsColumn, Tbody, Td, ThProps, Tr } from '@patternfly/react-table';
55
import { BulkSelect, BulkSelectValue } from '@patternfly/react-component-groups/dist/dynamic/BulkSelect';
@@ -94,7 +94,7 @@ interface RepositoryDetailProps {
9494
setSelectedRepo: React.Dispatch<React.SetStateAction<Repository | undefined>>;
9595
}
9696

97-
const RepositoryDetail: React.FunctionComponent<RepositoryDetailProps> = ({ selectedRepo, setSelectedRepo }) => {
97+
const RepositoryDetail: FunctionComponent<RepositoryDetailProps> = ({ selectedRepo, setSelectedRepo }) => {
9898
const context = useDataViewEventsContext();
9999

100100
useEffect(() => {
@@ -146,7 +146,7 @@ const rowActions = [
146146
}
147147
];
148148

149-
const RepositoriesTable: React.FunctionComponent<RepositoriesTableProps> = ({ selectedRepo = undefined }) => {
149+
const RepositoriesTable: FunctionComponent<RepositoriesTableProps> = ({ selectedRepo = undefined }) => {
150150
const { filters, onSetFilters, clearAllFilters } = useDataViewFilters<RepositoryFilters>({ initialFilters: { name: '', branch: '', workspace: [] } });
151151

152152
const pagination = useDataViewPagination({ perPage: 5 });
@@ -255,7 +255,7 @@ const RepositoriesTable: React.FunctionComponent<RepositoriesTableProps> = ({ se
255255
);
256256
};
257257

258-
export const BasicExample: React.FunctionComponent = () => {
258+
export const BasicExample: FunctionComponent = () => {
259259
const [ selectedRepo, setSelectedRepo ] = useState<Repository>();
260260
const drawerRef = useRef<HTMLDivElement>(null);
261261

packages/module/patternfly-docs/content/extensions/data-view/examples/Table/DataViewTableEmptyExample.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import React from 'react';
1+
import { FunctionComponent } from 'react';
22
import { DataView, DataViewState } from '@patternfly/react-data-view/dist/dynamic/DataView';
33
import { DataViewTable, DataViewTr, DataViewTh } from '@patternfly/react-data-view/dist/dynamic/DataViewTable';
44
import { CubesIcon } from '@patternfly/react-icons';
5-
import { Button, EmptyState, EmptyStateActions, EmptyStateBody, EmptyStateFooter, } from '@patternfly/react-core';
5+
import { Button, EmptyState, EmptyStateActions, EmptyStateBody, EmptyStateFooter } from '@patternfly/react-core';
66
import { Tbody, Td, Tr } from '@patternfly/react-table';
77

88
interface Repository {
@@ -27,7 +27,7 @@ const empty = (
2727
<Tbody>
2828
<Tr key="loading" ouiaId={`${ouiaId}-tr-loading`}>
2929
<Td colSpan={columns.length}>
30-
<EmptyState headingLevel="h4" icon={CubesIcon} titleText="No data found">
30+
<EmptyState headingLevel="h4" icon={CubesIcon} titleText="No data found">
3131
<EmptyStateBody>There are no matching data to be displayed.</EmptyStateBody>
3232
<EmptyStateFooter>
3333
<EmptyStateActions>
@@ -44,10 +44,10 @@ const empty = (
4444
</Tbody>
4545
);
4646

47-
export const BasicExample: React.FunctionComponent = () => (
47+
export const BasicExample: FunctionComponent = () => (
4848
<DataView activeState={DataViewState.empty}>
49-
<DataViewTable
50-
aria-label='Repositories table'
49+
<DataViewTable
50+
aria-label="Repositories table"
5151
ouiaId={ouiaId}
5252
columns={columns}
5353
rows={rows}

packages/module/patternfly-docs/content/extensions/data-view/examples/Table/DataViewTableErrorExample.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import { FunctionComponent } from 'react';
22
import { DataView, DataViewState } from '@patternfly/react-data-view/dist/dynamic/DataView';
33
import { DataViewTable, DataViewTr, DataViewTh } from '@patternfly/react-data-view/dist/dynamic/DataViewTable';
44
import { ErrorState } from '@patternfly/react-component-groups';
@@ -32,7 +32,7 @@ const error = (
3232
</Tbody>
3333
);
3434

35-
export const BasicExample: React.FunctionComponent = () => (
35+
export const BasicExample: FunctionComponent = () => (
3636
<DataView activeState={DataViewState.error}>
3737
<DataViewTable
3838
aria-label='Repositories table'

packages/module/patternfly-docs/content/extensions/data-view/examples/Table/DataViewTableExample.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import { FunctionComponent } from 'react';
22
import { DataViewTable, DataViewTr, DataViewTh } from '@patternfly/react-data-view/dist/dynamic/DataViewTable';
33
import { ExclamationCircleIcon } from '@patternfly/react-icons';
44
import { Button } from '@patternfly/react-core';
@@ -62,6 +62,6 @@ const columns: DataViewTh[] = [
6262

6363
const ouiaId = 'TableExample';
6464

65-
export const BasicExample: React.FunctionComponent = () => (
65+
export const BasicExample: FunctionComponent = () => (
6666
<DataViewTable aria-label='Repositories table' ouiaId={ouiaId} columns={columns} rows={rows} />
6767
);

packages/module/patternfly-docs/content/extensions/data-view/examples/Table/DataViewTableLoadingExample.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import { FunctionComponent } from 'react';
22
import { DataView, DataViewState } from '@patternfly/react-data-view/dist/dynamic/DataView';
33
import { DataViewTable, DataViewTr, DataViewTh } from '@patternfly/react-data-view/dist/dynamic/DataViewTable';
44
import { SkeletonTableBody, SkeletonTableHead } from '@patternfly/react-component-groups';
@@ -10,13 +10,13 @@ const columns: DataViewTh[] = [ 'Repositories', 'Branches', 'Pull requests', 'Wo
1010

1111
const ouiaId = 'TableExample';
1212

13-
const headLoading = <SkeletonTableHead columns={columns} />
13+
const headLoading = <SkeletonTableHead columns={columns} />;
1414
const bodyLoading = <SkeletonTableBody rowsCount={5} columnsCount={columns.length} />;
1515

16-
export const BasicExample: React.FunctionComponent = () => (
16+
export const BasicExample: FunctionComponent = () => (
1717
<DataView activeState={DataViewState.loading}>
1818
<DataViewTable
19-
aria-label='Repositories table'
19+
aria-label="Repositories table"
2020
ouiaId={ouiaId}
2121
columns={columns}
2222
rows={rows}

packages/module/patternfly-docs/content/extensions/data-view/examples/Table/DataViewTableTreeExample.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import { FunctionComponent } from 'react';
22
import { DataView } from '@patternfly/react-data-view/dist/dynamic/DataView';
33
import { DataViewTable, DataViewTh, DataViewTrTree } from '@patternfly/react-data-view/dist/dynamic/DataViewTable';
44
import { useDataViewSelection } from '@patternfly/react-data-view/dist/dynamic/Hooks';
@@ -52,7 +52,7 @@ const columns: DataViewTh[] = [ 'Repositories', 'Branches', 'Pull requests', 'Wo
5252

5353
const ouiaId = 'TreeTableExample';
5454

55-
export const BasicExample: React.FunctionComponent = () => {
55+
export const BasicExample: FunctionComponent = () => {
5656
const selection = useDataViewSelection({ matchOption: (a, b) => a.id === b.id });
5757

5858
return (

packages/module/patternfly-docs/content/extensions/data-view/examples/Table/SortingExample.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* eslint-disable no-nested-ternary */
2-
import React, { useMemo } from 'react';
2+
import { FunctionComponent, useMemo } from 'react';
33
import { useDataViewSort } from '@patternfly/react-data-view/dist/dynamic/Hooks';
44
import { DataViewTable, DataViewTr, DataViewTh } from '@patternfly/react-data-view/dist/dynamic/DataViewTable';
55
import { ThProps } from '@patternfly/react-table';
@@ -41,7 +41,7 @@ const sortData = (data: Repository[], sortBy: string | undefined, direction: 'as
4141

4242
const ouiaId = 'TableExample';
4343

44-
export const MyTable: React.FunctionComponent = () => {
44+
export const MyTable: FunctionComponent = () => {
4545
const [ searchParams, setSearchParams ] = useSearchParams();
4646
const { sortBy, direction, onSort } = useDataViewSort({ searchParams, setSearchParams });
4747
const sortByIndex = useMemo(() => COLUMNS.findIndex(item => item.key === sortBy), [ sortBy ]);
@@ -79,7 +79,7 @@ export const MyTable: React.FunctionComponent = () => {
7979
);
8080
};
8181

82-
export const BasicExample: React.FunctionComponent = () => (
82+
export const BasicExample: FunctionComponent = () => (
8383
<BrowserRouter>
8484
<MyTable/>
8585
</BrowserRouter>

packages/module/patternfly-docs/content/extensions/data-view/examples/Table/Table.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ sortValue: 3
1515
propComponents: ['DataViewTableBasic', 'DataViewTableTree', 'DataViewTrTree', 'DataViewTrObject']
1616
sourceLink: https://github.com/patternfly/react-data-view/blob/main/packages/module/patternfly-docs/content/extensions/data-view/examples/Table/Table.md
1717
---
18-
import { useMemo } from 'react';
18+
import { FunctionComponent, useMemo } from 'react';
1919
import { BrowserRouter, useSearchParams } from 'react-router-dom';
2020
import { Button, EmptyState, EmptyStateActions, EmptyStateBody, EmptyStateFooter } from '@patternfly/react-core';
2121
import { CubesIcon, FolderIcon, FolderOpenIcon, LeafIcon, ExclamationCircleIcon } from '@patternfly/react-icons';

packages/module/patternfly-docs/pages/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
12
import React from 'react';
23
import { Title, PageSection } from '@patternfly/react-core';
34

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import { render } from '@testing-library/react';
32
import DataView from './DataView';
43

@@ -11,11 +10,14 @@ const layoutItemStyling = {
1110

1211
describe('DataView component', () => {
1312
test('should render correctly', () => {
14-
expect(render(
15-
<DataView>
16-
<div style={layoutItemStyling}>Header</div>
17-
<div style={layoutItemStyling}>Data representation</div>
18-
<div style={layoutItemStyling}>Footer</div>
19-
</DataView>)).toMatchSnapshot();
13+
expect(
14+
render(
15+
<DataView>
16+
<div style={layoutItemStyling}>Header</div>
17+
<div style={layoutItemStyling}>Data representation</div>
18+
<div style={layoutItemStyling}>Footer</div>
19+
</DataView>
20+
)
21+
).toMatchSnapshot();
2022
});
21-
});
23+
});

packages/module/src/DataView/DataView.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import { FC, Children } from 'react';
22
import { Stack, StackItem, StackProps } from '@patternfly/react-core';
33
import { DataViewSelection, InternalContextProvider } from '../InternalContext';
44

@@ -24,19 +24,19 @@ export interface DataViewProps extends StackProps {
2424

2525
export type DataViewImpementationProps = Omit<DataViewProps, 'onSelect' | 'isItemSelected' | 'isItemSelectDisabled'>;
2626

27-
const DataViewImplementation: React.FC<DataViewImpementationProps> = ({
27+
const DataViewImplementation: FC<DataViewImpementationProps> = ({
2828
children, ouiaId = 'DataView', ...props
2929
}: DataViewImpementationProps) => (
3030
<Stack data-ouia-component-id={`${ouiaId}-stack`} {...props}>
31-
{React.Children.map(children, (child, index) => (
31+
{Children.map(children, (child, index) => (
3232
<StackItem data-ouia-component-id={`${ouiaId}-stack-item-${index}`}>
3333
{child}
3434
</StackItem>
3535
))}
3636
</Stack>
3737
)
3838

39-
export const DataView: React.FC<DataViewProps> = ({ children, selection, activeState, ...props }: DataViewProps) => (
39+
export const DataView: FC<DataViewProps> = ({ children, selection, activeState, ...props }: DataViewProps) => (
4040
<InternalContextProvider selection={selection} activeState={activeState} >
4141
<DataViewImplementation {...props}>{children}</DataViewImplementation>
4242
</InternalContextProvider>

packages/module/src/DataViewCheckboxFilter/DataViewCheckboxFilter.test.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import { render } from '@testing-library/react';
32
import DataViewCheckboxFilter, { DataViewCheckboxFilterProps } from './DataViewCheckboxFilter';
43
import DataViewToolbar from '../DataViewToolbar';

0 commit comments

Comments
 (0)