From 54eece1f6b9595537a32fbb736a4246c84e9c16f Mon Sep 17 00:00:00 2001 From: Maximiliano forlenza Date: Wed, 8 Feb 2023 17:39:12 -0300 Subject: [PATCH] fix(formbuilder): fix when new section is added and a new id is assigned --- package.json | 2 +- src/components/FormBuilder/FormBuilder.js | 5 +++-- src/components/FormBuilder/FormBuilder.stories.js | 9 +++++---- src/components/QuestionBuilder/Wrapper.js | 1 + 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 4846b82..989e39a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@indec/form-builder", - "version": "1.5.1", + "version": "1.5.2", "description": "Form builder", "main": "index.js", "private": false, diff --git a/src/components/FormBuilder/FormBuilder.js b/src/components/FormBuilder/FormBuilder.js index 8471af8..b8c3aae 100644 --- a/src/components/FormBuilder/FormBuilder.js +++ b/src/components/FormBuilder/FormBuilder.js @@ -10,6 +10,7 @@ import useSectionInitialValues from '@/hooks/useSectionInitialValues'; import getWarnings from '@/utils/getWarnings'; import sectionPropTypes from '@/utils/propTypes/section'; import getSchemas from '@/utils/getSchemas'; +import getLastId from '@/utils/getLastId'; import Modals from './Modals'; @@ -52,8 +53,8 @@ function FormBuilder({ const addNewSection = (setValues, values) => { const newValues = values; - const lastSection = formInitialValues[section.name].sort((firstItem, secondItem) => secondItem.id - firstItem.id)[0]; - newValues[section.name].push({...formInitialValues[section.name][0], id: lastSection.id + 1}); + const lastSection = getLastId(values[section.name]); + newValues[section.name].push({...formInitialValues[section.name][0], id: lastSection + 1}); return setValues(newValues); }; diff --git a/src/components/FormBuilder/FormBuilder.stories.js b/src/components/FormBuilder/FormBuilder.stories.js index e62fd1d..8411ca6 100644 --- a/src/components/FormBuilder/FormBuilder.stories.js +++ b/src/components/FormBuilder/FormBuilder.stories.js @@ -124,7 +124,7 @@ const sections = [ userVarName: 'S1P3' } ], - multiple: false, + multiple: true, favorite: false, interruption: { name: 'S1I1', @@ -217,21 +217,22 @@ const sections = [ function Template(args) { const [page, setPage] = React.useState(0); + React.useEffect(() => { if (!sections[page]) { setPage(0); } }, [page]); + return ( setPage(page + 1)} onPrevious={() => setPage(page - 1)} - nextSection={sections[page + 1]?.name} - previousSection={sections[page - 1]?.name} + isLastSection={sections.length - 1 === page} isSurvey - {...args} /> ); } diff --git a/src/components/QuestionBuilder/Wrapper.js b/src/components/QuestionBuilder/Wrapper.js index 1990bd9..eb89579 100644 --- a/src/components/QuestionBuilder/Wrapper.js +++ b/src/components/QuestionBuilder/Wrapper.js @@ -57,6 +57,7 @@ Wrapper.propTypes = { }) ), PropTypes.string, + PropTypes.number, PropTypes.arrayOf(PropTypes.string) ]) }).isRequired