Skip to content

Commit 756c739

Browse files
pwolfertzarahzachz
and
zarahzachz
authored
[WNMGDS-2690] Use new JSX transform (#2994)
* Updating Babel config to support removing React import on unit tests. * React import no longer needed, removing increases perf. Updating linting/TS configs to support change. * Update all the React imports with a codemod `npx react-codemod update-react-imports` * The codemod was too eager to add `* as React` In some cases, it was only used for types, but our compilers were failing to strip out the import * Fix issue in `examples/react-app` to illustrate a point We can use our updated library that uses the new JSX transform in a project that doesn't yet use the new JSX transform, but first I had to fix the example so it imported React. Previously it relied on the fact that our library defined `React` globally! Now that the point has been illustrated, I can actually just update these examples to use the new JSX transform as well * Update the examples to use the new JSX transform --------- Co-authored-by: zarahzachz <[email protected]>
1 parent 7e78d4d commit 756c739

File tree

363 files changed

+202
-398
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

363 files changed

+202
-398
lines changed

.eslintrc.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
module.exports = {
2-
extends: ['eslint:recommended', 'plugin:react/recommended', 'plugin:react-hooks/recommended'],
2+
extends: [
3+
'eslint:recommended',
4+
'plugin:react/recommended',
5+
'plugin:react-hooks/recommended',
6+
'plugin:react/jsx-runtime',
7+
],
38
env: {
49
browser: true,
510
es6: true,

.storybook/docs/HtmlElementArgs.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import humanizeList from 'humanize-react';
32
import { useOf } from '@storybook/blocks';
43

.storybook/docs/WebComponentArgsTable.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import { useOf } from '@storybook/blocks';
32

43
function optToCodeBlock(opt: undefined | string) {

.storybook/docs/WebComponentEventsTable.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import { useOf } from '@storybook/blocks';
32

43
/**

.storybook/preview.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import './storybookStyles.scss';
2-
import React from 'react';
32
import DocumentationTemplate from './docs/DocumentationTemplate.mdx';
43
import { config } from '../packages/design-system/src/components/config';
54
import { setLanguage } from '../packages/design-system/src/components/i18n';

babel.config.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"presets": [
33
"@babel/preset-env",
4-
"@babel/preset-react",
4+
["@babel/preset-react", { "runtime": "automatic" }],
55
"@babel/preset-typescript"
66
]
7-
}
7+
}

examples/astro/src/components/react/AccordionExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { Accordion, AccordionItem } from '@cmsgov/design-system';
2-
import React from 'react';
32

43
function AccordionExample() {
54
return (

examples/astro/src/components/react/AlertExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { Alert } from '@cmsgov/design-system';
2-
import React from 'react';
32

43
function AlertExample() {
54
return (

examples/astro/src/components/react/AutocompleteExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { Autocomplete, TextField } from '@cmsgov/design-system';
2-
import React from 'react';
32

43
function AutocompleteExample() {
54
return (

examples/astro/src/components/react/BadgeExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { Badge } from '@cmsgov/design-system';
2-
import React from 'react';
32

43
function BadgeExample() {
54
return (

examples/astro/src/components/react/ButtonExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { Button } from '@cmsgov/design-system';
2-
import React from 'react';
32

43
function ButtonExample() {
54
return (

examples/astro/src/components/react/ChoiceListExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { ChoiceList } from '@cmsgov/design-system';
2-
import React from 'react';
32

43
function ChoiceListExample() {
54
return (

examples/astro/src/components/react/DropdownExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { Dropdown } from '@cmsgov/design-system';
2-
import React from 'react';
32

43
function DropdownExample() {
54
const dropdownOptions = [

examples/astro/src/components/react/FilterChipExample.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState } from 'react';
1+
import { useState } from 'react';
22
import { FilterChip } from '@cmsgov/design-system';
33

44
function FilterChipExample() {

examples/astro/src/components/react/HelpDrawerExample.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { HelpDrawer, HelpDrawerToggle } from '@cmsgov/design-system';
2-
import React, { useState } from 'react';
2+
import { useState } from 'react';
33

44
function HelpDrawerExample() {
55
const [showHelpDrawer, setShowHelpDrawer] = useState(false);

examples/astro/src/components/react/MaskedFieldExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import { TextField } from '@cmsgov/design-system';
32

43
function MaskedFieldExample() {

examples/astro/src/components/react/ModalDialogExample.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Button, Dialog } from '@cmsgov/design-system';
2-
import React, { useState } from 'react';
2+
import { useState } from 'react';
33

44
function ModalDialogExample() {
55
const [showExampleModal, setShowExampleModal] = useState(false);

examples/astro/src/components/react/MonthPickerExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { MonthPicker } from '@cmsgov/design-system';
2-
import React from 'react';
32

43
function MonthPickerExample() {
54
return (

examples/astro/src/components/react/MultiInputDateFieldExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { MultiInputDateField } from '@cmsgov/design-system';
2-
import React from 'react';
32

43
function MultiInputDateFieldExample() {
54
return (

examples/astro/src/components/react/PaginationExample.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Pagination } from '@cmsgov/design-system';
2-
import React, { useState } from 'react';
2+
import { useState } from 'react';
33

44
function PaginationExample() {
55
const [page, setPage] = useState(5);

examples/astro/src/components/react/SingleInputDateFieldExample.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState } from 'react';
1+
import { useState } from 'react';
22
import { SingleInputDateField } from '@cmsgov/design-system';
33

44
function SingleInputDateFieldExample() {

examples/astro/src/components/react/SpinnerExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import { Spinner } from '@cmsgov/design-system';
32

43
function SpinnerExample() {

examples/astro/src/components/react/TableExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import {
66
TableHead,
77
TableRow,
88
} from '@cmsgov/design-system';
9-
import React from 'react';
109

1110
function TableExample() {
1211
return (

examples/astro/src/components/react/TabsExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { TabPanel, Tabs } from '@cmsgov/design-system';
2-
import React from 'react';
32

43
function TabsExample() {
54
return (

examples/astro/src/components/react/TextFieldExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import { TextField } from '@cmsgov/design-system';
32

43
function TextFieldExample() {

examples/astro/src/components/react/TooltipExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { Tooltip, TooltipIcon } from '@cmsgov/design-system';
2-
import React from 'react';
32

43
function TooltipExample() {
54
return (

examples/astro/src/components/react/UsaBannerExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import { UsaBanner } from '@cmsgov/design-system';
32

43
function UsaBannerExample() {

examples/astro/src/components/react/VerticalNavigationExample.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import { VerticalNav } from '@cmsgov/design-system';
32

43
function VerticalNavigationExample() {

examples/astro/tsconfig.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"extends": "astro/tsconfigs/strict",
33
"compilerOptions": {
4-
"jsx": "react",
4+
"jsx": "react-jsx",
55
}
66
}

examples/react-app/babel.config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module.exports = function (api) {
99
corejs: '3.0.0',
1010
},
1111
],
12-
'@babel/preset-react',
12+
['@babel/preset-react', { runtime: 'automatic' }],
1313
];
1414

1515
return {

examples/react-app/src/scripts/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// to only bundle imported components. Without this optimization, all components will be imported
33
// your build process.
44
import { Alert, Button, Drawer, UsaBanner } from '@cmsgov/design-system';
5-
import React, { useState } from 'react';
5+
import { useState } from 'react';
66
import ReactDOM from 'react-dom';
77

88
const Example = function () {

packages/design-system/src/components/Accordion/Accordion.stories.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import type { Meta, StoryObj } from '@storybook/react';
32
import { Accordion } from './Accordion';
43
import { AccordionItem } from './AccordionItem';

packages/design-system/src/components/Accordion/Accordion.test.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import Accordion from './Accordion';
32
import AccordionItem from './AccordionItem';
43
import { render, screen } from '@testing-library/react';

packages/design-system/src/components/Accordion/Accordion.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import type * as React from 'react';
22
import { FunctionComponent } from 'react';
33
import classNames from 'classnames';
44

packages/design-system/src/components/Accordion/AccordionItem.test.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import AccordionItem from './AccordionItem';
32
import { render, screen } from '@testing-library/react';
43
import userEvent from '@testing-library/user-event';

packages/design-system/src/components/Accordion/AccordionItem.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import React, { useState } from 'react';
1+
import { useState } from 'react';
2+
import type * as React from 'react';
23
import { AddIcon, RemoveIcon } from '../Icons';
34
import classNames from 'classnames';
45
import useId from '../utilities/useId';

packages/design-system/src/components/Alert/Alert.stories.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import type { Meta, StoryObj } from '@storybook/react';
32
import { Button } from '../Button';
43
import Alert from './Alert';

packages/design-system/src/components/Alert/Alert.test.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import Alert, { AlertProps } from './Alert';
32
import { UtagContainer } from '../analytics';
43
import { config } from '../config';

packages/design-system/src/components/Alert/Alert.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import type * as React from 'react';
22
import classNames from 'classnames';
33
import mergeRefs from '../utilities/mergeRefs';
44
import useAutofocus from '../utilities/useAutoFocus';

packages/design-system/src/components/Autocomplete/Autocomplete.stories.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import React, { useState } from 'react';
1+
import { useState } from 'react';
2+
import type * as React from 'react';
23
import Autocomplete from './Autocomplete';
34
import TextField from '../TextField/TextField';
45
import uniqueId from 'lodash/uniqueId';

packages/design-system/src/components/Autocomplete/Autocomplete.test.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import Autocomplete from './Autocomplete';
32
import TextField from '../TextField/TextField';
43
import { render, screen } from '@testing-library/react';

packages/design-system/src/components/Autocomplete/Autocomplete.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import React, { useRef } from 'react';
1+
import { cloneElement, useRef } from 'react';
2+
import type * as React from 'react';
23
import Button from '../Button/Button';
34
import DropdownMenu from '../Dropdown/DropdownMenu';
45
import classNames from 'classnames';
@@ -295,7 +296,7 @@ export const Autocomplete = (props: AutocompleteProps) => {
295296

296297
return (
297298
<div className={rootClassName} ref={wrapperRef}>
298-
{React.cloneElement(textField, textFieldProps)}
299+
{cloneElement(textField, textFieldProps)}
299300

300301
{((state.isOpen && reactStatelyItems.length > 0) || (state.isFocused && statusMessage)) && (
301302
<DropdownMenu

packages/design-system/src/components/Autocomplete/utils.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { ReactElement, ReactNode } from 'react';
1+
import { isValidElement, Children, ReactElement, ReactNode } from 'react';
22
import { AutocompleteProps, AutocompleteItem } from './Autocomplete';
33
import { ComboBoxState, Item } from '../react-aria'; // from react-stately
44
import { TextField } from '../TextField';
@@ -30,7 +30,7 @@ export function renderStatusMessage(message: ReactNode) {
3030
* Determine if a React component is a TextField
3131
*/
3232
function isTextField(child?: ReactNode): child is ReactElement {
33-
if (!child || !React.isValidElement(child)) {
33+
if (!child || !isValidElement(child)) {
3434
return false;
3535
}
3636

@@ -41,7 +41,7 @@ function isTextField(child?: ReactNode): child is ReactElement {
4141

4242
export function getTextFieldChild(children: ReactNode): ReactElement | undefined {
4343
let textField;
44-
React.Children.forEach(children, (child) => {
44+
Children.forEach(children, (child) => {
4545
if (isTextField(child)) {
4646
textField = child;
4747
}

packages/design-system/src/components/Badge/Badge.stories.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import type { Meta, StoryObj } from '@storybook/react';
32
import Badge from './Badge';
43

packages/design-system/src/components/Badge/Badge.test.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import Badge from './Badge';
32
import { render, screen } from '@testing-library/react';
43

packages/design-system/src/components/Badge/Badge.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import type * as React from 'react';
22
import classNames from 'classnames';
33
import { t } from '../i18n';
44

packages/design-system/src/components/Button/Button.stories.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import Button from './Button';
32
import { NextIcon } from '../Icons';
43
import Spinner from '../Spinner/Spinner';

packages/design-system/src/components/Button/Button.test.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import Button from './Button';
32
import { UtagContainer } from '../analytics';
43
import { config } from '../config';

packages/design-system/src/components/Button/Button.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import type * as React from 'react';
22
import classNames from 'classnames';
33
import mergeRefs from '../utilities/mergeRefs';
44
import useButtonAnalytics from './useButtonAnalytics';

packages/design-system/src/components/ChoiceList/Choice.stories.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import type { Meta, StoryObj } from '@storybook/react';
32
import Choice from './Choice';
43
import { Alert } from '../Alert';

packages/design-system/src/components/ChoiceList/Choice.test.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import Choice, { ChoiceProps, ChoiceType } from './Choice';
32
import { render, screen } from '@testing-library/react';
43
import userEvent from '@testing-library/user-event';

packages/design-system/src/components/ChoiceList/Choice.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import React, { useEffect, useState } from 'react';
1+
import { useEffect, useState } from 'react';
2+
import type * as React from 'react';
23
import EvEmitter from 'ev-emitter';
34
import classNames from 'classnames';
45
import useId from '../utilities/useId';

packages/design-system/src/components/ChoiceList/ChoiceList.stories.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import type { Meta, StoryObj } from '@storybook/react';
32
import { Alert } from '../Alert';
43
import ChoiceList from './ChoiceList';

packages/design-system/src/components/ChoiceList/ChoiceList.test.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import ChoiceList, { ChoiceListType } from './ChoiceList';
32
import { render, waitFor, screen } from '@testing-library/react';
43
import userEvent from '@testing-library/user-event';

packages/design-system/src/components/ChoiceList/ChoiceList.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Choice, { ChoiceProps as ChoiceComponentProps } from './Choice';
22
import { Label } from '../Label';
3-
import React from 'react';
3+
import type * as React from 'react';
44
import classNames from 'classnames';
55
import describeField from '../utilities/describeField';
66
import useId from '../utilities/useId';

packages/design-system/src/components/CloseButton/CloseButton.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import type * as React from 'react';
22
import classNames from 'classnames';
33
import useId from '../utilities/useId';
44
import { CloseIconThin } from '../Icons';

packages/design-system/src/components/DateField/CustomDayPicker.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import CustomDayPickerCaption from './CustomDayPickerCaption';
32
import format from 'date-fns/format';
43
import { DayPicker, DayPickerSingleProps } from 'react-day-picker';

packages/design-system/src/components/DateField/CustomDayPickerCaption.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import type * as React from 'react';
22
import { ArrowIcon } from '../Icons';
33
import { CaptionDropdowns, CaptionProps, useDayPicker, useNavigation } from 'react-day-picker';
44

packages/design-system/src/components/DateField/DateInput.test.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import { createRef } from 'react';
32
import DateInput, { DateInputProps } from './DateInput';
43
import userEvent from '@testing-library/user-event';

0 commit comments

Comments
 (0)