Merge pull request #2272 from automatisch/AUT-1409
feat: accept falsy default values
This commit is contained in:
@@ -14,7 +14,7 @@ function CodeEditor(props) {
|
||||
required,
|
||||
name,
|
||||
label,
|
||||
defaultValue,
|
||||
defaultValue = '',
|
||||
shouldUnregister = false,
|
||||
disabled,
|
||||
'data-test': dataTest,
|
||||
@@ -39,7 +39,7 @@ function CodeEditor(props) {
|
||||
<Controller
|
||||
rules={{ required }}
|
||||
name={name}
|
||||
defaultValue={defaultValue || ''}
|
||||
defaultValue={defaultValue}
|
||||
control={control}
|
||||
shouldUnregister={shouldUnregister}
|
||||
render={({ field }) => (
|
||||
|
||||
@@ -53,7 +53,7 @@ function ControlledAutocomplete(props) {
|
||||
<Controller
|
||||
rules={{ required }}
|
||||
name={name}
|
||||
defaultValue={defaultValue || ''}
|
||||
defaultValue={defaultValue}
|
||||
control={control}
|
||||
shouldUnregister={shouldUnregister}
|
||||
render={({
|
||||
|
||||
@@ -23,12 +23,29 @@ function DynamicField(props) {
|
||||
return fields.reduce((previousValue, field) => {
|
||||
return {
|
||||
...previousValue,
|
||||
[field.key]: '',
|
||||
[field.key]: field.value ?? '',
|
||||
__id: uuidv4(),
|
||||
};
|
||||
}, {});
|
||||
}, [fields]);
|
||||
|
||||
const generateDefaultValue = React.useCallback(() => {
|
||||
if (defaultValue?.length > 0) {
|
||||
return defaultValue.map((item) => {
|
||||
return fields.reduce((previousValue, field) => {
|
||||
return {
|
||||
...previousValue,
|
||||
// if field value is different than null or undefined - use it,
|
||||
// otherwise use the parent default value
|
||||
[field.key]: field.value ?? item[field.key] ?? '',
|
||||
};
|
||||
}, {});
|
||||
});
|
||||
} else {
|
||||
return [createEmptyItem()];
|
||||
}
|
||||
}, [defaultValue, fields, createEmptyItem]);
|
||||
|
||||
const addItem = React.useCallback(() => {
|
||||
const values = getValues(name);
|
||||
if (!values) {
|
||||
@@ -52,13 +69,11 @@ function DynamicField(props) {
|
||||
React.useEffect(
|
||||
function addInitialGroupWhenEmpty() {
|
||||
const fieldValues = getValues(name);
|
||||
if (!fieldValues && defaultValue) {
|
||||
setValue(name, defaultValue);
|
||||
} else if (!fieldValues) {
|
||||
setValue(name, [createEmptyItem()]);
|
||||
if (!fieldValues) {
|
||||
setValue(name, generateDefaultValue());
|
||||
}
|
||||
},
|
||||
[createEmptyItem, defaultValue],
|
||||
[generateDefaultValue],
|
||||
);
|
||||
|
||||
return (
|
||||
|
||||
@@ -162,6 +162,7 @@ function InputCreator(props) {
|
||||
required={required}
|
||||
disabled={disabled}
|
||||
shouldUnregister={shouldUnregister}
|
||||
defaultValue={value}
|
||||
/>
|
||||
|
||||
{isDynamicFieldsLoading && !additionalFields?.length && (
|
||||
|
||||
@@ -23,7 +23,7 @@ function TextField(props) {
|
||||
const {
|
||||
required,
|
||||
name,
|
||||
defaultValue,
|
||||
defaultValue = '',
|
||||
shouldUnregister = false,
|
||||
clickToCopy = false,
|
||||
readOnly = false,
|
||||
@@ -38,7 +38,7 @@ function TextField(props) {
|
||||
<Controller
|
||||
rules={{ required }}
|
||||
name={name}
|
||||
defaultValue={defaultValue || ''}
|
||||
defaultValue={defaultValue}
|
||||
control={control}
|
||||
shouldUnregister={shouldUnregister}
|
||||
render={({
|
||||
|
||||
Reference in New Issue
Block a user