Skip to content

Commit 6686fb7

Browse files
committed
feat: create update-register codemod
1 parent ffa5eef commit 6686fb7

18 files changed

+463
-1
lines changed

.eslintrc.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,13 @@ module.exports = {
1414
semi: ['error', 'always'],
1515
'comma-dangle': ['error', 'never'],
1616
'space-before-function-paren': ['error', 'never']
17-
}
17+
},
18+
overrides: [
19+
{
20+
files: 'transforms/__testfixtures__/**',
21+
rules: {
22+
'no-undef': 'off'
23+
}
24+
}
25+
]
1826
};

README.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,46 @@ This will start an interactive wizard, and then run the specified transform.
3434

3535
### Migrate from V6 to V7
3636

37+
#### `v7/update-register`
38+
39+
Update the `register` API inside a component which use `useForm` of React Hook Form. This transform is not applied if the component doesn't use `useForm`.
40+
41+
<details>
42+
<summary>Examples</summary>
43+
44+
```diff
45+
- <input ref={register} name="example" />
46+
+ <input {...register('example')} />
47+
48+
- <input ref={register()} name="example" />
49+
+ <input {...register('example')} />
50+
51+
- <input ref={register()} name="example" />
52+
+ <input {...register('example')} />
53+
54+
- <input ref={register({ required: true })} name="example" />
55+
+ <input {...register('example', { required: true })} />
56+
57+
- <TextInput ref={register({ required: true })} name="example" />
58+
+ <TextInput {...register('example', { required: true })} />
59+
```
60+
61+
With a custom `register` name
62+
63+
```diff
64+
function MyForm() {
65+
const { register: customRegister } = useForm();
66+
67+
return (
68+
<form>
69+
- <input ref={customRegister} name="example" />
70+
+ <input {...customRegister('example')} />
71+
</form>
72+
);
73+
}
74+
```
75+
76+
</details>
3777

3878
## Backers
3979

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { useForm } from 'react-hook-form';
2+
3+
const Form = () => {
4+
const { register } = useForm();
5+
6+
return (
7+
<form>
8+
<input {...register('example', { required: true })} />
9+
<input {...register('example-2')} />
10+
<input {...register('example-3')} />
11+
<input ref="useless-ref" name="example" />
12+
</form>
13+
);
14+
};
15+
16+
export default Form;
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { useForm } from 'react-hook-form';
2+
3+
const Form = () => {
4+
const { register } = useForm();
5+
6+
return (
7+
<form>
8+
<input {...register('example', { required: true })} />
9+
<input {...register('example-2')} />
10+
<input {...register('example-3')} />
11+
<input ref="useless-ref" name="example" />
12+
</form>
13+
);
14+
};
15+
16+
export default Form;
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { useForm } from 'react-hook-form';
2+
3+
const Form = () => {
4+
const { register, handleSubmit } = useForm();
5+
6+
return (
7+
<form onSubmit={handleSubmit}>
8+
<InputContainer label="Email">
9+
<Input
10+
name="email"
11+
ref={register}
12+
autoComplete="username"
13+
/>
14+
</InputContainer>
15+
<InputContainer label="Password *">
16+
<Input
17+
name="password"
18+
ref={register({
19+
required: true,
20+
validate: (value) => !!value
21+
})}
22+
type="password"
23+
/>
24+
</InputContainer>
25+
</form>
26+
);
27+
};
28+
29+
export default Form;
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { useForm } from 'react-hook-form';
2+
3+
const Form = () => {
4+
const { register, handleSubmit } = useForm();
5+
6+
return (
7+
<form onSubmit={handleSubmit}>
8+
<InputContainer label="Email">
9+
<Input {...register('email')} autoComplete="username" />
10+
</InputContainer>
11+
<InputContainer label="Password *">
12+
<Input
13+
{...register('password', {
14+
required: true,
15+
validate: (value) => !!value
16+
})}
17+
type="password" />
18+
</InputContainer>
19+
</form>
20+
);
21+
};
22+
23+
export default Form;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { useForm } from 'react-hook-form';
2+
3+
function Input() {
4+
return <input />;
5+
}
6+
7+
const Form = () => {
8+
const { register } = useForm();
9+
10+
return (
11+
<form>
12+
<input ref={register({ required: true })} name="example" />
13+
<input ref={register()} name="example-2" />
14+
<input ref={register} name="example-3" />
15+
<Input ref={register} name="example-4" />
16+
<input ref="useless-ref" name="example" />
17+
</form>
18+
);
19+
};
20+
21+
export default Form;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { useForm } from 'react-hook-form';
2+
3+
function Input() {
4+
return <input />;
5+
}
6+
7+
const Form = () => {
8+
const { register } = useForm();
9+
10+
return (
11+
<form>
12+
<input {...register('example', { required: true })} />
13+
<input {...register('example-2')} />
14+
<input {...register('example-3')} />
15+
<Input {...register('example-4')} />
16+
<input ref="useless-ref" name="example" />
17+
</form>
18+
);
19+
};
20+
21+
export default Form;
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { useForm } from 'react-hook-form';
2+
3+
const Form = () => {
4+
const { register } = useForm();
5+
6+
return (
7+
<form>
8+
<input ref={register({ required: true })} name="example" />
9+
<input ref={register()} name="example-2" />
10+
<input ref={register} name="example-3" />
11+
<input ref="useless-ref" name="example" />
12+
</form>
13+
);
14+
};
15+
16+
export default Form;
17+
18+
export const Form2 = () => {
19+
const { register } = useForm();
20+
21+
return (
22+
<form>
23+
<input ref={register({ required: true })} name="example" />
24+
<input ref={register()} name="example-2" />
25+
<input ref={register} name="example-3" />
26+
<input ref="useless-ref" name="example" />
27+
</form>
28+
);
29+
};
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { useForm } from 'react-hook-form';
2+
3+
const Form = () => {
4+
const { register } = useForm();
5+
6+
return (
7+
<form>
8+
<input {...register('example', { required: true })} />
9+
<input {...register('example-2')} />
10+
<input {...register('example-3')} />
11+
<input ref="useless-ref" name="example" />
12+
</form>
13+
);
14+
};
15+
16+
export default Form;
17+
18+
export const Form2 = () => {
19+
const { register } = useForm();
20+
21+
return (
22+
<form>
23+
<input {...register('example', { required: true })} />
24+
<input {...register('example-2')} />
25+
<input {...register('example-3')} />
26+
<input ref="useless-ref" name="example" />
27+
</form>
28+
);
29+
};

0 commit comments

Comments
 (0)