Skip to content

Commit ae3436b

Browse files
feat(misc): Enabled React19 support (#97)
2 parents 9d34d20 + 589de6e commit ae3436b

19 files changed

+106
-103
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": [

packages/module/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
"memoize-one": "^5.1.0"
3737
},
3838
"peerDependencies": {
39-
"react": "^17 || ^18",
40-
"react-dom": "^17 || ^18"
39+
"react": "^17 || ^18 || ^19",
40+
"react-dom": "^17 || ^18 || ^19"
4141
},
4242
"devDependencies": {
4343
"@patternfly/documentation-framework": "^6.0.0-alpha.120",

packages/module/patternfly-docs/content/extensions/react-log-viewer/demos/ComplexToolbarLogViewer.jsx

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import { useState, useRef, useEffect, Fragment } from 'react';
22
import { data } from '@patternfly/react-log-viewer/patternfly-docs/content/extensions/react-log-viewer/examples/realTestData.js';
33
import { LogViewer, LogViewerSearch } from '@patternfly/react-log-viewer';
44
import {
@@ -28,20 +28,20 @@ export const ComplexToolbarLogViewer = () => {
2828
'container-2': { type: 'D', id: 'data2' },
2929
'container-3': { type: 'E', id: 'data3' }
3030
};
31-
const [isPaused, setIsPaused] = React.useState(false);
32-
const [isFullScreen, setIsFullScreen] = React.useState(false);
33-
const [itemCount, setItemCount] = React.useState(1);
34-
const [currentItemCount, setCurrentItemCount] = React.useState(0);
35-
const [renderData, setRenderData] = React.useState('');
36-
const [selectedDataSource, setSelectedDataSource] = React.useState('container-1');
37-
const [selectDataSourceOpen, setSelectDataSourceOpen] = React.useState(false);
38-
const [timer, setTimer] = React.useState(null);
39-
const [selectedData, setSelectedData] = React.useState(data[dataSources[selectedDataSource].id].split('\n'));
40-
const [buffer, setBuffer] = React.useState([]);
41-
const [linesBehind, setLinesBehind] = React.useState(0);
42-
const logViewerRef = React.useRef();
31+
const [isPaused, setIsPaused] = useState(false);
32+
const [isFullScreen, setIsFullScreen] = useState(false);
33+
const [itemCount, setItemCount] = useState(1);
34+
const [currentItemCount, setCurrentItemCount] = useState(0);
35+
const [renderData, setRenderData] = useState('');
36+
const [selectedDataSource, setSelectedDataSource] = useState('container-1');
37+
const [selectDataSourceOpen, setSelectDataSourceOpen] = useState(false);
38+
const [timer, setTimer] = useState(null);
39+
const [selectedData, setSelectedData] = useState(data[dataSources[selectedDataSource].id].split('\n'));
40+
const [buffer, setBuffer] = useState([]);
41+
const [linesBehind, setLinesBehind] = useState(0);
42+
const logViewerRef = useRef(null);
4343

44-
React.useEffect(() => {
44+
useEffect(() => {
4545
setTimer(
4646
window.setInterval(() => {
4747
setItemCount((itemCount) => itemCount + 1);
@@ -52,15 +52,15 @@ export const ComplexToolbarLogViewer = () => {
5252
};
5353
}, []);
5454

55-
React.useEffect(() => {
55+
useEffect(() => {
5656
if (itemCount > selectedData.length) {
5757
window.clearInterval(timer);
5858
} else {
5959
setBuffer(selectedData.slice(0, itemCount));
6060
}
6161
}, [itemCount]);
6262

63-
React.useEffect(() => {
63+
useEffect(() => {
6464
if (!isPaused && buffer.length > 0) {
6565
setCurrentItemCount(buffer.length);
6666
setRenderData(buffer.join('\n'));
@@ -75,7 +75,7 @@ export const ComplexToolbarLogViewer = () => {
7575
}, [isPaused, buffer]);
7676

7777
// Listening escape key on full screen mode.
78-
React.useEffect(() => {
78+
useEffect(() => {
7979
const handleFullscreenChange = () => {
8080
const isFullscreen =
8181
document.fullscreenElement ||
@@ -99,7 +99,7 @@ export const ComplexToolbarLogViewer = () => {
9999
};
100100
}, []);
101101

102-
const onExpandClick = _event => {
102+
const onExpandClick = (_event) => {
103103
const element = document.querySelector('#complex-toolbar-demo');
104104

105105
if (!isFullScreen) {
@@ -163,10 +163,10 @@ export const ComplexToolbarLogViewer = () => {
163163
));
164164

165165
const selectDataSourcePlaceholder = (
166-
<React.Fragment>
166+
<Fragment>
167167
<Badge>{dataSources[selectedDataSource].type}</Badge>
168168
{` ${selectedDataSource}`}
169-
</React.Fragment>
169+
</Fragment>
170170
);
171171

172172
const ControlButton = () => (
@@ -188,7 +188,7 @@ export const ComplexToolbarLogViewer = () => {
188188
);
189189

190190
const leftAlignedToolbarGroup = (
191-
<React.Fragment>
191+
<Fragment>
192192
<ToolbarToggleGroup toggleIcon={<EllipsisVIcon />} breakpoint="md">
193193
<ToolbarItem>
194194
<Select
@@ -217,11 +217,11 @@ export const ComplexToolbarLogViewer = () => {
217217
<ToolbarItem>
218218
<ControlButton />
219219
</ToolbarItem>
220-
</React.Fragment>
220+
</Fragment>
221221
);
222222

223223
const rightAlignedToolbarGroup = (
224-
<React.Fragment>
224+
<Fragment>
225225
<ToolbarGroup variant="icon-button-group">
226226
<ToolbarItem>
227227
<Tooltip position="top" content={<div>Download</div>}>
@@ -238,7 +238,7 @@ export const ComplexToolbarLogViewer = () => {
238238
</Tooltip>
239239
</ToolbarItem>
240240
</ToolbarGroup>
241-
</React.Fragment>
241+
</Fragment>
242242
);
243243

244244
const FooterButton = () => {

packages/module/patternfly-docs/content/extensions/react-log-viewer/demos/LogViewer.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ section: extensions
44
source: react-demos
55
---
66

7+
import { useState, useRef, useEffect, Fragment } from 'react';
78
import { data } from '@patternfly/react-log-viewer/patternfly-docs/content/extensions/react-log-viewer/examples/realTestData.js';
89
import { LogViewer, LogViewerSearch } from '@patternfly/react-log-viewer';
910
import {
@@ -30,4 +31,5 @@ import DownloadIcon from '@patternfly/react-icons/dist/esm/icons/download-icon';
3031
### With complex toolbar
3132

3233
```js file='./ComplexToolbarLogViewer.jsx'
34+
3335
```
Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
1-
import React from 'react';
21
import { data } from '@patternfly/react-log-viewer/patternfly-docs/content/extensions/react-log-viewer/examples/realTestData.js';
32
import { LogViewer } from '@patternfly/react-log-viewer';
43

54
export const ANSIColorLogViewer = () => (
6-
<LogViewer
7-
hasLineNumbers={false}
8-
height={300}
9-
data={data.data4}
10-
theme="dark"
11-
/>
5+
<LogViewer hasLineNumbers={false} height={300} data={data.data4} theme="dark" />
126
);
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import React from 'react';
1+
import { useState, Fragment } from 'react';
22
import { data } from '@patternfly/react-log-viewer/patternfly-docs/content/extensions/react-log-viewer/examples/realTestData.js';
33
import { LogViewer } from '@patternfly/react-log-viewer';
44
import { Checkbox } from '@patternfly/react-core';
55

66
export const BasicLogViewer = () => {
7-
const [isDarkTheme, setIsDarkTheme] = React.useState(false);
7+
const [isDarkTheme, setIsDarkTheme] = useState(false);
88

99
return (
10-
<React.Fragment>
10+
<Fragment>
1111
<Checkbox
1212
label="Dark theme"
1313
isChecked={isDarkTheme}
@@ -17,6 +17,6 @@ export const BasicLogViewer = () => {
1717
name="toggle-dark-theme"
1818
/>
1919
<LogViewer hasLineNumbers={false} height={300} data={data.data} theme={isDarkTheme ? 'dark' : 'light'} />
20-
</React.Fragment>
20+
</Fragment>
2121
);
2222
};

packages/module/patternfly-docs/content/extensions/react-log-viewer/examples/BasicSearchLogViewer.jsx

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 { data } from '@patternfly/react-log-viewer/patternfly-docs/content/extensions/react-log-viewer/examples/realTestData.js';
32
import { LogViewer, LogViewerSearch } from '@patternfly/react-log-viewer';
43
import { Toolbar, ToolbarContent, ToolbarItem } from '@patternfly/react-core';

packages/module/patternfly-docs/content/extensions/react-log-viewer/examples/CustomControlLogViewer.jsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
/* eslint-disable no-console */
2-
import React from 'react';
2+
import { useState } from 'react';
33
import { data } from '@patternfly/react-log-viewer/patternfly-docs/content/extensions/react-log-viewer/examples/realTestData.js';
44
import { LogViewer, LogViewerSearch } from '@patternfly/react-log-viewer';
55
import { Toolbar, ToolbarContent, ToolbarItem, Button, Checkbox } from '@patternfly/react-core';
66

77
export const CustomControlLogViewer = () => {
8-
const [isTextWrapped, setIsTextWrapped] = React.useState(false);
8+
const [isTextWrapped, setIsTextWrapped] = useState(false);
99
const onActionClick = () => {
1010
console.log('clicked test action button');
1111
};
@@ -34,8 +34,14 @@ export const CustomControlLogViewer = () => {
3434
Print to Console
3535
</Button>
3636
</ToolbarItem>
37-
<ToolbarItem alignSelf='center'>
38-
<Checkbox label="Wrap text" aria-label="wrap text checkbox" isChecked={isTextWrapped} id="wrap-text-checkbox" onChange={(_event, value) => setIsTextWrapped(value)} />
37+
<ToolbarItem alignSelf="center">
38+
<Checkbox
39+
label="Wrap text"
40+
aria-label="wrap text checkbox"
41+
isChecked={isTextWrapped}
42+
id="wrap-text-checkbox"
43+
onChange={(_event, value) => setIsTextWrapped(value)}
44+
/>
3945
</ToolbarItem>
4046
</ToolbarContent>
4147
</Toolbar>

packages/module/patternfly-docs/content/extensions/react-log-viewer/examples/FooterComponentLogViewer.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import React from 'react';
1+
import { useRef } from 'react';
22
import { data } from '@patternfly/react-log-viewer/patternfly-docs/content/extensions/react-log-viewer/examples/realTestData.js';
33
import { LogViewer } from '@patternfly/react-log-viewer';
44
import { Button } from '@patternfly/react-core';
55

66
export const FooterComponentLogViewer = () => {
7-
const logViewerRef = React.useRef();
7+
const logViewerRef = useRef(null);
88
const FooterButton = () => {
99
const handleClick = () => {
1010
logViewerRef.current.scrollToBottom();
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
1-
import React from 'react';
21
import { data } from '@patternfly/react-log-viewer/patternfly-docs/content/extensions/react-log-viewer/examples/realTestData.js';
32
import { LogViewer } from '@patternfly/react-log-viewer';
43
import { Banner } from '@patternfly/react-core';
54

65
export const HeaderComponentLogViewer = () => (
7-
<LogViewer
8-
hasLineNumbers={false}
9-
height={300}
10-
data={data.data}
11-
theme="dark"
12-
header={<Banner>5019 lines</Banner>}
13-
/>
6+
<LogViewer hasLineNumbers={false} height={300} data={data.data} theme="dark" header={<Banner>5019 lines</Banner>} />
147
);

packages/module/patternfly-docs/content/extensions/react-log-viewer/examples/basic.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ sourceLink: https://github.com/patternfly/react-log-viewer/blob/main/packages/mo
1414
propComponents: [LogViewer, LogViewerSearch]
1515
---
1616

17+
import { useState, Fragment, useRef } from 'react';
1718
import { LogViewer, LogViewerSearch, LogViewerContext } from '@patternfly/react-log-viewer';
1819
import { Button, Checkbox, Toolbar, ToolbarContent, ToolbarItem } from '@patternfly/react-core';
1920
import { data } from '@patternfly/react-log-viewer/patternfly-docs/content/extensions/react-log-viewer/examples/realTestData.js';
@@ -23,29 +24,35 @@ import { data } from '@patternfly/react-log-viewer/patternfly-docs/content/exten
2324
### Basic
2425

2526
```js file='./BasicLogViewer.jsx'
27+
2628
```
2729

2830
### With search
2931

3032
```js file='./BasicSearchLogViewer.jsx'
33+
3134
```
3235

3336
### With complex toolbar
3437

3538
```js file='./CustomControlLogViewer.jsx'
39+
3640
```
3741

3842
### With header component
3943

4044
```js file='./HeaderComponentLogViewer.jsx'
45+
4146
```
4247

4348
### With footer component
4449

4550
```js file='./FooterComponentLogViewer.jsx'
51+
4652
```
4753

4854
### With ANSI color logs
4955

5056
```js file='./ANSIColorLogViewer.jsx'
57+
5158
```

0 commit comments

Comments
 (0)