Skip to content

Commit

Permalink
💩 [open-formulieren/open-forms#4699] Trigger AddressNL validation aft…
Browse files Browse the repository at this point in the history
…er dirty
  • Loading branch information
robinmolen committed Jan 29, 2025
1 parent 74147f9 commit e321f06
Showing 1 changed file with 30 additions and 17 deletions.
47 changes: 30 additions & 17 deletions src/formio/components/AddressNL.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@
*/
import {Formik, useFormikContext} from 'formik';
import debounce from 'lodash/debounce';
import {useContext, useEffect} from 'react';
import isEqual from 'lodash/isEqual';

Check failure on line 6 in src/formio/components/AddressNL.jsx

View workflow job for this annotation

GitHub Actions / Create 'production' build

'isEqual' is defined but never used

Check failure on line 6 in src/formio/components/AddressNL.jsx

View workflow job for this annotation

GitHub Actions / Create storybook build

'isEqual' is defined but never used

Check failure on line 6 in src/formio/components/AddressNL.jsx

View workflow job for this annotation

GitHub Actions / Lint code (ESLint)

'isEqual' is defined but never used
import {useContext, useEffect, useState} from 'react';
import {createRoot} from 'react-dom/client';
import {Formio} from 'react-formio';
import {FormattedMessage, IntlProvider, defineMessages, useIntl} from 'react-intl';
import {z} from 'zod';
import {toFormikValidationSchema} from 'zod-formik-adapter';
import {toFormikValidate, toFormikValidationSchema} from 'zod-formik-adapter';

Check failure on line 12 in src/formio/components/AddressNL.jsx

View workflow job for this annotation

GitHub Actions / Create 'production' build

'toFormikValidationSchema' is defined but never used

Check failure on line 12 in src/formio/components/AddressNL.jsx

View workflow job for this annotation

GitHub Actions / Create storybook build

'toFormikValidationSchema' is defined but never used

Check failure on line 12 in src/formio/components/AddressNL.jsx

View workflow job for this annotation

GitHub Actions / Lint code (ESLint)

'toFormikValidationSchema' is defined but never used

import {ConfigContext} from 'Context';
import {get} from 'api';
Expand Down Expand Up @@ -299,6 +300,7 @@ const addressNLSchema = (required, intl, {postcode = {}, city = {}}) => {

const AddressNLForm = ({initialValues, required, deriveAddress, layout, setFormioValues}) => {
const intl = useIntl();
const [dirty, setDirty] = useState(false);

Check warning on line 303 in src/formio/components/AddressNL.jsx

View check run for this annotation

Codecov / codecov/patch

src/formio/components/AddressNL.jsx#L303

Added line #L303 was not covered by tests

const {
component: {
Expand Down Expand Up @@ -347,35 +349,46 @@ const AddressNLForm = ({initialValues, required, deriveAddress, layout, setFormi
city: true,
}}
validateOnChange={false}
validationSchema={toFormikValidationSchema(
addressNLSchema(required, intl, {
postcode: {
pattern: postcodePattern,
errorMessage: postcodeError,
},
city: {
pattern: cityPattern,
errorMessage: cityError,
},
}),
{errorMap}
)}
validate={values =>

Check warning on line 352 in src/formio/components/AddressNL.jsx

View check run for this annotation

Codecov / codecov/patch

src/formio/components/AddressNL.jsx#L352

Added line #L352 was not covered by tests
dirty
? toFormikValidate(
addressNLSchema(required, intl, {
postcode: {
pattern: postcodePattern,
errorMessage: postcodeError,
},
city: {
pattern: cityPattern,
errorMessage: cityError,
},
}),
{errorMap}
)(values)
: {}
}
>
<FormikAddress
required={required}
setFormioValues={setFormioValues}
deriveAddress={deriveAddress}
layout={layout}
setDirty={setDirty}
/>
</Formik>
);
};

const FormikAddress = ({required, setFormioValues, deriveAddress, layout}) => {
const {values, isValid, setFieldValue} = useFormikContext();
const FormikAddress = ({required, setFormioValues, deriveAddress, layout, setDirty}) => {
const {values, isValid, setFieldValue, dirty} = useFormikContext();

Check warning on line 382 in src/formio/components/AddressNL.jsx

View check run for this annotation

Codecov / codecov/patch

src/formio/components/AddressNL.jsx#L382

Added line #L382 was not covered by tests
const {baseUrl} = useContext(ConfigContext);
const useColumns = layout === 'doubleColumn';

useEffect(() => {

Check warning on line 386 in src/formio/components/AddressNL.jsx

View check run for this annotation

Codecov / codecov/patch

src/formio/components/AddressNL.jsx#L386

Added line #L386 was not covered by tests
if (dirty) {
setDirty(dirty);

Check warning on line 388 in src/formio/components/AddressNL.jsx

View check run for this annotation

Codecov / codecov/patch

src/formio/components/AddressNL.jsx#L388

Added line #L388 was not covered by tests
}
}, [dirty, setDirty]);

useEffect(() => {
// *always* synchronize the state up, since:
//
Expand Down

0 comments on commit e321f06

Please sign in to comment.