Skip to content

Commit 68129be

Browse files
committed
Fix issue with default values
1 parent bcfceee commit 68129be

File tree

2 files changed

+70
-4
lines changed

2 files changed

+70
-4
lines changed

packages/ra-core/src/form/useAugmentedForm.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,20 +76,24 @@ export const useAugmentedForm = <RecordType = any>(
7676

7777
const form = useForm({
7878
criteriaMode,
79-
values: defaultValuesIncludingRecord,
79+
defaultValues: defaultValuesIncludingRecord,
8080
reValidateMode,
8181
resolver: finalResolver,
8282
...rest,
8383
});
8484

8585
const formRef = useRef(form);
86+
const { reset } = form;
87+
88+
useEffect(() => {
89+
reset(defaultValuesIncludingRecord);
90+
}, [defaultValuesIncludingRecord, reset]);
8691

8792
// notify on invalid form
8893
useNotifyIsFormInvalid(form.control, !disableInvalidFormNotification);
8994

9095
const recordFromLocation = useRecordFromLocation();
9196
const recordFromLocationApplied = useRef(false);
92-
const { reset } = form;
9397
useEffect(() => {
9498
if (recordFromLocation && !recordFromLocationApplied.current) {
9599
reset(merge({}, defaultValuesIncludingRecord, recordFromLocation), {

packages/ra-ui-materialui/src/input/NumberInput.stories.tsx

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ import * as React from 'react';
22
import { required } from 'ra-core';
33
import { useFormState, useFormContext } from 'react-hook-form';
44
import { createTheme } from '@mui/material/styles';
5+
import fakeRestDataProvider from 'ra-data-fakerest';
56

67
import { NumberInput } from './NumberInput';
78
import { AdminContext } from '../AdminContext';
8-
import { Create } from '../detail';
9-
import { SimpleForm } from '../form';
9+
import { Create, Edit } from '../detail';
10+
import { SimpleForm, Toolbar } from '../form';
1011
import { FormInspector } from './common';
1112
import { TextInput } from './TextInput';
13+
import { SaveButton } from '../button';
1214

1315
export default { title: 'ra-ui-materialui/input/NumberInput' };
1416

@@ -95,6 +97,66 @@ export const DefaultValue = () => (
9597
</Wrapper>
9698
);
9799

100+
export const NullValueInCreate = () => (
101+
<AdminContext
102+
defaultTheme="light"
103+
dataProvider={fakeRestDataProvider(
104+
{ posts: [] },
105+
process.env.NODE_ENV !== 'test'
106+
)}
107+
>
108+
<Create resource="posts" sx={{ width: 600 }}>
109+
<SimpleForm
110+
toolbar={
111+
<Toolbar>
112+
<SaveButton alwaysEnable />
113+
</Toolbar>
114+
}
115+
>
116+
<NumberInput source="views" />
117+
<FormInspector name="views" />
118+
</SimpleForm>
119+
</Create>
120+
</AdminContext>
121+
);
122+
123+
export const NullValueInEdit = () => (
124+
<AdminContext
125+
defaultTheme="light"
126+
dataProvider={fakeRestDataProvider(
127+
{
128+
posts: [
129+
{
130+
id: 1,
131+
title: 'Lorem Ipsum',
132+
// Don't define views
133+
},
134+
],
135+
},
136+
process.env.NODE_ENV !== 'test'
137+
)}
138+
>
139+
<Edit
140+
id="1"
141+
resource="posts"
142+
sx={{ width: 600 }}
143+
mutationMode="pessimistic"
144+
>
145+
<SimpleForm
146+
toolbar={
147+
<Toolbar>
148+
<SaveButton alwaysEnable />
149+
</Toolbar>
150+
}
151+
>
152+
<TextInput source="title" />
153+
<NumberInput source="views" />
154+
<FormInspector name="views" />
155+
</SimpleForm>
156+
</Edit>
157+
</AdminContext>
158+
);
159+
98160
export const HelperText = () => (
99161
<Wrapper>
100162
<NumberInput source="views" />

0 commit comments

Comments
 (0)