feat: apply default values for dynamic fields
This commit is contained in:
@@ -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 (
|
||||
|
||||
Reference in New Issue
Block a user