Skip to content

Commit 43d2cff

Browse files
authored
Upgrade React to v18 (#1965)
* upgrade React to v18 * use addon-interactions * remove flaky visual test
1 parent 8636f80 commit 43d2cff

File tree

21 files changed

+676
-509
lines changed

21 files changed

+676
-509
lines changed

.lintstagedrc.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
module.exports = {
2-
'**/*.{js,ts,tsx}': ['eslint --fix', 'jest --bail --findRelatedTests'],
2+
'**/*.{js,ts,tsx}': [
3+
'eslint --fix',
4+
'jest --bail --findRelatedTests --passWithNoTests'
5+
],
36
'**/*.{js,json,jsx,md,scss,ts,tsx,yaml,yml}': 'prettier --write'
47
}

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,10 @@
6363
"prettier-config-standard": "^5.0.0",
6464
"ts-node": "^10.8.1",
6565
"turbo": "^1.3.1",
66-
"typescript": "^4.6.3"
66+
"typescript": "^4.7.4"
6767
},
6868
"resolutions": {
69-
"trim": "0.0.3"
69+
"trim": "0.0.3",
70+
"@types/react": "^18.0.14"
7071
}
7172
}

webview/.storybook/main.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ export default {
55
stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
66
staticDirs: ['../../extension/src/test/fixtures/plotsDiff/staticImages'],
77
addons: [
8+
'storybook-addon-designs',
89
'@storybook/addon-essentials',
10+
'@storybook/addon-interactions',
911
{
1012
name: '@storybook/preset-scss',
1113
options: {
@@ -16,8 +18,7 @@ export default {
1618
}
1719
}
1820
}
19-
},
20-
'storybook-addon-designs'
21+
}
2122
],
2223
core: {
2324
builder: 'webpack5'

webview/__mocks__/@vscode/webview-ui-toolkit/react.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import React from 'react'
33

44
type MockButtonProps = {
55
onClick: () => void
6-
children: React.ReactChildren
6+
children: React.ReactNode
77
}
88

99
export const VSCodeButton: React.FC<MockButtonProps> = ({

webview/package.json

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,37 +28,38 @@
2828
"classnames": "^2.2.6",
2929
"lodash.clonedeep": "^4.5.0",
3030
"lodash.merge": "^4.6.2",
31-
"react": "^17.0.1",
32-
"react-dom": "^17.0.1",
31+
"react": "^18.2.0",
32+
"react-dom": "^18.2.0",
3333
"react-redux": "^8.0.2",
34-
"react-table": "^7.7.0",
34+
"react-table": "^7.8.0",
3535
"react-vega": "^7.4.4",
3636
"react-virtualized": "^9.22.3",
3737
"vega": "^5.21.0",
3838
"vega-lite": "^5.2.0"
3939
},
4040
"devDependencies": {
41-
"@storybook/addon-essentials": "^6.5.8",
42-
"@storybook/addons": "^6.5.8",
43-
"@storybook/builder-webpack5": "^6.5.8",
44-
"@storybook/manager-webpack5": "^6.5.8",
41+
"@storybook/addon-essentials": "^6.5.9",
42+
"@storybook/addon-interactions": "^6.5.9",
43+
"@storybook/addons": "^6.5.9",
44+
"@storybook/builder-webpack5": "^6.5.9",
45+
"@storybook/manager-webpack5": "^6.5.9",
4546
"@storybook/preset-scss": "^1.0.3",
46-
"@storybook/react": "^6.5.8",
47+
"@storybook/react": "^6.5.9",
4748
"@svgr/cli": "^6.0.0",
48-
"@testing-library/jest-dom": "^5.15.0",
49-
"@testing-library/react": "^12.1.2",
49+
"@testing-library/jest-dom": "^5.16.4",
50+
"@testing-library/react": "^13.3.0",
5051
"@types/classnames": "^2.2.9",
5152
"@types/jest": "^27.4.1",
5253
"@types/jsdom": "^16.2.6",
5354
"@types/node": "^16.11.8",
54-
"@types/react": "^17.0.35",
55-
"@types/react-dom": "^17.0.11",
55+
"@types/react": "^18.0.14",
56+
"@types/react-dom": "^18.0.5",
5657
"@types/react-measure": "^2.0.8",
57-
"@types/react-table": "^7.7.8",
58+
"@types/react-table": "^7.7.12",
5859
"@types/react-virtualized": "^9.21.21",
5960
"@types/webpack": "^5.28.0",
6061
"@welldone-software/why-did-you-render": "^7.0.1",
61-
"chromatic": "^6.5.3",
62+
"chromatic": "^6.7.0",
6263
"clean-webpack-plugin": "^4.0.0",
6364
"css-loader": "^6.7.1",
6465
"file-loader": "^6.2.0",

webview/src/experiments/components/table/Cell.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ export const CellWrapper: React.FC<
9797
CellProp & {
9898
changes?: string[]
9999
cellId: string
100+
children?: React.ReactNode
100101
}
101102
> = ({ cell, cellId, changes }) => (
102103
<div

webview/src/experiments/components/table/RowSelectionContext.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ export const RowSelectionContext = createContext<RowSelectionContextValue>({
1313
toggleRowSelected: undefined
1414
})
1515

16-
export const RowSelectionProvider: React.FC = ({ children }) => {
16+
export const RowSelectionProvider: React.FC<{ children: React.ReactNode }> = ({
17+
children
18+
}) => {
1719
const [selectedRows, setSelectedRows] = useState<
1820
Record<string, RowProp | undefined>
1921
>({})

webview/src/experiments/components/table/Table.test.tsx

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -318,25 +318,36 @@ describe('Table', () => {
318318
})
319319

320320
it('should resize columns and persist new state when a separator is clicked and dragged', async () => {
321+
const columnWidths = {
322+
id: 333
323+
}
324+
321325
const tableDataWithColumnSetting: TableData = {
322326
...sortingTableDataFixture,
323-
columnWidths: {
324-
id: 333
325-
}
327+
columnWidths
326328
}
327329
render(<ExperimentsTable tableData={tableDataWithColumnSetting} />)
328330
const [experimentColumnResizeHandle] = await screen.findAllByRole(
329331
'separator'
330332
)
331333

332334
fireEvent.mouseDown(experimentColumnResizeHandle, {
333-
bubbles: true,
334-
clientX: 0
335+
bubbles: true
336+
})
337+
fireEvent.mouseUp(experimentColumnResizeHandle)
338+
339+
expect(mockedPostMessage).toBeCalledWith({
340+
payload: { id: 'id', width: 333 },
341+
type: MessageFromWebviewType.RESIZE_COLUMN
335342
})
336-
fireEvent.mouseMove(document, {
337-
bubbles: true,
338-
clientX: 20
343+
mockedPostMessage.mockReset()
344+
345+
fireEvent.mouseDown(experimentColumnResizeHandle, {
346+
bubbles: true
339347
})
348+
349+
columnWidths.id = 353
350+
340351
fireEvent.mouseUp(experimentColumnResizeHandle)
341352

342353
expect(mockedPostMessage).toBeCalledWith({

webview/src/experiments/react-table-config.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ declare module 'react-table' {
4747

4848
export interface Cell {
4949
isPlaceholder: boolean
50+
children?: React.ReactNode
5051
}
5152

5253
export interface Row<

webview/src/experiments/util/buildDynamicColumns.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,16 +107,15 @@ const buildDynamicColumns = (
107107

108108
const childColumns = buildDynamicColumns(properties, path)
109109

110-
const column: ColumnGroup<Experiment> | TableColumn<Experiment> = {
110+
return {
111111
Cell,
112112
Header,
113113
accessor: pathArray && buildAccessor(pathArray),
114114
columns: childColumns.length > 0 ? childColumns : undefined,
115115
group: type,
116116
id: path,
117117
name: label
118-
}
119-
return column
118+
} as ColumnGroup<Experiment> | TableColumn<Experiment>
120119
})
121120

122121
const findMaxDepth = (columns: ColumnGroup<Experiment>[], depth = 1): number =>

0 commit comments

Comments
 (0)