{"version":3,"file":"72.6ca698d42d21d6c982ad.chunk.js","mappings":"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","sources":["webpack://fed-project/./app/assets/ts/reactcomponents/containers/PopupContainer.tsx","webpack://fed-project/./app/assets/ts/core/services/lidmaatschap.service.ts","webpack://fed-project/./app/assets/ts/core/services/base.service.ts","webpack://fed-project/./app/assets/ts/reactcomponents/forms/widgets/ContributietabelLidmaatschapWidgetForm.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/widgets/ContributieBeslisboomWidgetForm.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/widgets/GezinslidmaatschapForm.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/WidgetForm.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/FormControlMapping.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/FormControlLabel.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/FormValidation.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/helpers/CultureHelper.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/CalendarControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/SelectBoxControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/RadioButtonsControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/TextBoxControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/DropDownListControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/InternationalPhoneControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/EmailinputControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/HeadingLabelControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/ConsentAgreement.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/summary/SummaryRow.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/summary/SummaryControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/CitySearcherControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/CompanySearcherControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/LabelControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/TipBlockControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/CheckBoxControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/controls/ButtonControl.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/FormControlRendering.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/features/AdresZoeker.ts","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/features/CompanySearcher.ts","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/features/base/FeatureBase.ts","webpack://fed-project/./app/assets/ts/reactcomponents/forms/helpers/ContributionHelper.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/helpers/FormLogicHelper.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/helpers/SummaryHelper.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/components/features/factories/FeatureFactory.ts","webpack://fed-project/./app/assets/ts/reactcomponents/forms/helpers/ValidationControlHelper.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/helpers/VisibilityControlHelper.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/forms/states/FormStates.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/presentational/PopupError.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/presentational/PopupOk.tsx","webpack://fed-project/./app/assets/ts/reactcomponents/presentational/Steps.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { PopupError } from '../presentational/PopupError';\r\nimport { connect } from 'react-redux';\r\nimport * as actions from '../actions/FormActions';\r\nimport { ErrorMessageService } from '../services/ErrorMessageService';\r\n\r\nexport interface PopupContainerProps {\r\n forms : any;\r\n setFormValues : any;\r\n}\r\nconst mapStateToProps = (state: any) => {\r\n return {\r\n forms: state.forms\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => {\r\n return {\r\n setFormValues: (formName: string, values: any) => {\r\n dispatch(actions.storeFormValues(formName, values));\r\n }\r\n };\r\n};\r\n\r\nexport class ContainedPopupContainer extends React.Component {\r\n render() {\r\n const popupText = {\r\n title: ErrorMessageService.errorMessageTitle(),\r\n message: ErrorMessageService.errorMessageDescription(this.props.forms['formGetApiError']),\r\n explanation: '',\r\n telephoneHint: ErrorMessageService.errorMessagePhoneNumberInfo(),\r\n telephoneNumber: ErrorMessageService.errorMessagePhoneNumber().replace(/ /g, ''),\r\n telephoneText: ErrorMessageService.errorMessagePhoneNumber(),\r\n okButtonText: ErrorMessageService.errorMessageButtonText(),\r\n linkUrl: '#',\r\n container: undefined,\r\n setFormValues: this.props.setFormValues\r\n };\r\n\r\n return (this.props.forms['formGetApiError'] ? (\r\n \r\n ) : null);\r\n }\r\n}\r\n\r\nexport const PopupContainer = connect(mapStateToProps, mapDispatchToProps)(ContainedPopupContainer);","import { BaseService } from \"./base.service\";\r\n\r\nexport interface Lidmaatschap {\r\n MembershipNumber: string;\r\n StartDate: Date;\r\n ResignDate?: Date | null;\r\n EndDate?: Date | null;\r\n RightsDate?: Date | null;\r\n PaymentMethod: string;\r\n ContributionAmount: number;\r\n IsActive: boolean;\r\n}\r\n\r\nexport class LidmaatschapService extends BaseService {\r\n constructor() {\r\n super('/api/lidmaatschap/v3');\r\n }\r\n\r\n public async GetLidmaatschapData(memberGuid:string): Promise {\r\n return this.Get(`/${memberGuid}`);\r\n }\r\n}","import axios, { AxiosResponse } from 'axios';\r\n\r\nexport class BaseService {\r\n private cache: Map = new Map();\r\n private cacheDuration = 5 * 60 * 1000;\r\n\r\n protected api;\r\n protected path;\r\n\r\n constructor(path: string) {\r\n this.path = path;\r\n this.api = axios.create({\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n }\r\n\r\n // GET request\r\n protected async Get(pathString: string): Promise {\r\n const cached = this.cache.get(pathString);\r\n const now = Date.now();\r\n\r\n if (cached && cached.expiry > now) {\r\n return cached.data as T; // Return cached data if it's still valid\r\n }\r\n\r\n try {\r\n const response: AxiosResponse = await this.api.get(this.path + pathString);\r\n this.cache.set(pathString, { data: response.data, expiry: now + this.cacheDuration })\r\n return response.data;\r\n } catch (error) {\r\n console.error('API GET request failed:', error);\r\n throw error;\r\n }\r\n }\r\n\r\n // POST request\r\n protected async Post(pathString: string, data: U): Promise {\r\n try {\r\n const response: AxiosResponse = await this.api.post(this.path + pathString, data);\r\n this.cache.delete(pathString);\r\n return response.data;\r\n } catch (error) {\r\n console.error('API POST request failed:', error);\r\n throw error;\r\n }\r\n }\r\n\r\n // PUT request\r\n protected async Put(pathString: string, data: U): Promise {\r\n try {\r\n const response: AxiosResponse = await this.api.put(this.path + pathString, data, data);\r\n this.cache.delete(pathString);\r\n return response.data;\r\n } catch (error) {\r\n console.error('API PUT request failed:', error);\r\n throw error;\r\n }\r\n }\r\n\r\n // DELETE request\r\n protected async Delete(pathString: string): Promise {\r\n try {\r\n const response: AxiosResponse = await this.api.delete(this.path + pathString);\r\n this.cache.delete(pathString);\r\n return response.data;\r\n } catch (error) {\r\n console.error('API DELETE request failed:', error);\r\n throw error;\r\n }\r\n }\r\n\r\n // Optionally add a method to clear the entire cache\r\n public clearCache(): void {\r\n this.cache.clear();\r\n }\r\n}","import React, { useEffect, useRef, useState } from 'react';\r\nimport { RenderStep } from '../components/FormControlRendering';\r\nimport { WidgetFormProps } from '../WidgetForm';\r\nimport { ValidationControlHelper } from '../helpers/ValidationControlHelper';\r\nimport { getResourceString } from '../../kentico/resource-strings';\r\nimport { Lidmaatschap, LidmaatschapService } from '@fnv-core/services/lidmaatschap.service';\r\nimport { VisibilityControlHelper } from '../helpers/VisibilityControlHelper';\r\nimport DOMPurify from 'dompurify';\r\nimport { ContributionHelper } from '../helpers/ContributionHelper';\r\n\r\nexport const ContributietabelLidmaatschapWidgetForm: React.FC = (state) => {\r\n \r\n const [lidmaatschap, setlidmaatschap] = useState(null);\r\n const [prevContributionBody, setPrevContributionBody] = useState(null);\r\n const [contribution, setContribution] = useState(null);\r\n const [showSubscriptionCards, setShowSubscriptionCards] = useState(false);\r\n const lidmaatschapService: LidmaatschapService = new LidmaatschapService();\r\n\r\n if(state.fields.length > 0 && state.formLoading) {\r\n setTimeout(() => {\r\n state.setFormLoading(false);\r\n }, 1000);\r\n }\r\n\r\n // Initial rendering of visible fields based on initial form data\r\n useEffect(() => {\r\n state.setUseDefaultNavigation(false);\r\n\r\n state.setCustomVisibleConditions(() => ContributionHelper.getVisibleConditionsIntroductionContribution(state));\r\n state.setFieldManipulations(() => ContributionHelper.getFieldManipulationsIntroductionContribution(state));\r\n\r\n state.initForms(state.formDefinitions ?? state.pageModel.FormDefinition);\r\n }, []);\r\n\r\n useEffect(() => {\r\n\r\n if(state.fields && state.fields.length > 0) {\r\n let formValid = true;\r\n state.fields.forEach(field => {\r\n if(field.settings.IsHiddenField !== \"True\") {\r\n if (VisibilityControlHelper.isFieldVisible(field, state.formData, state.formErrors, state.fields, state.handleNewFormData, state.customVisibleConditions)) {\r\n const errors = ValidationControlHelper.validateField(state.fields, field[\"@column\"], state.formData, state.setFormData, state.handleNewFormData, !field[\"@allowempty\"], false);\r\n if(errors.length > 0 || !(state.formData[field[\"@column\"]]?.touched ?? false) && !field[\"@allowempty\"]) {\r\n formValid = false;\r\n }\r\n }\r\n }\r\n });\r\n setShowSubscriptionCards(formValid);\r\n }\r\n\r\n if(state.formData[\"PersoonId\"] && !lidmaatschap) {\r\n lidmaatschapService.GetLidmaatschapData(state.formData[\"PersoonId\"].value).then((data) => {\r\n setlidmaatschap(data);\r\n })\r\n }\r\n\r\n if(ValidationControlHelper.validateField(state.fields, \"Geboortedatum\", state.formData, state.setFormData, state.handleNewFormData, true)?.length == 0) {\r\n ContributionHelper.getContribution(state, prevContributionBody, setPrevContributionBody).then((response) => {\r\n if(response != null) {\r\n setContribution(response.data);\r\n }\r\n });\r\n }\r\n \r\n }, [state.formData]);\r\n\r\n const getContributionAdvantages = () : any => {\r\n const contributionBlock = state.fields.filter(field => field.settings.componentidentifier === 'ContributieBlock').find(field => VisibilityControlHelper.isFieldVisible(field, state.formData, state.formErrors, state.fields, state.handleNewFormData, state.customVisibleConditions));\r\n if(contributionBlock) {\r\n return DOMPurify.sanitize(contributionBlock.settings.MembershipAdvantages, { ADD_ATTR: ['target'] });\r\n }\r\n }\r\n\r\n const buildQueryString = (data: Record) => {\r\n const queryParams: Record = {};\r\n Object.keys(data).forEach((key) => {\r\n const value = state.formatFormDataForSubmit(key, data[key].value);\r\n if(value) {\r\n queryParams[key] = value;\r\n }\r\n });\r\n return new URLSearchParams(queryParams).toString();\r\n };\r\n\r\n const handleNavigate = () => {\r\n const queryString = buildQueryString(state.formData);\r\n const url = `${state.pageModel.FormThankYou ? state.pageModel.FormThankYouPage : '/'}?${queryString}`;\r\n window.location.href = url;\r\n };\r\n\r\n return (\r\n <>\r\n {!state.formLoading && (\r\n
\r\n \r\n {showSubscriptionCards && (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{getResourceString(\"Form.Lidworden.Lidmaatschap.Label\")}

\r\n
\r\n {getResourceString(\"Form.Lidworden.Lidmaatschap.FirstXMonths\").replace(`{months}`, contribution?.monthlyPeriod?.toString() ?? \"2\")}\r\n \r\n €{contribution?.discountPrice?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }) ?? \"-.--\"} p/m\r\n \r\n
\r\n
\r\n {getResourceString(\"Form.Lidworden.Lidmaatschap.AfterXMonths\")}\r\n \r\n €{contribution?.price?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }) ?? \"-.--\"} p/m\r\n \r\n
\r\n
{getResourceString(\"Form.Lidworden.Lidmaatschap.DiscountPercentage\").replace(`{discount}`, contribution?.discountProcentage ?? \"50\")}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ContributietabelLidmaatschapWidgetForm;","import React, { useState, useEffect, useRef, RefObject } from 'react';\r\nimport { getResourceString } from '../../kentico/resource-strings';\r\nimport _ from 'lodash';\r\nimport ReactHtmlParser from \"react-html-parser\";\r\nimport { ValidationControlHelper } from '../helpers/ValidationControlHelper';\r\nimport { RenderStep } from '../components/FormControlRendering';\r\nimport { createPortal } from 'react-dom';\r\nimport { Lidmaatschap, LidmaatschapService } from '@fnv-core/services/lidmaatschap.service';\r\nimport { ContributionHelper } from '../helpers/ContributionHelper';\r\nimport { WidgetFormProps } from '../WidgetForm';\r\n\r\nexport const ContributieBeslisboomWidgetForm: React.FC = (state) => {\r\n\r\n const [contentData, setContentData] = useState(null);\r\n const [lidmaatschap, setlidmaatschap] = useState(null);\r\n const [prevContributionBody, setPrevContributionBody] = useState(null);\r\n const [contribution, setContribution] = useState(null);\r\n\r\n const lidmaatschapService: LidmaatschapService = new LidmaatschapService();\r\n \r\n if(state.fields.length > 0 && state.formLoading) {\r\n setTimeout(() => {\r\n state.setFormLoading(false);\r\n }, 1000);\r\n }\r\n \r\n useEffect(() => {\r\n \r\n state.setFieldManipulations(() => ContributionHelper.getFieldManipulationsIntroductionContribution(state));\r\n\r\n state.initForms(state.formDefinitions);\r\n\r\n const contentData: ContentData = {\r\n introText: state.props.summaryIntro\r\n };\r\n setContentData(contentData);\r\n }, []);\r\n\r\n useEffect(() => {\r\n\r\n if(state.formData[\"PersoonId\"] && !lidmaatschap) {\r\n lidmaatschapService.GetLidmaatschapData(state.formData[\"PersoonId\"].value).then((data) => {\r\n setlidmaatschap(data);\r\n })\r\n }\r\n\r\n if(ValidationControlHelper.validateField(state.fields, \"Geboortedatum\", state.formData, state.setFormData, state.handleNewFormData, true)?.length == 0) {\r\n ContributionHelper.getContribution(state, prevContributionBody, setPrevContributionBody).then((response) => {\r\n if(response != null) {\r\n setContribution(response.data);\r\n }\r\n });\r\n }\r\n \r\n }, [state.formData]);\r\n\r\n const RenderContent = ({windowWidth, contribution}) => {\r\n\r\n if(windowWidth <= 769) {\r\n document.body.style.paddingBottom = \"175px\";\r\n }\r\n else {\r\n document.body.style.paddingBottom = null;\r\n }\r\n\r\n return (\r\n
= 1025 ? '-5' : '-60' } fixed-md pt-2`}>\r\n \r\n
\r\n

\r\n {getResourceString(\"Form.ContributieCheck.Lidmaatschap.Label\")}\r\n

\r\n
\r\n {getResourceString(\"Form.ContributieCheck.Lidmaatschap.Now\")}\r\n \r\n €{lidmaatschap?.ContributionAmount?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }) ?? \"-.--\"} p/m\r\n \r\n
\r\n
\r\n {getResourceString(\"Form.ContributieCheck.Lidmaatschap.After\")}\r\n \r\n €{contribution?.price?.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }) ?? \"-.--\"} p/m\r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n {state.beforeFormRef?.current &&\r\n createPortal(\r\n <>\r\n {state.currentStepIndex == 0 && (\r\n
\r\n {!ValidationControlHelper.isNullOrEmpty(contentData?.introText) && (\r\n

{ReactHtmlParser(contentData.introText)}

\r\n )}\r\n
\r\n )}\r\n ,\r\n state.beforeFormRef.current\r\n )}\r\n\r\n
\r\n {!state.formLoading && \r\n }\r\n
\r\n\r\n {state.sidebarRef.current &&\r\n createPortal(\r\n
\r\n \r\n
,\r\n state.sidebarRef.current\r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default ContributieBeslisboomWidgetForm;","import React, { useEffect, useState } from 'react';\r\nimport { format } from 'date-fns';\r\nimport { getResourceString } from '../../kentico/resource-strings';\r\nimport _ from 'lodash';\r\nimport { DateParser } from '@fnv-core/parsing/date/DateParser';\r\nimport { SummaryHelper } from '../helpers/SummaryHelper';\r\nimport { RenderStep } from '../components/FormControlRendering';\r\nimport { FormLogicHelper } from '../helpers/FormLogicHelper';\r\nimport { WidgetFormProps } from '../WidgetForm';\r\nimport { createPortal } from 'react-dom';\r\nimport { ValidationControlHelper } from '../helpers/ValidationControlHelper';\r\nimport ReactHtmlParser from \"react-html-parser\";\r\nimport { Steps } from '../../presentational/Steps';\r\n\r\nconst GezinslidmaatschapForm: React.FC = (state) => {\r\n\r\n const [contentData, setContentData] = useState(null);\r\n \r\n useEffect(() => {\r\n state.initForms(state.formDefinitions, false);\r\n\r\n const contentData: ContentData = {\r\n introText: state.props.summaryIntro\r\n };\r\n setContentData(contentData);\r\n }, []);\r\n \r\n if(state.fields.length > 0 && state.formLoading) {\r\n setTimeout(() => {\r\n state.setFormLoading(false);\r\n }, 1000);\r\n\r\n // get the invitation id from query params\r\n const queryParams = FormLogicHelper.getQueryParams();\r\n if(queryParams[\"id\"]) {\r\n state.setFormData(prev => ({ ...prev, \"UitnodigingID\": { value: queryParams[\"id\"], enabled: false, focus: false, loading: false, touched: false } as FormDataEntry }));\r\n }\r\n }\r\n\r\n const formSummaryData: FormSummaryData = {\r\n sections: [\r\n {\r\n title: getResourceString(\"Form.JouwGegevens.Label\"),\r\n navigateToStep: 1,\r\n rows: [\r\n { \r\n fieldName: \"Voorletters\", \r\n visible: true \r\n },\r\n {\r\n fieldName: \"Naam\",\r\n labelOverride: getResourceString(\"Form.Name.Label\"),\r\n visible: true,\r\n dataOverride: (data, field) => `${state.formData[\"Voornaam\"].value}${state.formData[\"Tussenvoegsel\"]?.value ? \r\n ` ${SummaryHelper.GetOptionLabelFromFieldByKeySummary(state.fields.find((f) => f[\"@column\"] == \"Tussenvoegsel\"), state.formData[\"Tussenvoegsel\"].value)} ` : \r\n \"\"} ${state.formData[\"Achternaam\"].value}`\r\n },\r\n {\r\n fieldName: \"Geboortedatum\",\r\n visible: true,\r\n dataOverride: (data, field) => format(new DateParser().parse(data), \"dd-MM-yyyy\")\r\n },\r\n { \r\n fieldName: \"Telefoonnummer\", \r\n visible: true \r\n },\r\n { \r\n fieldName: \"GezinslidEmail\", \r\n visible: true \r\n },\r\n {\r\n fieldName: \"Adres\",\r\n labelOverride: getResourceString(\"Form.Adres.Label\"),\r\n visible: true,\r\n dataOverride: (data, field) => SummaryHelper.getAdresSummary(\"\", state.formData, state.fields)\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n\r\n return (\r\n
\r\n <>\r\n {/* Shows steps above the form */}\r\n {state.stepsContainerRef?.current &&\r\n createPortal(\r\n <>\r\n \r\n \r\n ,\r\n state.stepsContainerRef.current\r\n )}\r\n\r\n {state.beforeFormRef?.current && contentData?.introText &&\r\n createPortal(\r\n <>\r\n {state.currentStepIndex == 0 && (\r\n
\r\n {!ValidationControlHelper.isNullOrEmpty(contentData?.introText) && (\r\n

{ReactHtmlParser(contentData.introText)}

\r\n )}\r\n
\r\n )}\r\n ,\r\n state.beforeFormRef.current\r\n )}\r\n \r\n {!state.formLoading && (\r\n <>\r\n \r\n\r\n {/* Shows the navigation bar below the form (next/back/send) */}\r\n \r\n \r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default GezinslidmaatschapForm;","import React, { RefObject, useEffect, useRef, useMemo, useState, useCallback } from 'react';\r\nimport withFormState, { FormStateProps } from './states/FormStates';\r\nimport ContributietabelLidmaatschapWidgetForm from './widgets/ContributietabelLidmaatschapWidgetForm';\r\nimport ContributieBeslisboomWidgetForm from './widgets/ContributieBeslisboomWidgetForm';\r\nimport GezinslidmaatschapForm from './widgets/GezinslidmaatschapForm';\r\n\r\nexport interface WidgetFormProps extends FormStateProps {\r\n reactId?: string;\r\n formDefinitions?: FormDefinition;\r\n sidebarRef?: RefObject;\r\n stepsContainerRef?: RefObject;\r\n beforeFormRef?: RefObject;\r\n props?: any;\r\n}\r\n\r\nconst WidgetForm: React.FC = (state) => {\r\n const beforeFormRef = useRef(null);\r\n\r\n if(state.fields.length > 0 && state.formLoading) {\r\n setTimeout(() => {\r\n state.setFormLoading(false);\r\n }, 1000);\r\n }\r\n\r\n useEffect(() => {\r\n const formDefinition = state.formDefinitions ?? state.pageModel.FormDefinition;\r\n state.initForms(formDefinition);\r\n }, []);\r\n\r\n return (\r\n
\r\n {state.formDefinition && (\r\n
\r\n\r\n {/*
*/}\r\n
\r\n
\r\n
\r\n\r\n {(() => {\r\n switch (state.formDefinition.form.name) {\r\n case \"ContributietabelLidmaatschap_Introductietarief\":\r\n return ;\r\n case \"MijnFNV_GezinslidUitnodigen_FormsV2\":\r\n return ;\r\n case 'CheckJeContributietarief_Introductietarief':\r\n return ;\r\n default:\r\n return null;\r\n }\r\n })()}\r\n\r\n \r\n \r\n {state.loading && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default withFormState(WidgetForm);","import { DateParser } from '@fnv-core/parsing';\r\n\r\nexport class FormControlMapping {\r\n public static GetComponentTypedValue = (value: any, componentidentifier: string) : any => {\r\n if(!value) {\r\n return null;\r\n }\r\n\r\n switch (componentidentifier) {\r\n case 'CalendarControl':\r\n return new DateParser().parse(value);\r\n case 'RadioButtonsControl':\r\n case 'TextBoxControl':\r\n case 'InitialsInputField':\r\n case 'DropDownListControl':\r\n return (value instanceof String) ? value?.trim() : value; \r\n case 'internationalphone':\r\n return value?.replace(/[^\\d+]/g, '');\r\n case 'emailinput':\r\n return value?.toLowerCase().trim();\r\n case 'CheckBoxControl':\r\n case 'ConsentAgreement':\r\n return value?.toLowerCase() === 'true';\r\n case 'GridControl':\r\n return JSON.parse(value);\r\n default:\r\n return value as any;\r\n }\r\n }\r\n}","import React, { useState } from 'react';\r\n\r\nexport const FormControlLabelAndPopover = ({field, loading} : ControlParameters) => {\r\n return(\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport const FormControlLabel = ({field}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const FormControlSpinner = ({loading}) => {\r\n\r\n return ( !!loading &&
);\r\n};\r\n\r\nexport const FormControlPopover = ({field}) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleSetOpen = () => { \r\n setIsOpen(!isOpen);\r\n };\r\n\r\n const handleSetClose = () => { \r\n setIsOpen(false);\r\n };\r\n\r\n if(!field.properties.fielddescription) {\r\n return (null);\r\n }\r\n\r\n return (\r\n \r\n {(() => {\r\n if(isOpen){\r\n return ( \r\n {field.properties.fielddescription}\r\n );\r\n }\r\n })()}\r\n \r\n );\r\n};","import React from \"react\";\r\nimport DOMPurify from 'dompurify';\r\n\r\nexport const ValidationErrorsHtml = (keyGuid: string, errors: ValidationError[]) : JSX.Element => {\r\n if(!errors) {\r\n return (null);\r\n }\r\n\r\n const renderedErrors = errors.map((error) => { \r\n\r\n if(error.html === undefined) {\r\n return (null);\r\n }\r\n\r\n const cleanHtmlString = DOMPurify.sanitize(error.html);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n });\r\n\r\n return (<>{renderedErrors});\r\n};\r\n\r\nexport const ValidationErrorsMessages = ({keyGuid, errors} : ValidationErrorMessages) : JSX.Element => {\r\n if(!errors) {\r\n return (null);\r\n }\r\n\r\n const renderedErrors = errors.map((error, index) => { \r\n \r\n const cleanHtmlString = DOMPurify.sanitize(error.message);\r\n\r\n const tempElement = document.createElement('div');\r\n tempElement.innerHTML = cleanHtmlString;\r\n\r\n // Get the plain text content\r\n const plainText = tempElement.innerText || tempElement.textContent;\r\n\r\n return (\r\n
\r\n {plainText}\r\n
\r\n );\r\n });\r\n\r\n return (<>{renderedErrors});\r\n};\r\n\r\nexport const ValidationCheckMark = ({required, hasErrors, formDataEntry, hasFocus} : ValidationCheckmark) : JSX.Element => {\r\n if(!required || hasErrors || !formDataEntry.touched || hasFocus) {\r\n return (null);\r\n }\r\n \r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};","interface CurrentCulture {\r\n culture: string,\r\n cultureCode: string,\r\n cultureImport: any;\r\n}\r\n\r\nexport class CultureHelper {\r\n public static async getCurrentCulture(): Promise {\r\n const currentCulture = {} as CurrentCulture;\r\n\r\n currentCulture.culture = (window as any).currentCultureCode || \"nl-NL\";\r\n currentCulture.cultureCode = currentCulture.culture.substr(0, 2);\r\n\r\n if (currentCulture.cultureCode.indexOf(\"en\") === 0) {\r\n currentCulture.culture = \"en-US\";\r\n }\r\n\r\n // Import the locale\r\n const module = await import(\"date-fns/locale\");\r\n\r\n if (module[currentCulture.cultureCode]) {\r\n currentCulture.cultureImport = module[currentCulture.cultureCode];\r\n } else if (module[currentCulture.culture.replace('-', '')]) {\r\n currentCulture.cultureImport = module[currentCulture.culture.replace('-', '')];\r\n } else {\r\n // if all else fails\r\n currentCulture.cultureImport = module['nl'];\r\n }\r\n\r\n return currentCulture;\r\n }\r\n}","import React, { useEffect, useRef, useState } from 'react';\r\nimport DatePicker from 'react-datepicker';\r\nimport * as Moment from 'moment';\r\nimport { DateParser } from '@fnv-core/parsing/date/DateParser';\r\nimport { FormControlLabelAndPopover } from '../FormControlLabel';\r\nimport { ValidationErrorsMessages } from '../FormValidation';\r\nimport { CultureHelper } from './../../helpers/CultureHelper';\r\nimport { format, parse, isValid } from \"date-fns\";\r\n\r\n// Function to render a CalendarControl (Date Picker)\r\nexport const CalendarControl = ({ field, handleChange, handleBlur, formDataEntry, errors } : ControlParameters) : JSX.Element => {\r\n const [dataDate, setDataDate] = useState(formDataEntry && formDataEntry.value ? new DateParser().parse(formDataEntry.value) : null);\r\n const [date, setDate] = useState(formDataEntry && formDataEntry.value ? new DateParser().parse(formDataEntry.value) : null);\r\n const [input, setInput] = useState(null);\r\n const [isFocused, setIsFocused] = useState(false);\r\n\r\n const ref = useRef();\r\n const [locale, setLocale] = useState(null);\r\n const dateFormat = \"dd-MM-yyyy\";\r\n \r\n useEffect(() => {\r\n const fetchCulture = async () => {\r\n const currentCulture = await CultureHelper.getCurrentCulture();\r\n setLocale(currentCulture.cultureImport);\r\n };\r\n\r\n fetchCulture();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if(isFocused) {\r\n setInput(null);\r\n setDate(null)\r\n }\r\n else {\r\n setInput(parse(dataDate?.toString(), dateFormat, new Date()))\r\n setDate(dataDate ? new DateParser().parse(dataDate) : null)\r\n }\r\n }, [isFocused]);\r\n\r\n useEffect(() => {\r\n if (ref?.current && isValid(dataDate) && errors?.length == 0) {\r\n ref.current.setOpen(false);\r\n }\r\n }, [errors, dataDate]);\r\n\r\n useEffect(() => {\r\n const parsedDate = parse(input, dateFormat, new Date());\r\n if (isValid(parsedDate) && isValidDateString(input, dateFormat)) {\r\n handleDateChange(new DateParser().parse(input));\r\n }\r\n }, [input]);\r\n\r\n useEffect(() => {\r\n if(!isValid(date) || (input?.length ?? 0) > 0 && !isValidDateString(input, dateFormat)) {\r\n return;\r\n }\r\n\r\n handleChange({\r\n target: {\r\n name: field[\"@column\"],\r\n value: date\r\n }\r\n });\r\n\r\n setDataDate(date);\r\n }, [date]);\r\n\r\n const handleDateChange = data => {\r\n setDate(data);\r\n };\r\n\r\n function formatPartialDateString(input, format) {\r\n input = input.replace(/\\D/g, \"\");\r\n \r\n const formatParts = format.split(/[-/.\\s]/);\r\n const separators = format.match(/[-/.\\s]/g);\r\n let formattedDate = \"\";\r\n let currentPosition = 0;\r\n \r\n formatParts.forEach((part, index) => {\r\n const partLength = part.length;\r\n const partValue = input.slice(currentPosition, currentPosition + partLength);\r\n currentPosition += partLength;\r\n \r\n formattedDate += partValue;\r\n \r\n if (index < formatParts.length - 1 && currentPosition < input.length) {\r\n formattedDate += separators[index] || \"\";\r\n }\r\n });\r\n \r\n return formattedDate;\r\n }\r\n\r\n function isValidDateString(dateString, format) {\r\n const regex = createDateRegex(format);\r\n return regex.test(dateString);\r\n }\r\n\r\n function createDateRegex(format) {\r\n const regexString = format\r\n .replace(/dd/g, '(\\\\d{2})')\r\n .replace(/MM/g, '(\\\\d{2})')\r\n .replace(/yyyy/g, '(\\\\d{4})')\r\n .replace(/-/g, '-')\r\n .replace(/\\//g, '/')\r\n .replace(/\\./g, '\\\\.')\r\n .replace(/\\s/g, '\\\\s');\r\n \r\n return new RegExp(`^${regexString}$`);\r\n }\r\n \r\n const handleOnChangeRaw = (event) => {\r\n let {value} = event.target;\r\n\r\n const diffIndex = findDifferenceIndex(input ?? '', value);\r\n if (diffIndex !== -1) {\r\n value = replaceCharacterAt(value, diffIndex, value[diffIndex]);\r\n }\r\n\r\n const formattedValue = formatPartialDateString(value, dateFormat);\r\n setInput(formattedValue);\r\n };\r\n\r\n const handleDateBlur = (event) => {\r\n if(event?.target != null && Array.from(event.target.classList).findIndex((element:string) => element.includes(\"onclickoutside\")) == -1) {\r\n if (!isValidDateString(input, dateFormat)) {\r\n setInput(date != null ? format(date, dateFormat) : \"\");\r\n }\r\n setIsFocused(false);\r\n handleBlur({\r\n target: {\r\n name: field[\"@column\"]\r\n }\r\n });\r\n }\r\n };\r\n\r\n const findDifferenceIndex = (str1, str2) => {\r\n for (let i = 0; i < Math.max(str1.length, str2.length); i++) {\r\n if (str1[i] !== str2[i]) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n\r\n const replaceCharacterAt = (str, index, replacement) => {\r\n if (index < 0 || index >= str.length) return str; // safeguard for out-of-bounds index\r\n return str.slice(0, index) + replacement + str.slice(index + 1);\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};","import React, { useState } from 'react';\r\nimport { FormControlLabelAndPopover } from '../FormControlLabel';\r\nimport { ValidationErrorsMessages } from '../FormValidation';\r\n\r\nexport const SelectBoxControl = ({ field, handleChange, handleBlur, formDataEntry, errors } : ControlParameters) : JSX.Element => {\r\n\r\n const [selectedValue, setSelectedValue] = useState(null);\r\n\r\n const options = field.settings.Options.split('\\n').map(option => {\r\n const [value, label] = option.split(';');\r\n return { value, label };\r\n });\r\n\r\n if(formDataEntry && formDataEntry.value != selectedValue) {\r\n setSelectedValue(formDataEntry.value);\r\n }\r\n\r\n const onSelect = (value) => {\r\n setSelectedValue(value);\r\n handleChange({ target: { name: field[\"@column\"], value } });\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n {options.map(({ value, label }) => (\r\n onSelect(value)}\r\n >\r\n {label}\r\n
\r\n ))}\r\n
\r\n \r\n \r\n );\r\n};","import React from 'react';\r\nimport { FormControlLabelAndPopover } from '../FormControlLabel';\r\nimport { ValidationErrorsMessages } from '../FormValidation';\r\n\r\nexport const RadioButtonsControl = ({ field, handleChange, handleBlur, formDataEntry, errors } : ControlParameters) : JSX.Element => {\r\n\r\n return (\r\n
\r\n \r\n {field.settings.Options.split('\\n').map(option => {\r\n const [value, label] = option.split(';');\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n })}\r\n \r\n
\r\n );\r\n};","import React, { useState } from 'react';\r\nimport { FormControlLabelAndPopover } from '../FormControlLabel';\r\nimport { ValidationCheckMark, ValidationErrorsMessages } from '../FormValidation';\r\n\r\nexport const TextBoxControl = ({ field, handleChange, handleBlur, formDataEntry, errors } : ControlParameters) : JSX.Element => {\r\n const [isFocused, setIsFocused] = useState(false);\r\n \r\n const handleTextboxBlur = () => {\r\n setIsFocused(false);\r\n\r\n handleBlur({\r\n target: {\r\n name: field[\"@column\"]\r\n }\r\n });\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n 0 && !isFocused ? \" is-invalid\" : \"\") + (formDataEntry.touched ? \" form-control--touched\" : \"\")}\r\n name={field[\"@column\"]}\r\n onBlur={handleTextboxBlur}\r\n onFocus={() => setIsFocused(true)}\r\n onChange={handleChange}\r\n disabled={!formDataEntry.enabled}\r\n required={!field[\"@allowempty\"]}\r\n value={formDataEntry?.value ?? \"\"}\r\n title={field.properties.explanationtext}\r\n autoComplete={field.settings.Autocomplete ?? \"off\"}\r\n />\r\n 0} formDataEntry={formDataEntry} hasFocus={isFocused} />\r\n
\r\n {!isFocused && ()}\r\n
\r\n );\r\n};","import React, { useRef, useState } from 'react';\r\nimport Select from 'react-select';\r\nimport { FormControlLabelAndPopover } from '../FormControlLabel';\r\nimport { ValidationErrorsMessages } from '../FormValidation';\r\n\r\nexport const DropDownListControl = ({ field, handleChange, handleBlur, formDataEntry, errors } : ControlParameters) : JSX.Element => {\r\n const options = field.settings.Options.split(/\\r?\\n/).map(option => {\r\n const [value, label] = option.split(';');\r\n return { value, label };\r\n });\r\n \r\n const [selectedValue, setSelectedValue] = useState(options.find(option => option.value.toString() === (formDataEntry?.value?.toString() ?? \"\")));\r\n const [input, setInput] = useState('');\r\n const selectRef = useRef(null);\r\n \r\n if(formDataEntry && (formDataEntry?.value?.toString() ?? \"\") != (selectedValue?.value?.toString() ?? \"\")) {\r\n setSelectedValue(options.find(option => option.value.toString() === (formDataEntry?.value?.toString() ?? \"\")) ?? null);\r\n }\r\n\r\n const handleDropDownChange = selectedOption => {\r\n handleChange({\r\n target: {\r\n name: field[\"@column\"],\r\n value: selectedOption?.value ?? null\r\n }\r\n });\r\n\r\n setInput('');\r\n };\r\n\r\n const findClosestOptionForInput = () => {\r\n if(input == '') {\r\n return '';\r\n }\r\n\r\n const foundOptions = options.filter((option) => {\r\n return option.label?.trim().toLowerCase().includes(input.trim().toLowerCase());\r\n });\r\n\r\n if(foundOptions?.length > 0) {\r\n let foundOption = foundOptions.find((option) => {\r\n return option.label?.trim().toLowerCase() == input.trim().toLowerCase();\r\n });\r\n\r\n if(!foundOption) {\r\n foundOption = foundOptions[0];\r\n }\r\n\r\n return foundOption;\r\n }\r\n\r\n return selectedValue ?? '';\r\n }\r\n\r\n const handleOnKeyDown = (event): void => {\r\n if(event.key === 'Enter' || event.key === 'Tab') {\r\n event.preventDefault();\r\n\r\n const option = findClosestOptionForInput();\r\n handleDropDownChange(option);\r\n\r\n setInput('');\r\n \r\n selectRef.current.blur();\r\n }\r\n }\r\n\r\n const handleInputChange = (newInputValue, { action }) => {\r\n if (action === 'input-change') {\r\n if(newInputValue == '') {\r\n handleDropDownChange(options[0]);\r\n }\r\n\r\n setInput(newInputValue);\r\n }\r\n };\r\n\r\n const handleOnFocus = (): void => {\r\n setInput(selectedValue?.label ?? input)\r\n }\r\n\r\n const handleOnBlur = (event): void => {\r\n const option = findClosestOptionForInput();\r\n if(option) {\r\n handleDropDownChange(option);\r\n }\r\n\r\n if(selectedValue?.label) {\r\n setInput('')\r\n }\r\n handleBlur(event);\r\n }\r\n\r\n return (\r\n
\r\n \r\n null}\r\n />\r\n \r\n
\r\n );\r\n};","import React, { useState } from 'react';\r\nimport { FormControlLabelAndPopover } from '../FormControlLabel';\r\nimport { ValidationCheckMark, ValidationErrorsMessages } from '../FormValidation';\r\n\r\nexport const InternationalPhoneControl = ({ field, handleChange, handleBlur, formDataEntry, errors } : ControlParameters) : JSX.Element => {\r\n const [isFocused, setIsFocused] = useState(false);\r\n\r\n const handleControlBlur = () => {\r\n setIsFocused(false);\r\n\r\n handleBlur({\r\n target: {\r\n name: field[\"@column\"]\r\n }\r\n });\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n 0 && !isFocused ? \" is-invalid\" : \"\") + (formDataEntry.touched ? \" form-control--touched\" : \"\")}\r\n name={field[\"@column\"]}\r\n onBlur={handleControlBlur}\r\n onChange={handleChange}\r\n onFocus={() => setIsFocused(true)}\r\n required={!field[\"@allowempty\"]}\r\n value={formDataEntry?.value ?? \"\"}\r\n autoComplete={field.settings.Autocomplete ?? \"off\"}\r\n />\r\n 0} formDataEntry={formDataEntry} hasFocus={isFocused} />\r\n
\r\n {!isFocused && ()}\r\n
\r\n );\r\n};","import React, { useState } from 'react';\r\nimport { FormControlLabelAndPopover } from '../FormControlLabel';\r\nimport { ValidationCheckMark, ValidationErrorsMessages } from '../FormValidation';\r\n\r\nexport const EmailinputControl = ({ field, handleChange, handleBlur, formDataEntry, errors } : ControlParameters) : JSX.Element => {\r\n const [isFocused, setIsFocused] = useState(false);\r\n \r\n const handleControlBlur = () => {\r\n setIsFocused(false);\r\n\r\n handleBlur({\r\n target: {\r\n name: field[\"@column\"]\r\n }\r\n });\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n 0 ? \" is-invalid\" : \"\") + (formDataEntry.touched ? \" form-control--touched\" : \"\")}\r\n name={field[\"@column\"]}\r\n onBlur={handleControlBlur}\r\n onFocus={() => setIsFocused(true)}\r\n onChange={handleChange}\r\n required={!field[\"@allowempty\"]}\r\n value={formDataEntry?.value ?? \"\"}\r\n title={field.properties.validationerrormessage}\r\n autoComplete={field.settings.Autocomplete ?? \"off\"}\r\n />\r\n 0} formDataEntry={formDataEntry} hasFocus={isFocused} />\r\n
\r\n {!isFocused && ()}\r\n
\r\n );\r\n};","import React, { useState } from 'react';\r\n\r\nexport const HeadingLabelControl = ({field} : ControlParameters) : JSX.Element => {\r\n const [tag] = useState(field?.properties?.inputcontrolstyle ?? 'h2');\r\n\r\n return (\r\n <>\r\n {React.createElement(\r\n tag, \r\n { className: `form-header__titel ${field?.properties?.fieldcssclass}` },\r\n field?.properties?.fieldcaption\r\n )}\r\n \r\n );\r\n};","import React, { useState } from 'react';\r\nimport DOMPurify from 'dompurify';\r\nimport { ValidationErrorsMessages } from '../FormValidation';\r\n\r\nexport const ConsentAgreement = ({ field, handleChange, formDataEntry, errors } : ControlParameters) : JSX.Element => {\r\n\r\n const [isChecked, setIsChecked] = useState(false);\r\n\r\n if(formDataEntry && formDataEntry.value != isChecked) {\r\n setIsChecked(formDataEntry.value);\r\n }\r\n\r\n const handleCheckboxChange = () => {\r\n handleChange({ target: { name: field[\"@column\"], value: !isChecked } });\r\n setIsChecked(!isChecked);\r\n };\r\n\r\n const cleanHtmlString = DOMPurify.sanitize(field.properties.fieldcaption, { ADD_ATTR: ['target'] });\r\n\r\n // Prevent checkbox toggle when clicking on links inside label\r\n const handleLabelClick = (e) => {\r\n const target = e.target as HTMLElement;\r\n if (target.tagName === 'A') {\r\n e.stopPropagation();\r\n } else {\r\n handleCheckboxChange();\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n};","import React, { } from 'react';\r\nimport DOMPurify from 'dompurify';\r\nimport _ from 'lodash';\r\n\r\nexport const SummaryRow = ({fieldName, formData, formFields, className = null, dataOverride = null, labelOverride = null, visible = true}) => {\r\n\r\n if(!visible) {\r\n return (null);\r\n }\r\n\r\n const field = formFields.find((f) => f[\"@column\"] == fieldName);\r\n const label = labelOverride ? labelOverride : field?.properties.fieldcaption ?? fieldName;\r\n const dataEntry = formData[fieldName];\r\n let data = (dataEntry ? dataEntry.value : null) ?? \"-\";\r\n\r\n if(dataOverride) {\r\n data = dataOverride(data, field);\r\n }\r\n\r\n const cleanHtmlString = DOMPurify.sanitize(data);\r\n\r\n return (\r\n
\r\n
{label}
\r\n \r\n
\r\n );\r\n};","// src/Form.tsx\r\nimport React, { } from 'react';\r\nimport { SummaryRow } from './SummaryRow';\r\nimport { getResourceString } from './../../../kentico/resource-strings';\r\n\r\nexport const FormSummary = ({formSummaryData, formData, formFields, navigateToStep }) => {\r\n return (\r\n
\r\n {formSummaryData.sections.filter((section) => section.visible === undefined || section.visible).map((section, sectionIndex) => (\r\n
\r\n {/* Section header div with dynamic class */}\r\n
\r\n
{section.title}
\r\n {section.navigateToStep !== undefined && (\r\n navigateToStep(section.navigateToStep)}\r\n >\r\n {getResourceString(\"Form.Summary.Modify\")}\r\n \r\n )}\r\n
\r\n\r\n {/* Section content div with dynamic class */}\r\n
\r\n {section.rows.map((row, rowIndex) => {\r\n if (row.visible === false || (row.visible && !row.visible)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n
\r\n ))}\r\n
\r\n );\r\n};","import React, { useEffect, useState } from \"react\";\r\nimport AsyncSelect from \"react-select/async\";\r\nimport { FormControlLabelAndPopover } from \"../FormControlLabel\";\r\nimport { ValidationErrorsMessages } from \"../FormValidation\";\r\nimport { CultureHelper } from \"./../../helpers/CultureHelper\";\r\n\r\ntype TargetType = {\r\n target: {\r\n name: string;\r\n value: string;\r\n }\r\n};\r\n\r\ntype CitySearcherProps = {\r\n field: Field;\r\n handleChange: (target: TargetType) => void;\r\n handleBlur: () => void;\r\n formDataEntry: FormDataEntry;\r\n errors: {\r\n message: string, \r\n html: any\r\n }[];\r\n};\r\n\r\nexport const CitySearcherControl = ({ field, handleChange, handleBlur, formDataEntry, errors }: CitySearcherProps) => {\r\n const [locale, setLocale] = useState(null);\r\n \r\n useEffect(() => {\r\n const fetchCulture = async () => {\r\n const currentCulture = await CultureHelper.getCurrentCulture();\r\n setLocale(currentCulture.cultureImport);\r\n };\r\n\r\n fetchCulture();\r\n }, []);\r\n \r\n const handleDropDownChange = selectedOption => {\r\n handleChange({\r\n target: {\r\n name: field[\"@column\"],\r\n value: selectedOption\r\n }\r\n });\r\n };\r\n\r\n const getItems = (input: string) => {\r\n let url = `/api/placenames/get?partialname=${input}`;\r\n return fetch(`${window.location.origin}/${url}`).then((res) => {\r\n \r\n return res.json();\r\n });\r\n };\r\n\r\n const value = formDataEntry.value ? formDataEntry.value : \"\";\r\n \r\n return (\r\n
\r\n \r\n {locale && (\r\n e}\r\n getOptionValue={(e) => e}\r\n required={!field[\"@allowempty\"]}\r\n noOptionsMessage={() => null}\r\n loadingMessage={() => null}\r\n locale={locale}\r\n />\r\n )}\r\n \r\n
\r\n );\r\n};","import React, { useEffect, useRef, useState } from \"react\";\r\nimport AsyncSelect from \"react-select/async\";\r\nimport { FormControlLabelAndPopover } from \"../FormControlLabel\";\r\nimport { ValidationErrorsMessages } from \"../FormValidation\";\r\nimport { CultureHelper } from \"./../../helpers/CultureHelper\";\r\nimport { getResourceString } from \"./../../../kentico/resource-strings\";\r\n\r\ntype CompanySearcherProps = {\r\n field: Field;\r\n handleChange: (target: CompanyDetailsType) => void;\r\n handleBlur: () => void;\r\n formDataEntry: FormDataEntry;\r\n city: string | undefined;\r\n errors: {\r\n message: string, \r\n html: any\r\n }[];\r\n};\r\n\r\nexport const CompanySearcherControl = ({ field, city, handleChange, handleBlur, formDataEntry, errors }: CompanySearcherProps) => {\r\n const [locale, setLocale] = useState(null);\r\n const [input, setInput] = useState('');\r\n const [value, setValue] = useState(formDataEntry?.value ? { Bedrijfsnaam: formDataEntry?.value, isNew: true} : null);\r\n\r\n const selectRef = useRef(null);\r\n \r\n useEffect(() => {\r\n const fetchCulture = async () => {\r\n const currentCulture = await CultureHelper.getCurrentCulture();\r\n setLocale(currentCulture.cultureImport);\r\n };\r\n\r\n fetchCulture();\r\n }, []);\r\n\r\n const handleDropDownChange = (selectedOption) => {\r\n selectedOption.fieldName = field[\"@column\"];\r\n setValue(selectedOption);\r\n handleChange(selectedOption);\r\n \r\n setInput('');\r\n };\r\n\r\n const handleInputChange = (newInputValue, { action }) => {\r\n if (action === 'input-change') {\r\n if(value?.isNew ?? false) {\r\n let option = {...value};\r\n option.Bedrijfsnaam = newInputValue;\r\n handleDropDownChange(option);\r\n }\r\n setInput(newInputValue);\r\n }\r\n\r\n if(action === 'menu-close' && newInputValue.length > 0) {\r\n setInput(newInputValue);\r\n }\r\n };\r\n\r\n const handleOnFocus = (): void => {\r\n setInput(value?.Bedrijfsnaam ?? input)\r\n }\r\n\r\n const handleOnBlur = (): void => {\r\n if(value?.Bedrijfsnaam) {\r\n setInput('')\r\n }\r\n }\r\n\r\n const returnOptionsWithDefault = (response) => {\r\n if(response && response.length > 0) {\r\n for (let index = 0; index < response.length; index++) {\r\n const element = response[index];\r\n element.isNew = false;\r\n }\r\n }\r\n\r\n if(value?.isNew ?? false) {\r\n return response;\r\n }\r\n else {\r\n return [...response, {\r\n Bedrijfsnaam: input,\r\n title: getResourceString(\"Form.Bedrijvenzoeker.NietGevonden.Label\"),\r\n text: getResourceString(\"Form.Bedrijvenzoeker.NietGevonden.Tekst\"),\r\n isNew: true\r\n }];\r\n }\r\n };\r\n\r\n const getItems = async (input: string) => {\r\n let url = `/api/bedrijvenzoeker/search?search=${input}&Plaats=${city}`;\r\n const response = await fetch(`${window.location.origin}/${url}`);\r\n const data = await response.json();\r\n\r\n return returnOptionsWithDefault(data);\r\n };\r\n\r\n const OptionTemplate = (props) => {\r\n const {value, innerRef, innerProps} = props;\r\n \r\n if (value.isNew) {\r\n return
\r\n {value.title}\r\n

{value.text}

\r\n
;\r\n }\r\n\r\n return
\r\n {value.Bedrijfsnaam}\r\n

{value.Straat} {value.AddressLine1}{value.AddressLine2}

\r\n

{value.PostalCode} {city}

\r\n
;\r\n };\r\n\r\n //Check for disabled on company dropdown\r\n const isDisabled = city === \"\" || city === null ? true : false;\r\n\r\n const handleOnKeyDown = (event): void => {\r\n if(event.key === 'Enter' || event.key === 'Tab') {\r\n event.preventDefault();\r\n\r\n let option = {...value};\r\n\r\n if(!value || input != value.Bedrijfsnaam) {\r\n option = {\r\n Bedrijfsnaam: input,\r\n isNew: true\r\n };\r\n }\r\n\r\n handleDropDownChange(option);\r\n selectRef.current.blur();\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n {locale && (\r\n e.Bedrijfsnaam}\r\n getOptionValue={(e) => e}\r\n required={!field[\"@allowempty\"]}\r\n isDisabled={isDisabled}\r\n components={{Option: OptionTemplate}}\r\n noOptionsMessage={() => null}\r\n loadingMessage={() => null}\r\n locale={locale}\r\n />\r\n )}\r\n \r\n
\r\n );\r\n};","import React from 'react';\r\n\r\nexport const LabelControl = ({field, formDataEntry} : ControlParameters) : JSX.Element => {\r\n\r\n if(formDataEntry && !formDataEntry.enabled) {\r\n return (null);\r\n }\r\n \r\n return (\r\n
\r\n \r\n {field?.properties?.fieldcaption}\r\n \r\n
\r\n );\r\n};","import React from 'react';\r\nimport DOMPurify from 'dompurify';\r\n\r\nexport const TipBlockControl = ({field} : ControlParameters) : JSX.Element => {\r\n\r\n const cleanHtmlString = DOMPurify.sanitize(field.settings.Tip, { ADD_ATTR: ['target'] });\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n

\r\n
\r\n );\r\n};","import React from 'react';\r\nimport { ValidationErrorsMessages } from '../FormValidation';\r\nimport { ValidationControlHelper } from './../../helpers/ValidationControlHelper';\r\n\r\nexport const CheckBoxControl = ({ field, handleChange, formDataEntry, errors } : ControlParameters) : JSX.Element => {\r\n\r\n const handleCheckboxChange = () => {\r\n handleChange({ target: { name: field[\"@column\"], value: !(ValidationControlHelper.valueIsWhatBoolean(formDataEntry?.value)) } });\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n};","import React from 'react';\r\n\r\nexport const ButtonControl = ({ field } : ControlParameters) : JSX.Element => {\r\n\r\n return (\r\n \r\n );\r\n};","import React from \"react\";\r\nimport { CalendarControl } from \"./controls/CalendarControl\";\r\nimport { SelectBoxControl } from \"./controls/SelectBoxControl\";\r\nimport { RadioButtonsControl } from \"./controls/RadioButtonsControl\";\r\nimport { TextBoxControl } from \"./controls/TextBoxControl\";\r\nimport { DropDownListControl } from \"./controls/DropDownListControl\";\r\nimport { InternationalPhoneControl } from \"./controls/InternationalPhoneControl\";\r\nimport { EmailinputControl } from \"./controls/EmailinputControl\";\r\nimport { HeadingLabelControl } from \"./controls/HeadingLabelControl\";\r\nimport { ConsentAgreement } from \"./controls/ConsentAgreement\";\r\nimport { ValidationErrorsHtml } from \"./FormValidation\";\r\nimport { FormSummary } from \"./summary/SummaryControl\";\r\nimport { AdresZoeker } from \"./features/AdresZoeker\";\r\nimport { CitySearcherControl } from \"./controls/CitySearcherControl\";\r\nimport { CompanySearcherControl } from \"./controls/CompanySearcherControl\";\r\nimport { CompanySearcher } from \"./features/CompanySearcher\";\r\nimport { getResourceString } from \"./../../kentico/resource-strings\";\r\nimport { LabelControl } from \"./controls/LabelControl\";\r\nimport { TipBlockControl } from \"./controls/TipBlockControl\";\r\nimport { CheckBoxControl } from \"./controls/CheckBoxControl\";\r\nimport { ButtonControl } from \"./controls/ButtonControl\";\r\n\r\nexport const GetComponent = ({field, formDataEntry, errors, handleChange, handleBlur, formData, formDefinition, navigateToStep, formSummaryData} : ControlParameters) : JSX.Element => {\r\n \r\n if(field.settings.IsHiddenField == \"True\") {\r\n return null;\r\n }\r\n\r\n if(field.settings.PicklistMode) {\r\n if(field.settings.PicklistMode === 'custompicklist' && field.settings.PicklistTemplate === 'bedrijvenzoeker') {\r\n if(field[\"@column\"].endsWith('Naam')) {\r\n return ;\r\n }\r\n else if(field[\"@column\"].endsWith('Plaats')) {\r\n return ;\r\n }\r\n }\r\n }\r\n\r\n switch (field.settings.componentidentifier) {\r\n case 'CalendarControl':\r\n return ;\r\n case 'RadioButtonsControl':\r\n switch(field.properties.inputcontrolstyle) {\r\n case 'select-box':\r\n return ;\r\n default:\r\n return ;\r\n }\r\n case 'TipBlock':\r\n return ;\r\n case 'TextBoxControl':\r\n return ;\r\n case 'InitialsInputField':\r\n return ;\r\n case 'DropDownListControl':\r\n return ;\r\n case 'internationalphone':\r\n return ;\r\n case 'emailinput':\r\n return ;\r\n case 'FormFieldGroup':\r\n return ;\r\n case 'LabelControl':\r\n return ;\r\n case 'CheckBoxControl':\r\n return ;\r\n case 'ConsentAgreement':\r\n return ;\r\n case 'GridControl':\r\n return ;\r\n case 'ButtonControl':\r\n return ;\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nexport const RenderField = ({field, formData, formErrors, handleChange, handleBlur, navigateToStep, formDefinition, formSummaryData}) : JSX.Element => {\r\n const formDataEntry: FormDataEntry = formData[field[\"@column\"]];\r\n const errors = formErrors[field[\"@column\"]];\r\n\r\n return (\r\n \r\n {GetComponent({field: field, formDataEntry: formDataEntry, errors: errors, handleChange: handleChange, handleBlur : handleBlur, formData: formData, formSummaryData: formSummaryData, formDefinition: formDefinition, navigateToStep: navigateToStep})}\r\n {ValidationErrorsHtml(field[\"@column\"], errors)}\r\n \r\n );\r\n};\r\n\r\nexport const RenderStep = ({formDefinition, fields, visibleFields, currentStepIndex, formData, formErrors, handleChange, handleBlur, setFormData, formSummaryData, navigateToStep}) : JSX.Element => {\r\n const step = formDefinition.form.sections[currentStepIndex];\r\n const stepFields = step.fields.map(field => {\r\n return fields.find(f => f[\"@guid\"] === field.identifier);\r\n })?.filter(Boolean) ?? [];\r\n const hasRequiredFields = stepFields.some(field => !field[\"@allowempty\"]);\r\n\r\n const renderedFields = step.fields.map(fieldRef => {\r\n const field = visibleFields.find(f => f[\"@guid\"] === fieldRef.identifier);\r\n\r\n if(!field) {\r\n return (null);\r\n }\r\n\r\n const handleChangeFunction = getCustomHandleChange(field, handleChange, formData, setFormData);\r\n const handleBlurFunction = handleBlur;\r\n\r\n return RenderField({field: field, formData: formData, formErrors: formErrors, handleChange: handleChangeFunction, handleBlur: handleBlurFunction, formDefinition: formDefinition, formSummaryData : formSummaryData, navigateToStep: navigateToStep});\r\n });\r\n\r\n return (\r\n
\r\n {hasRequiredFields && (\r\n

{getResourceString(\"Form.RequiredFieldsHint\")}

\r\n )}\r\n
\r\n {renderedFields}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const getCustomHandleChange = (field: Field, defaultHandleChange: any, formData: any, setFormData: any) => {\r\n let handleChangeFunction = defaultHandleChange;\r\n\r\n // By inputcontrolstyle\r\n switch (field.properties.inputcontrolstyle) {\r\n case 'adreszoeker':\r\n handleChangeFunction = new AdresZoeker(formData, setFormData).handleAdresZoekerChange;\r\n default: \r\n break;\r\n }\r\n\r\n // By PicklistMode\r\n if(field.settings.PicklistMode) {\r\n if(field.settings.PicklistMode === 'custompicklist' && field.settings.PicklistTemplate === 'bedrijvenzoeker') {\r\n if(field[\"@column\"].endsWith('Naam')) {\r\n handleChangeFunction = new CompanySearcher(formData, setFormData).handleCompanySearchChange;\r\n }\r\n else if(field[\"@column\"].endsWith('Plaats')) {\r\n handleChangeFunction = new CompanySearcher(formData, setFormData).handleCompanyCityChange;\r\n }\r\n }\r\n }\r\n\r\n return handleChangeFunction;\r\n};","import axios from 'axios';\r\nimport { FeatureBase } from './base/FeatureBase';\r\nimport { getResourceString } from './../../../kentico/resource-strings';\r\n\r\nexport class AdresZoeker extends FeatureBase {\r\n\r\n private formData = {};\r\n private setFormData: any;\r\n private onlyDigitsPattern = /^\\d+$/;\r\n private partialZipCodePattern = /^\\d{0,4}$|^\\d{4}[A-Za-z]{0,2}$/;\r\n private fullZipCodePattern = /^\\d{4}[A-Z]{2}$/;\r\n\r\n public fieldNames: string[] = [\r\n \"Land\", \r\n \"Postcode\", \r\n \"Huisnummer\", \r\n \"Toevoeging\", \r\n \"Straat\", \r\n \"Woonplaats\",\r\n \"PostcodeAutomatischInvullen\",\r\n \"PostcodeHandmatigInvullen\"\r\n ]\r\n\r\n static delayAdresZoeker = null;\r\n\r\n constructor(formData: any = null, setFormData: any = null) {\r\n super();\r\n this.formData = formData;\r\n this.setFormData = setFormData;\r\n }\r\n\r\n public initFeatureField(field: Field, formDataEntry: FormDataEntry, fields: Field[]): FormDataEntry {\r\n const fieldName = field[\"@column\"];\r\n\r\n if(fieldName.endsWith(\"Land\")) {\r\n return formDataEntry;\r\n }\r\n\r\n const prefix = this.getPrefixFromFieldName(fieldName);\r\n\r\n const countryField: Field = fields.find((field) => field[\"@column\"] == `${prefix}Land`);\r\n if(countryField) {\r\n const countryValue = countryField.properties?.defaultvalue || ''\r\n if(fieldName.endsWith(\"Straat\") || fieldName.endsWith(\"Woonplaats\")) {\r\n formDataEntry.enabled = !(countryValue == \"NL\")\r\n }\r\n if(fieldName.endsWith(\"PostcodeAutomatischInvullen\")) {\r\n formDataEntry.enabled = countryValue == \"NL\";\r\n }\r\n if(fieldName.endsWith(\"PostcodeHandmatigInvullen\")) {\r\n formDataEntry.enabled = false;\r\n }\r\n }\r\n \r\n return formDataEntry;\r\n }\r\n\r\n public validateField(name: string, value: any): string {\r\n const prefix = this.getPrefixFromFieldName(name);\r\n const country = this.formData[`${prefix}Land`].value;\r\n\r\n switch (name) {\r\n case (name.endsWith(\"Postcode\") ? \"Postcode\" : \"\"):\r\n if(country == \"NL\") {\r\n return this.fullZipCodePattern.test(value) ? null : getResourceString(\"Form.Postalcode.Error\");\r\n }\r\n return null;\r\n case (name.endsWith(\"Huisnummer\") ? \"Huisnummer\" : \"\"):\r\n return this.onlyDigitsPattern.test(value) ? null : getResourceString(\"Form.Housenumber.ErrorOnlyNumbers\");\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n public handleAdresZoekerChange = async (e) => {\r\n const { name, value } = e.target;\r\n await this.setAdresZoeker(name, value);\r\n }\r\n\r\n public getStreetAndCity = async (zipCode, houseNumber, houseNumberExt) => {\r\n try {\r\n const response = await axios.get(`/api/esb/getaddress?postcode=${zipCode}&huisnummer=${houseNumber}${houseNumberExt != null ? `&huisnummertoevoeging=${houseNumberExt}` : ``}`);\r\n const place = response.data;\r\n\r\n if(!place || Object.keys(place).length == 0) {\r\n return null;\r\n }\r\n\r\n return {\r\n street: place['streetField'],\r\n city: place['cityField']\r\n };\r\n } catch (error) {\r\n throw new Error('Invalid ZIP code or country code.');\r\n }\r\n }\r\n\r\n public setAdresZoeker = async (name: string, value: string) => {\r\n const formDataTemp = Object.assign({}, this.formData);\r\n \r\n let adresInputsValid = false;\r\n\r\n const prefix = this.getPrefixFromFieldName(name);\r\n const country = formDataTemp[`${prefix}Land`].value;\r\n\r\n switch (name) {\r\n case (name.endsWith(\"Land\") ? \"Land\" : \"\"):\r\n formDataTemp[name].value = value;\r\n formDataTemp[`${prefix}Straat`] = {value: \"\", touched: false, focus: false, enabled: value != \"NL\", loading: false};\r\n formDataTemp[`${prefix}Woonplaats`] = {value: \"\", touched: false, focus: false, enabled: value != \"NL\", loading: false};\r\n formDataTemp[`${prefix}Postcode`] = {value: \"\", touched: false, focus: false, enabled: true, loading: false};\r\n formDataTemp[`${prefix}Huisnummer`] = {value: \"\", touched: false, focus: false, enabled: true, loading: false};\r\n formDataTemp[`${prefix}Toevoeging`] = {value: \"\", touched: false, focus: false, enabled: true, loading: false};\r\n formDataTemp[`${prefix}PostcodeHandmatigInvullen`] = { enabled: false };\r\n formDataTemp[`${prefix}PostcodeAutomatischInvullen`] = { enabled: value == \"NL\" };\r\n break;\r\n case (name.endsWith(\"Postcode\") ? \"Postcode\" : \"\"):\r\n if(value != null) {\r\n value = value.replace(/\\s+/g, '');\r\n }\r\n\r\n if(value == null || value == \"\" || this.partialZipCodePattern.test(value) || this.fullZipCodePattern.test(value) || country != \"NL\") {\r\n value = country == \"NL\" ? value.toUpperCase() : value;\r\n formDataTemp[name] = {value: value, touched: true, focus: true, enabled: true};\r\n }\r\n break;\r\n case (name.endsWith(\"Huisnummer\") ? \"Huisnummer\" : \"\"):\r\n if(this.onlyDigitsPattern.test(value) || value == '') {\r\n formDataTemp[name] = {value: value, touched: true, focus: true, enabled: true, loading: false};\r\n }\r\n break;\r\n case (name.endsWith(\"Straat\") || name.endsWith(\"Woonplaats\") || name.endsWith(\"Toevoeging\") ? name : \"\"):\r\n formDataTemp[name] = {value: value, touched: true, focus: true, enabled: true, loading: false};\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n adresInputsValid = \r\n this.fullZipCodePattern.test(formDataTemp[`${prefix}Postcode`].value) && \r\n this.onlyDigitsPattern.test(formDataTemp[`${prefix}Huisnummer`].value) && \r\n formDataTemp[`${prefix}Land`].value == \"NL\" && \r\n name != `${prefix}Straat` && \r\n name != `${prefix}Woonplaats`;\r\n\r\n if(adresInputsValid) {\r\n formDataTemp[`${prefix}Straat`].loading = true;\r\n formDataTemp[`${prefix}Straat`].value = '';\r\n formDataTemp[`${prefix}Woonplaats`].loading = true;\r\n formDataTemp[`${prefix}Woonplaats`].value = '';\r\n }\r\n\r\n this.setFormData(formDataTemp);\r\n\r\n if (AdresZoeker.delayAdresZoeker) {\r\n clearTimeout(AdresZoeker.delayAdresZoeker);\r\n AdresZoeker.delayAdresZoeker = null;\r\n }\r\n\r\n if(adresInputsValid) {\r\n AdresZoeker.delayAdresZoeker = setTimeout(async () => {\r\n // Fetch data\r\n var data = await this.getStreetAndCity(\r\n formDataTemp[`${prefix}Postcode`].value,\r\n formDataTemp[`${prefix}Huisnummer`].value,\r\n formDataTemp[`${prefix}Toevoeging`].value\r\n );\r\n\r\n // Validate data\r\n if (!data.street || !data.city) {\r\n data = null;\r\n }\r\n\r\n // Update form data based on the fetched data\r\n this.setFormData((prevFormData) => {\r\n const newFormData = {\r\n ...prevFormData,\r\n [`${prefix}PostcodeHandmatigInvullen`]: { enabled: data ? false : true },\r\n [`${prefix}PostcodeAutomatischInvullen`]: { enabled: !data ? false : true },\r\n [`${prefix}Straat`]: { value: data ? data.street : '', focus: formDataTemp[`${prefix}Straat`].focus, enabled: data ? false : true, touched: false, loading: false },\r\n [`${prefix}Woonplaats`]: { value: data ? data.city : '', focus: formDataTemp[`${prefix}Woonplaats`].focus, enabled: data ? false : true, touched: false, loading: false },\r\n };\r\n \r\n return newFormData;\r\n });\r\n }, 1500);\r\n }\r\n }\r\n}","import { FeatureBase } from \"./base/FeatureBase\";\r\n\r\nexport class CompanySearcher extends FeatureBase {\r\n\r\n private setFormData: any;\r\n private formData = {};\r\n\r\n public delayAdresZoeker = null;\r\n public fieldNames: string[] = [\r\n \"Naam\",\r\n \"Plaats\",\r\n \"Straat\",\r\n \"Huisnummer\",\r\n \"Toevoeging\",\r\n \"Postcode\",\r\n \"BedrijfsadresgegevensAutomatisch\",\r\n \"BedrijfsadresgegevensManueel\"\r\n ]\r\n\r\n constructor(formData: any = null, setFormData: any = null) {\r\n super();\r\n this.formData = formData;\r\n this.setFormData = setFormData;\r\n }\r\n\r\n public initFeatureField(field: Field, formDataEntry: FormDataEntry, fields: Field[]): FormDataEntry {\r\n const fieldName = field[\"@column\"];\r\n const prefix = this.getPrefixFromFieldName(fieldName);\r\n\r\n formDataEntry.enabled = (this.fieldNames.find((name) => `${prefix}${name}` == fieldName) && (fieldName !== `${prefix}Plaats`)) ? false : true;\r\n if(fieldName.endsWith(\"BedrijfsadresgegevensAutomatisch\")) {\r\n formDataEntry.enabled = true;\r\n }\r\n if(fieldName.endsWith(\"BedrijfsadresgegevensManueel\")) {\r\n formDataEntry.enabled = false;\r\n }\r\n return formDataEntry;\r\n }\r\n\r\n public handleCompanyCityChange = (e) => {\r\n const { name, value } = e.target;\r\n const prefix = this.getPrefixFromFieldName(name);\r\n\r\n this.setFormData((prevFormData) => {\r\n if(prevFormData[`${prefix}Plaats`]?.value == value) {\r\n return prevFormData;\r\n }\r\n\r\n const newFormData = {\r\n ...prevFormData,\r\n [`${prefix}Guid`]: { value: null, focus: false, touched: false, enabled: false } as FormDataEntry,\r\n [`${prefix}Plaats`]: { value: value, focus: true, touched: true, enabled: true } as FormDataEntry,\r\n [`${prefix}Naam`]: { value: \"\", focus: false, touched: false, enabled: true } as FormDataEntry,\r\n [`${prefix}Straat`]: { value: \"\", focus: false, touched: false, enabled: false } as FormDataEntry,\r\n [`${prefix}Huisnummer`]: { value: \"\", focus: false, touched: false, enabled: false } as FormDataEntry,\r\n [`${prefix}Toevoeging`]: { value: \"\", focus: false, touched: false, enabled: false } as FormDataEntry,\r\n [`${prefix}Postcode`]: { value: \"\", focus: false, touched: false, enabled: false } as FormDataEntry,\r\n [`${prefix}BedrijfsadresgegevensAutomatisch`]: { enabled: true },\r\n [`${prefix}BedrijfsadresgegevensManueel`]: { enabled: false },\r\n };\r\n \r\n return newFormData;\r\n });\r\n }\r\n\r\n public handleCompanySearchChange = (companyDetails: CompanyDetailsType | null) => {\r\n const prefix = this.getPrefixFromFieldName(companyDetails.fieldName);\r\n const isnew = companyDetails?.isNew ?? true;\r\n const isSameNewCompany = isnew && this.formData[`${prefix}Guid`].value == \"\";\r\n \r\n this.setFormData((prevFormData) => {\r\n const { Bedrijfsnaam, BedrijfsGuid, Straat, PostalCode, AddressLine1, AddressLine2 } = companyDetails\r\n\r\n const newFormData = {\r\n ...prevFormData,\r\n [`${prefix}Naam`]: { value: Bedrijfsnaam, focus: false, touched: false, enabled: isnew } as FormDataEntry,\r\n [`${prefix}Guid`]: isSameNewCompany ? this.formData[`${prefix}Guid`] : { value: isnew ? \"\" : BedrijfsGuid, focus: false, touched: false, enabled: false } as FormDataEntry,\r\n [`${prefix}Straat`]: isSameNewCompany ? this.formData[`${prefix}Straat`] : { value: isnew ? \"\" : Straat, focus: false, touched: false, enabled: isnew } as FormDataEntry,\r\n [`${prefix}Huisnummer`]: isSameNewCompany ? this.formData[`${prefix}Huisnummer`] : { value: isnew ? \"\" : AddressLine1, focus: false, touched: false, enabled: isnew } as FormDataEntry,\r\n [`${prefix}Toevoeging`]: isSameNewCompany ? this.formData[`${prefix}Toevoeging`] : { value: isnew ? \"\" : AddressLine2, focus: false, touched: false, enabled: isnew } as FormDataEntry,\r\n [`${prefix}Postcode`]: isSameNewCompany ? this.formData[`${prefix}Postcode`] : { value: isnew ? \"\" : PostalCode?.replace(/\\s/g, \"\"), focus: false, touched: false, enabled: isnew } as FormDataEntry,\r\n [`${prefix}BedrijfsadresgegevensAutomatisch`]: { enabled: !isnew },\r\n [`${prefix}BedrijfsadresgegevensManueel`]: { enabled: isnew },\r\n };\r\n \r\n return newFormData;\r\n });\r\n }\r\n}","export abstract class FeatureBase {\r\n public abstract fieldNames: string[];\r\n \r\n public abstract initFeatureField(field: Field, formDataEntry: FormDataEntry, fields: Field[]): FormDataEntry;\r\n\r\n getPrefixFromFieldName(text: string): string {\r\n const regex = new RegExp(`(${this.fieldNames.join('|')})$`, 'g');\r\n\r\n return text.replace(regex, \"\");\r\n }\r\n}","import { ValidationControlHelper } from \"./ValidationControlHelper\";\r\nimport { DateParser } from '@fnv-core/parsing/date/DateParser';\r\nimport { getResourceString } from '../../kentico/resource-strings';\r\nimport axios, { AxiosResponse } from 'axios';\r\n\r\nexport class ContributionHelper {\r\n\r\n public static async getContribution(state, prevContributionBody, setPrevContributionBody) : Promise> {\r\n if(state.formData[\"Geboortedatum\"].value) {\r\n const content: ContributionRateData = {\r\n code: state.formData[\"broncode\"],\r\n workSituation: state.formData[\"Situatie\"]?.value ?? \"\",\r\n benefitType: state.formData[\"UitkeringVorm\"]?.value ?? \"\",\r\n incomeType: state.formData[\"WatIsJeBrutoMaandinkomenStuderenDeeltijd\"]?.value ?? state.formData[\"WatIsJeBrutoMaandinkomenWerkendUitzendkracht\"]?.value ?? \"\",\r\n studyType: state.formData[\"StudieVorm\"]?.value ?? \"\",\r\n workType: state.formData[\"WerkVorm\"]?.value ?? \"\",\r\n birthday: new DateParser().parse(state.formData[\"Geboortedatum\"].value, true).toISOString(),\r\n };\r\n \r\n if(JSON.stringify(content) !== JSON.stringify(prevContributionBody)) {\r\n setPrevContributionBody(content);\r\n return ContributionHelper.calculateContribution(content);\r\n }\r\n }\r\n\r\n return new Promise>((resolve) => { return resolve(null)});\r\n };\r\n\r\n public static async calculateContribution(content: ContributionRateData) : Promise> {\r\n try {\r\n var response = await axios.post(`/api/contribution/calculate`, content);\r\n return response;\r\n } catch (error) {\r\n throw new Error('Calculate contribution failed.');\r\n }\r\n };\r\n\r\n public static getVisibleConditionsIntroductionContribution(state: any) : (field: Field, formData: any, formErrors: any, fields: Field[], handleNewFormData: any, isVisible: boolean) => boolean {\r\n return (field: Field, formData: any, formErrors: any, fields: Field[], handleNewFormData: any, isVisible: boolean) : boolean => {\r\n \r\n if(field[\"@column\"] != \"Geboortedatum\") {\r\n if(!formData[\"Geboortedatum\"]?.touched || ValidationControlHelper.validateField(\r\n fields,\r\n \"Geboortedatum\", \r\n formData,\r\n state.setFormData,\r\n handleNewFormData,\r\n true)?.length > 0) \r\n {\r\n isVisible = false;\r\n }\r\n }\r\n return isVisible;\r\n }\r\n };\r\n\r\n public static getFieldManipulationsIntroductionContribution(\r\n state: any\r\n ) : (fields: Field[], formData: any) => Field[] {\r\n return (fields: Field[], formData: any) : Field[] => {\r\n \r\n if(!fields) {\r\n return [];\r\n }\r\n\r\n const newFields = [];\r\n\r\n for (let index = 0; index < fields.length; index++) {\r\n let field:Field = JSON.parse(JSON.stringify(fields[index]));\r\n\r\n // only 'Gepensioneerd' if Geboortedatum is 60 years or older\r\n if(field[\"@column\"] == \"UitkeringVorm\" && \r\n formData[\"Geboortedatum\"]?.touched && \r\n !ValidationControlHelper.dateIsValid(new DateParser().parse(formData[\"Geboortedatum\"].value), 60)) {\r\n \r\n let options = field.settings.Options.split(/\\r?\\n/).map(option => {\r\n const [value, label] = option.split(';');\r\n return { value, label };\r\n });\r\n field.settings.Options = options\r\n .filter((option) => option.value !== \"GEP\")\r\n .map((option) => `${option.value};${option.label}`)\r\n .join('\\n');\r\n }\r\n\r\n // show tooltip for Geboortedatum when birthday is within 2 months of now\r\n if(field[\"@column\"] == \"Geboortedatum\" && formData[\"Geboortedatum\"]?.value) {\r\n const date = new Date(formData[\"Geboortedatum\"].value);\r\n const now = new Date();\r\n const thisYearBirthday = new Date(now.getFullYear(), date.getMonth(), date.getDate());\r\n const twoMonthsFromNow = new Date(now);\r\n twoMonthsFromNow.setMonth(now.getMonth() + 2);\r\n \r\n if (thisYearBirthday < now) {\r\n thisYearBirthday.setFullYear(now.getFullYear() + 1);\r\n }\r\n \r\n if(thisYearBirthday >= now && thisYearBirthday <= twoMonthsFromNow) {\r\n field.properties.fielddescription = getResourceString('Form.Lidworden.Geboortedatum.BirthdayWithin2Months');\r\n }\r\n }\r\n\r\n newFields.push(field);\r\n }\r\n \r\n return newFields;\r\n }\r\n };\r\n}","\r\nexport class FormLogicHelper {\r\n public static getQueryParams = () : any => {\r\n const searchParams = new URLSearchParams(window.location.search);\r\n const params = {};\r\n searchParams.forEach((value, key) => {\r\n params[key.toLowerCase()] = value;\r\n });\r\n return params;\r\n }\r\n\r\n public static scrollToInvalidField = (formFieldsRef) => {\r\n setTimeout(() => {\r\n if (formFieldsRef.current) {\r\n const invalidElement = formFieldsRef.current.querySelector('.form__invalid-feedback');\r\n if (invalidElement) {\r\n invalidElement.parentElement.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n }\r\n }\r\n }, 100);\r\n \r\n }\r\n \r\n public static scrollToTop = () => {\r\n setTimeout(() => {\r\n window.scrollTo({\r\n top: 90,\r\n left: 0,\r\n behavior: \"smooth\",\r\n });\r\n \r\n }, 100);\r\n }\r\n\r\n public static isDefaultValueFromApi = (value) => {\r\n // Check for null or undefined\r\n if (value === null || value === undefined) {\r\n return true;\r\n }\r\n\r\n // Check if value is 0 (for numbers)\r\n if (typeof value === 'number' && value === 0) {\r\n return true;\r\n }\r\n\r\n // Check if value is C# DateTime.MinValue equivalent (1/1/0001 12:00:00 AM)\r\n const dateTimeMinValue = new Date(0); // C# DateTime.MinValue as Unix time epoch (0 ticks)\r\n dateTimeMinValue.setUTCFullYear(1); // Year 1\r\n if (value instanceof Date && value.getTime() === dateTimeMinValue.getTime()) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n}\r\n\r\n","export class SummaryHelper {\r\n \r\n public static GetOptionLabelFromFieldByKeySummary = (field: Field, key: string) => {\r\n\r\n if(!field?.settings?.Options) {\r\n return \"-\";\r\n }\r\n\r\n var foundOption = field.settings.Options.split('\\n').find((option) => {\r\n const [value, label] = option.split(';');\r\n return value == key;\r\n });\r\n return foundOption?.split(';')[1] ?? \"-\";\r\n }\r\n\r\n public static getAdresSummary = (prefix: string, formData: any, formFields: Field[]) => {\r\n const street = formData[prefix + \"Straat\"]?.value;\r\n const zipcode = formData[prefix + \"Postcode\"]?.value;\r\n const city = formData[prefix + \"Woonplaats\"]?.value ?? formData[prefix + \"Plaats\"]?.value;\r\n const housenumber = formData[prefix + \"Huisnummer\"]?.value;\r\n const housenumberAddition = formData[prefix + \"Toevoeging\"]?.value;\r\n\r\n const countryField = formFields.find((f) => f[\"@column\"] == prefix + \"Land\");\r\n const countryValue = formData[prefix + \"Land\"]?.value;\r\n\r\n if(!street && !housenumber && !city) {\r\n return '-';\r\n }\r\n let address = '';\r\n\r\n if(street && housenumber) {\r\n address = address.concat(`${street} ${housenumber}`);\r\n\r\n if(housenumberAddition) {\r\n address = address.concat(` ${housenumberAddition ?? \"\"}`);\r\n }\r\n address = address.concat(`
`);\r\n }\r\n \r\n if(zipcode) {\r\n address = address.concat(`${zipcode} `);\r\n }\r\n\r\n address = address.concat(`${city}
`);\r\n\r\n if(countryField && countryValue) {\r\n address = address.concat(`${SummaryHelper.GetOptionLabelFromFieldByKeySummary(countryField, countryValue)}`);\r\n }\r\n\r\n return address;\r\n }\r\n}","import { AdresZoeker } from \"../AdresZoeker\";\r\nimport { FeatureBase } from \"../base/FeatureBase\";\r\nimport { CompanySearcher } from \"../CompanySearcher\";\r\n\r\nexport class FeatureFactory {\r\n\r\n private static featureMap: { [key: string]: () => FeatureBase } = {\r\n 'bedrijvenzoeker': () => new CompanySearcher(),\r\n 'adreszoeker': () => new AdresZoeker()\r\n };\r\n\r\n static getFeatureForField(field: Field): FeatureBase | null {\r\n const inputControlStyle = field.settings.inputcontrolstyle;\r\n const createFeatureInstance = this.featureMap[inputControlStyle];\r\n\r\n if (createFeatureInstance) {\r\n return createFeatureInstance();\r\n }\r\n return null;\r\n }\r\n}","import moment, * as Moment from 'moment';\r\nimport { StringHelpers } from '../../helpers/StringHelpers';\r\nimport { DateParser } from '@fnv-core/parsing/date/DateParser';\r\nimport { FeatureFactory } from '../components/features/factories/FeatureFactory';\r\nimport { AdresZoeker } from '../components/features/AdresZoeker';\r\nimport { FormControlMapping } from '../components/FormControlMapping';\r\n\r\nexport class ValidationControlHelper {\r\n\r\n public static getErrorMessageWithReplacementFields = (errorMessage: string, field: Field, rule: any) : string => {\r\n if(!errorMessage) {\r\n return \"\";\r\n }\r\n\r\n const replacementFields = {\r\n fieldName : field?.properties?.fieldcaption\r\n };\r\n\r\n if(rule) {\r\n replacementFields[\"min\"] = rule.MinimumLength;\r\n replacementFields[\"max\"] = rule.MaximumLength;\r\n }\r\n\r\n return StringHelpers.replacePropertiesInString(errorMessage, replacementFields, true);\r\n }\r\n\r\n public static validateField = (fields: Field[], fieldName: string, formData: any, setFormData: any, handleNewFormData: any, isRequired: boolean, force: boolean = false) : ValidationError[] => {\r\n\r\n let formDataEntry = formData[fieldName];\r\n const field = fields.find(f => f[\"@column\"] === fieldName);\r\n \r\n if(!field) {\r\n return null;\r\n }\r\n\r\n if(!formDataEntry) {\r\n formDataEntry = { value: FormControlMapping.GetComponentTypedValue(field.properties.defaultvalue, field.settings.componentidentifier) ?? null, focus: false, touched: field.properties.defaultvalue ? true : force, enabled: true, loading: false };\r\n formDataEntry = ValidationControlHelper.initFeatureField(field, formDataEntry, fields);\r\n handleNewFormData(fieldName, formDataEntry.value, formDataEntry.focus, formDataEntry.touched, formDataEntry.enabled);\r\n\r\n if(!force) {\r\n return [];\r\n }\r\n }\r\n\r\n if(force && !formDataEntry.touched) {\r\n formDataEntry.touched = true;\r\n handleNewFormData(fieldName, undefined, formDataEntry.focus, formDataEntry.touched, formDataEntry.enabled);\r\n }\r\n \r\n if(!formDataEntry.touched) {\r\n return [];\r\n }\r\n\r\n // handle required\r\n if(isRequired && !ValidationControlHelper.validateDataByRule('required', null, formDataEntry?.value)) {\r\n const error = StringHelpers.formFieldRequiredFieldErrorMessage(field.properties.fieldcaption);\r\n return [{ message: error, html: undefined }];\r\n }\r\n\r\n // handle field type specific validation\r\n if(field.settings?.validationerrormessage && !ValidationControlHelper.validateDataByControlName(field.settings.controlname, formDataEntry?.value)) {\r\n return [{\r\n message: ValidationControlHelper.getErrorMessageWithReplacementFields(field.settings.validationerrormessage, field, null),\r\n html: undefined \r\n }];\r\n }\r\n\r\n // handle feature fields validation\r\n const featureErrors = ValidationControlHelper.validateFeatureField(field, formDataEntry?.value, formData, setFormData);\r\n if(featureErrors) {\r\n return [{\r\n message: ValidationControlHelper.getErrorMessageWithReplacementFields(featureErrors, field, null),\r\n html: undefined \r\n }];\r\n }\r\n\r\n // handle validationrulesdata\r\n const validationObject = field.validationrulesdata;\r\n if(!validationObject) {\r\n return [];\r\n }\r\n \r\n // more than 1 validation\r\n if(Array.isArray(validationObject.ValidationRuleConfiguration)) {\r\n const result = validationObject.ValidationRuleConfiguration.filter((item) => !ValidationControlHelper.validateDataByRule(item.Identifier, item.ValidationRule, formDataEntry?.value));\r\n return result?.map((item) => { return { \r\n message: ValidationControlHelper.getErrorMessageWithReplacementFields(item.ValidationRule.ErrorMessage, field, item.ValidationRule),\r\n html: item.ValidationRule.Html\r\n }; \r\n });\r\n }\r\n else {\r\n // only 1 validation\r\n const isValid = ValidationControlHelper.validateDataByRule(validationObject.ValidationRuleConfiguration.Identifier, validationObject.ValidationRuleConfiguration.ValidationRule, formDataEntry?.value);\r\n return isValid ? [] : [{ \r\n message: ValidationControlHelper.getErrorMessageWithReplacementFields(validationObject.ValidationRuleConfiguration.ValidationRule.ErrorMessage, field, validationObject.ValidationRuleConfiguration.ValidationRule),\r\n html: validationObject.ValidationRuleConfiguration.ValidationRule.Html\r\n }\r\n ];\r\n }\r\n }\r\n\r\n public static validateDataByControlName = (controlName: any, value: any) : boolean => {\r\n switch (controlName) {\r\n case 'internationalphone':\r\n const phonePattern = /^[0-9]{10}$/;\r\n return phonePattern.test(value);\r\n default:\r\n return true;\r\n }\r\n }\r\n\r\n public static validateFeatureField = (field: Field, value: any, formData: any, setFormData: any) : string => {\r\n // By inputcontrolstyle\r\n let error = null;\r\n switch (field.properties.inputcontrolstyle) {\r\n case 'adreszoeker':\r\n error = new AdresZoeker(formData, setFormData).validateField(field[\"@column\"], value);\r\n default: \r\n break;\r\n }\r\n \r\n return error;\r\n };\r\n\r\n public static validateDataByRule = (ruleName: string, rule: any, value: any) : boolean => {\r\n switch (ruleName) {\r\n case 'required':\r\n return (value !== undefined && value !== null && value !== \"\" && !(typeof value === \"boolean\")) || ((typeof value === \"boolean\") && value == true); \r\n case 'Kentico.Email':\r\n const emailPattern = /^[a-zA-Z0-9._+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\r\n return emailPattern.test(value);\r\n case 'Kentico.RegularExpression':\r\n const regex = new RegExp(rule.RegularExpression);\r\n return regex.test(value);\r\n case 'Kentico.MinimumLength':\r\n return (value?.length ?? 0) >= parseInt(rule.MinimumLength);\r\n case 'Kentico.MaximumLength':\r\n return !((value?.length ?? 0) > parseInt(rule.MaximumLength));\r\n case 'CalendarMinYearsValidationRule':\r\n return ValidationControlHelper.dateIsValid(new DateParser().parse(value), parseInt(rule.MinYearsValue)); \r\n case 'CalendarDateNotBetweenDatesValidationRule':\r\n return !ValidationControlHelper.dateIsValid(new DateParser().parse(value), parseInt(rule.MinYearsValue), parseInt(rule.MaxYearsValue)); \r\n case 'IbanValidationRule':\r\n return ValidationControlHelper.stringIsIban(value); \r\n default:\r\n return true;\r\n }\r\n }\r\n\r\n public static valueIsWhatBoolean = (value: any) : boolean => {\r\n if(value == null) {\r\n return false;\r\n }\r\n\r\n return (value?.toString() ?? '').toLowerCase() == \"true\";\r\n }\r\n\r\n public static dateIsValid = (date: Date, minYear: number, maxYear: number = -1) : boolean => {\r\n \r\n const startDate = moment(date);\r\n const timeEnd = moment(new Date());\r\n const diff = timeEnd.diff(startDate); \r\n const diffDuration = moment.duration(diff);\r\n\r\n if(maxYear == -1) {\r\n return diffDuration.years() >= minYear;\r\n }\r\n\r\n return diffDuration.years() >= minYear && diffDuration.years() < maxYear;\r\n }\r\n\r\n public static stringIsIban = (iban: string) : boolean => {\r\n const ibanRegex: RegExp = /^[A-Z]{2}[0-9A-Z]{13,32}$/;\r\n if (!iban || typeof iban !== \"string\") return false;\r\n\r\n iban = iban.toUpperCase().replace(/\\s+/g, ''); // Remove spaces and ensure uppercase.\r\n\r\n // Check if the IBAN matches the generic IBAN format (2 letters + 13 to 32 alphanumeric characters).\r\n if (!ibanRegex.test(iban)) return false;\r\n\r\n // Move the first four characters to the end of the string.\r\n const rearrangedIban = iban.slice(4) + iban.slice(0, 4);\r\n\r\n // Replace letters with numbers (A = 10, B = 11, ..., Z = 35).\r\n const numericIban = rearrangedIban\r\n .split('')\r\n .map((char) => (/[A-Z]/.test(char) ? (char.charCodeAt(0) - 'A'.charCodeAt(0) + 10).toString() : char))\r\n .join('');\r\n\r\n // Perform the modulo 97 operation.\r\n const ibanBigInt = BigInt(numericIban);\r\n return ibanBigInt % BigInt(97) === BigInt(1);\r\n }\r\n\r\n public static isNullOrEmpty = (value: any) : boolean => {\r\n if (value == null || (typeof value === 'string' && value.trim() === '') || (Array.isArray(value) && value.length === 0) ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static initFeatureField = (field: Field, formDataEntry: FormDataEntry, fields: Field[]) : FormDataEntry => {\r\n\r\n const feature = FeatureFactory.getFeatureForField(field);\r\n\r\n if (feature) {\r\n formDataEntry = feature.initFeatureField(field, formDataEntry, fields);\r\n }\r\n \r\n return formDataEntry;\r\n };\r\n}","import { ValidationControlHelper } from \"./ValidationControlHelper\";\r\n\r\nexport class VisibilityControlHelper {\r\n\r\n private static helpers = {\r\n isOfAge: (birthDate: Date, age: number) => {\r\n if(!birthDate) {\r\n return false;\r\n }\r\n\r\n const ageThresholdDate = new Date(\r\n birthDate.getFullYear() + age,\r\n birthDate.getMonth(),\r\n birthDate.getDate(),\r\n birthDate.getHours(),\r\n birthDate.getMinutes(),\r\n birthDate.getSeconds(),\r\n birthDate.getMilliseconds()\r\n );\r\n\r\n return new Date() >= ageThresholdDate;\r\n }\r\n };\r\n\r\n public static isFieldVisible = (field: Field, formData: any, formErrors: any, fields: Field[], handleNewFormData: any, \r\n customVisibleConditions: (field: Field, formData: any, formErrors: any, fields: Field[], handleNewFormData: any, isVisible: boolean) => boolean) : boolean => {\r\n \r\n let isVisible = true;\r\n\r\n if (field.visibilityconditiondata) {\r\n const condition = field.visibilityconditiondata.VisibilityConditionConfiguration;\r\n if(condition) {\r\n isVisible = false;\r\n switch (condition.Identifier) {\r\n case \"TrueLime.ExpressionVisibilityCondition\":\r\n isVisible = VisibilityControlHelper.evaluateExpression(condition.VisibilityCondition.Expression, formData);\r\n break;\r\n case \"Kentico.AnotherStringField\":\r\n isVisible = VisibilityControlHelper.evaluateAnotherStringField(field, condition.VisibilityCondition, formData, formErrors, fields, handleNewFormData, customVisibleConditions);\r\n break;\r\n case \"Kentico.AnotherBoolField\":\r\n isVisible = VisibilityControlHelper.evaluateAnotherBoolField(field, condition.VisibilityCondition, formData, formErrors, fields, handleNewFormData, customVisibleConditions);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n isVisible = customVisibleConditions(field, formData, formErrors, fields, handleNewFormData, isVisible);\r\n\r\n return isVisible;\r\n }\r\n\r\n public static evaluateExpression(expression: string, formData: any, helpers: Record any> = {}): boolean {\r\n const parsedExpression = expression.replace(/Fields\\[\"(\\w+)\"\\]/g, (match, fieldName) => {\r\n if (formData.hasOwnProperty(fieldName)) {\r\n const field = formData[fieldName];\r\n if (field && typeof field === 'object' && 'value' in field) {\r\n const value = field.value;\r\n\r\n if(!value) {\r\n return 'null';\r\n }\r\n\r\n // Check if the value is a date\r\n if (!isNaN(Date.parse(value))) {\r\n return `new Date(\"${value}\")`; // Replace with a Date object\r\n }\r\n return `\"${value}\"`;\r\n }\r\n return `\"${field}\"`;\r\n } else {\r\n return 'undefined';\r\n }\r\n });\r\n\r\n try {\r\n // Create a dynamic function that includes the helpers\r\n const helperNames = Object.keys(this.helpers).join(\", \");\r\n const helperValues = Object.keys(this.helpers).map(key => this.helpers[key])\r\n\r\n const result = new Function(helperNames, `return ${parsedExpression};`)(...helperValues);\r\n return !!result; // Ensure the result is a boolean\r\n } catch (error) {\r\n console.error(\"Error evaluating expression:\", error);\r\n return false;\r\n }\r\n }\r\n\r\n public static evaluateAnotherBoolField(field: any, condition: any, formData: any, formErrors: any, fields: Field[], handleNewFormData: any,\r\n customVisibleConditions: (field: Field, formData: any, formErrors: any, fields: Field[], handleNewFormData: any, isVisible: boolean) => boolean\r\n ): boolean {\r\n let isVisible = false;\r\n const dependeeField = fields.find(f => f[\"@guid\"] === condition.DependeeFieldGuid);\r\n if(dependeeField) {\r\n if(VisibilityControlHelper.isFieldVisible(dependeeField, formData, formErrors, fields, handleNewFormData, customVisibleConditions)) {\r\n const dependeeEntry: FormDataEntry = formData[dependeeField[\"@column\"]] || { value: dependeeField.properties.defaultvalue, focus: undefined, touched: undefined }; \r\n if (condition.ExpectedValue === 'IsTrue') {\r\n isVisible = ValidationControlHelper.valueIsWhatBoolean(dependeeEntry?.value) == true;\r\n }\r\n if (condition.ExpectedValue === 'IsFalse') {\r\n isVisible = ValidationControlHelper.valueIsWhatBoolean(dependeeEntry?.value) == false;\r\n }\r\n }\r\n else {\r\n isVisible = false;\r\n }\r\n }\r\n return isVisible;\r\n }\r\n\r\n public static evaluateAnotherStringField(field: any, condition: any, formData: any, formErrors: any, fields: Field[], handleNewFormData: any,\r\n customVisibleConditions: (field: Field, formData: any, formErrors: any, fields: Field[], handleNewFormData: any, isVisible: boolean) => boolean\r\n ): boolean {\r\n let isVisible = false;\r\n const dependeeField = fields.find(f => f[\"@guid\"] === condition.DependeeFieldGuid);\r\n if(dependeeField) {\r\n if(VisibilityControlHelper.isFieldVisible(dependeeField, formData, formErrors, fields, handleNewFormData, customVisibleConditions)) {\r\n const dependeeEntry: FormDataEntry = formData[dependeeField[\"@column\"]] || { value: dependeeField.properties.defaultvalue, focus: undefined, touched: undefined }; \r\n if (condition.ComparisonType === 'Equal') {\r\n if(condition.CompareToValue == 'isvisible') {\r\n return true;\r\n }\r\n isVisible = dependeeEntry.value === condition.CompareToValue;\r\n if(!isVisible) {\r\n delete formData[field[\"@column\"]];\r\n delete formErrors[field[\"@column\"]];\r\n }\r\n }\r\n if (dependeeEntry !== undefined && (condition.ComparisonType === 'NotEqual')) {\r\n isVisible = dependeeEntry.value !== undefined && dependeeEntry.value !== condition.CompareToValue;\r\n if(!isVisible) {\r\n delete formData[field[\"@column\"]];\r\n delete formErrors[field[\"@column\"]];\r\n }\r\n }\r\n }\r\n else {\r\n isVisible = false;\r\n }\r\n }\r\n return isVisible;\r\n }\r\n}\r\n\r\n","import React, { ComponentType, forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\r\nimport { VisibilityControlHelper } from '../helpers/VisibilityControlHelper';\r\nimport { ValidationControlHelper } from '../helpers/ValidationControlHelper';\r\nimport { FormLogicHelper } from '../helpers/FormLogicHelper';\r\nimport _ from 'lodash';\r\nimport axios from 'axios'; \r\nimport { ErrorMessageService } from './../../services';\r\nimport { getResourceString } from './../../kentico/resource-strings';\r\nimport { PopupOk, PopupOkProps } from './../../presentational/PopupOk';\r\nimport { ContainedPopupContainer } from './../../containers/PopupContainer';\r\nimport { format } from \"date-fns\";\r\nimport { CookieManager } from '@fnv-core/cookies';\r\nimport { FormControlMapping } from '../components/FormControlMapping';\r\nimport { Step } from '../../presentational/Steps';\r\nimport { UserService } from '@fnv-core/authentication';\r\n\r\n// Combine state and handlers\r\nexport type FormStateProps = FormState & FormStateHandlers & FormStateComponents & {\r\n handleBlur: () => void,\r\n handleChange: () => void,\r\n handleNewFormData: () => void,\r\n handleNextStep: (event: React.MouseEvent) => void,\r\n handlePrevStep: (event: React.MouseEvent) => void,\r\n handleSubmit: (event: React.MouseEvent) => void,\r\n updateVisibleFields: (stepIndex: number, forceValidation?: boolean) => void,\r\n initForms: (formDefinition: FormDefinition, userInfoAutoFill?: boolean) => void,\r\n preloadCustomParams: (params: string[]) => void,\r\n doAfterSaveActions: (formData: any, pageModel:TPageModel) => void,\r\n customVisibleConditions: (field: Field, formData: any, formErrors: any, fields: Field[], handleNewFormData: any, isVisible: boolean) => boolean;\r\n fieldManipulations: (fields: Field[], formData: any) => Field[];\r\n formatFormDataForSubmit: (key: string, value: any) => any;\r\n getFormSteps:() => Step[];\r\n};\r\n\r\n// Define the HOC\r\nconst withFormState =

, TPageModel>(WrappedComponent: ComponentType

) => {\r\n const WithFormState = forwardRef>>((state, ref) => {\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [formLoading, setFormLoading] = useState(true);\r\n const [formSaved, setFormSaved] = useState(false);\r\n const [onError, setOnError] = useState(false);\r\n \r\n const [useDefaultNavigation, setUseDefaultNavigation] = useState(true);\r\n const [formData, setFormData] = useState({});\r\n const [pageModel, setPageModel] = useState((window[`pageModel${(state as any).reactId ?? \"\"}`] as TPageModel) || null);\r\n const [initialFormData, setInitialFormData] = useState(null);\r\n const [formErrors, setFormErrors] = useState({});\r\n const [visibleFields, setVisibleFields] = useState([]);\r\n const [currentStepIndex, setCurrentStepIndex] = useState(0);\r\n const [handleNextFormStep, setHandleNextFormStep] = useState(false);\r\n const [handlePrevFormStep, setHandlePrevFormStep] = useState(false);\r\n const [handleFormStepSpecific, setHandleFormStepSpecific] = useState(-1);\r\n const [handleFormSubmit, setHandleFormSubmit] = useState(false);\r\n const [formDefinition, setFormDefinition] = useState(null as FormDefinition);\r\n const [fields, setFields] = useState([] as Field[]);\r\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\r\n const [showOkPopup, setShowOkPopup] = useState(false);\r\n \r\n const formFieldsRef = useRef(null);\r\n const dateFormat = \"dd-MM-yyyy\";\r\n const wordLidBroncode: string = (window[\"WordLidBroncode\"] as string) || null;\r\n\r\n const [fieldManipulations, setFieldManipulations] = useState<(fields: Field[], formData: any) => Field[]>(\r\n () => { \r\n return (fields: Field[], formData: any) => {\r\n return fields;\r\n }\r\n });\r\n\r\n const [doAfterSaveActions, setDoAfterSaveActions] = useState<(formData: any, pageModel: any) => void >(() => { return () => {} }); \r\n\r\n const [customVisibleConditions, setCustomVisibleConditions] = useState<(field: Field, formData: any, formErrors: any, fields: Field[], handleNewFormData: any, isVisible: boolean) => boolean>(\r\n () => { \r\n return (field: Field, formData: any, formErrors: any, fields: Field[], handleNewFormData: any, isVisible: boolean) => {\r\n return isVisible;\r\n }\r\n });\r\n \r\n ErrorMessageService.setErrorMessagePropertes(\r\n getResourceString(\"Form.Error.Unknown\"),\r\n getResourceString(\"Form.Error.UnknownMessage\"),\r\n getResourceString(\"Fnv.PhoneNumber\"),\r\n getResourceString(\"Fnv.PhoneNumberInfo\"),\r\n getResourceString(\"Global.Ok\"),\r\n \"\"\r\n );\r\n\r\n useEffect(() => {\r\n if(initialFormData) {\r\n setFormData((prev) => {\r\n const newFormErrors = {\r\n ...prev,\r\n ...initialFormData\r\n };\r\n \r\n return newFormErrors;\r\n });\r\n }\r\n }, [initialFormData]);\r\n\r\n useEffect(() => {\r\n if(formDefinition && formData) {\r\n setFields([...fieldManipulations(formDefinition.form.field, formData)]);\r\n }\r\n }, [formData]);\r\n\r\n useEffect(() => {\r\n updateVisibleFields(currentStepIndex);\r\n }, [fields]);\r\n\r\n useEffect(() => {\r\n if(formDefinition && formData) {\r\n setFields(fieldManipulations(formDefinition.form.field, formData));\r\n }\r\n }, [fieldManipulations]);\r\n\r\n useEffect(() => {\r\n updateVisibleFields(currentStepIndex);\r\n }, [customVisibleConditions]);\r\n\r\n useEffect(() => {\r\n if(handleNextFormStep) {\r\n setHandleNextFormStep(false);\r\n if(!Object.keys(formErrors).some((key) => visibleFields.some((vField) => vField[\"@column\"] == key) && formErrors[key].length > 0)) {\r\n const nextStepIndex = Math.min(currentStepIndex + 1, formDefinition.form.sections.length - 1);\r\n setCurrentStepIndex(nextStepIndex);\r\n updateVisibleFields(nextStepIndex);\r\n \r\n FormLogicHelper.scrollToTop();\r\n }\r\n else {\r\n FormLogicHelper.scrollToInvalidField(formFieldsRef);\r\n }\r\n }\r\n \r\n if(handleFormStepSpecific != -1) {\r\n setCurrentStepIndex(handleFormStepSpecific);\r\n \r\n updateVisibleFields(handleFormStepSpecific);\r\n \r\n FormLogicHelper.scrollToTop();\r\n \r\n setHandleFormStepSpecific(-1);\r\n }\r\n \r\n if(handlePrevFormStep) {\r\n setHandlePrevFormStep(false);\r\n \r\n const nextStepIndex = Math.max(currentStepIndex - 1, 0);\r\n setCurrentStepIndex(nextStepIndex);\r\n updateVisibleFields(nextStepIndex);\r\n \r\n FormLogicHelper.scrollToTop();\r\n }\r\n \r\n if(handleFormSubmit) {\r\n setHandleFormSubmit(false);\r\n \r\n if(!Object.keys(formErrors).some((key) => visibleFields.some((vField) => vField[\"@column\"] == key) && formErrors[key].length > 0)) {\r\n \r\n var bodyFormData = new FormData();\r\n var entryKeys = Object.keys(formData);\r\n \r\n entryKeys.forEach(key => {\r\n const entry = formData[key];\r\n entry.value = formatFormDataForSubmit(key, entry.value);\r\n if(entry.value != null) {\r\n bodyFormData.append(key, entry.value);\r\n }\r\n });\r\n\r\n bodyFormData.append(\"Invoeromgeving\", UserService.getCurrentRole());\r\n\r\n setLoading(true);\r\n \r\n axios.put(`/internal/formandcontentreact/set/${formDefinition.form.name}`, bodyFormData, {headers: { \"Content-Type\": \"multipart/form-data\" }}).then((response) => {\r\n try {\r\n if(response.status == 200) {\r\n setTimeout(() => {\r\n doAfterSaveActions(formData, pageModel);\r\n handleFormAfterSave();\r\n }, 1500);\r\n }\r\n else {\r\n setLoading(false);\r\n setOnError(true);\r\n }\r\n } catch (error) {\r\n setLoading(false);\r\n setOnError(true);\r\n }\r\n });\r\n }\r\n else {\r\n FormLogicHelper.scrollToInvalidField(formFieldsRef);\r\n }\r\n }\r\n \r\n }, [handleNextFormStep, handlePrevFormStep, handleFormStepSpecific, handleFormSubmit]);\r\n\r\n const handleFormAfterSave = () : void => {\r\n if((pageModel as any)?.successUrl != null && (pageModel as any).successUrl != \"\") {\r\n CookieManager.createCookie(\"submitted-form\", formDefinition.form.name, 1);\r\n window.location.replace(decodeURIComponent((pageModel as any).successUrl));\r\n return;\r\n }\r\n else if(formDefinition.form.afterSave.redirectUrl) {\r\n CookieManager.createCookie(\"submitted-form\", formDefinition.form.name, 1);\r\n window.location.replace(formDefinition.form.afterSave.redirectUrl);\r\n return;\r\n }\r\n\r\n setLoading(false);\r\n setShowOkPopup(true);\r\n };\r\n\r\n const onPopupOKSubmit = () => {\r\n if(formDefinition.form.afterSave.displayText) {\r\n window.location.replace(window.location.origin);\r\n return;\r\n }\r\n\r\n window.location.reload();\r\n }\r\n\r\n const formatFormDataForSubmit = (key: string, value: any) : any => {\r\n var field = fields.find(f => f[\"@column\"] === key);\r\n \r\n if(field == null || value == null) {\r\n return null;\r\n }\r\n \r\n var controlType = field.settings.componentidentifier;\r\n switch (controlType) {\r\n case \"ConsentAgreement\":\r\n if(!value || (typeof value !== \"boolean\")) {\r\n return null;\r\n }\r\n break;\r\n case \"CalendarControl\":\r\n return format(new Date(value), dateFormat);\r\n default:\r\n break;\r\n }\r\n \r\n return value;\r\n };\r\n\r\n const preloadQueryParams = (formDefinitions: FormDefinition) : void => {\r\n\r\n // Get the query params from the URL\r\n const queryParams = FormLogicHelper.getQueryParams();\r\n\r\n // Initialize form data with query parameters for hidden fields or default values\r\n const initialData = {};\r\n formDefinitions.form.field.forEach(field => {\r\n if(field.settings.IsHiddenField == \"True\") {\r\n if(field[\"@column\"].toLowerCase() == 'broncode' && !queryParams[field[\"@column\"].toLowerCase()]) {\r\n initialData[field[\"@column\"]] = {value: wordLidBroncode, enabled: false, touched: false, focus: false, loading: false} as FormDataEntry;\r\n }\r\n else if(queryParams[field[\"@column\"].toLowerCase()]) {\r\n initialData[field[\"@column\"]] = {\r\n value: FormControlMapping.GetComponentTypedValue(queryParams[field[\"@column\"].toLowerCase()], field.settings.componentidentifier), \r\n enabled: false, \r\n touched: false, \r\n focus: false, \r\n loading: false\r\n } as FormDataEntry;\r\n }\r\n else if(field.properties.defaultvalue && initialData[field[\"@column\"]] == null) {\r\n initialData[field[\"@column\"]] = {\r\n value: FormControlMapping.GetComponentTypedValue(field.properties.defaultvalue, field.settings.componentidentifier), \r\n enabled: false, \r\n touched: false, \r\n focus: false, \r\n loading: false\r\n } as FormDataEntry;\r\n }\r\n }\r\n else {\r\n if(queryParams[field[\"@column\"].toLowerCase()]) {\r\n field.properties.defaultvalue = queryParams[field[\"@column\"].toLowerCase()];\r\n }\r\n }\r\n });\r\n\r\n setInitialFormData(initialData);\r\n }\r\n\r\n const initForms = (formDefinitions: FormDefinition, userInfoAutoFill: boolean = true) => {\r\n // prefill\r\n try {\r\n\r\n const prefillPromise = userInfoAutoFill ? axios.get(`/internal/formandcontentreact/get/${formDefinitions.form.name.toLowerCase()}`).then((response) => {\r\n if(response.status == 200) {\r\n const dataKeys = Object.keys(response.data);\r\n for (let index = 0; index < dataKeys.length; index++) {\r\n const key = dataKeys[index];\r\n const data = response.data[key];\r\n\r\n if(FormLogicHelper.isDefaultValueFromApi(data)) {\r\n continue;\r\n }\r\n \r\n const indexOfField = formDefinitions.form.field.findIndex((formField) => formField[\"@column\"].toLowerCase() == key.toLowerCase());\r\n if(indexOfField > -1) {\r\n const field = formDefinitions.form.field[indexOfField];\r\n field.properties.defaultvalue = response.data[key];\r\n formDefinitions.form.field[indexOfField] = field;\r\n }\r\n }\r\n }\r\n\r\n return new Promise((resolve) => { resolve();});\r\n }) : new Promise((resolve) => { resolve();});\r\n \r\n prefillPromise.then(() => {\r\n setFormDefinition(formDefinitions);\r\n preloadQueryParams(formDefinitions);\r\n });\r\n \r\n } catch (error) {\r\n console.log(error);\r\n setFormLoading(false);\r\n setOnError(true);\r\n }\r\n\r\n window.addEventListener('resize', handleResize);\r\n \r\n // Cleanup the event listener when the component unmounts\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n };\r\n\r\n const handleResize = () => {\r\n setWindowWidth(window.innerWidth);\r\n };\r\n\r\n const handleBlur = (e) => {\r\n const { name } = e.target;\r\n handleNewFormData(name, undefined, false, true, true);\r\n };\r\n \r\n const handleChange = (e) => {\r\n const { name, value } = e.target;\r\n handleNewFormData(name, value, true, true, true);\r\n if(formData[name]?.value?.length ?? 0 <= (value?.length ?? 0 - 1)) {\r\n handleBlur(e);\r\n }\r\n };\r\n\r\n const handleNewFormData = (name: string, value: any, focus: boolean = false, touched: boolean = false, enabled: boolean = true) => {\r\n setFormData((prevFormData) => {\r\n let formDataEntry: FormDataEntry = prevFormData[name] || { value: undefined, focus: undefined, touched: undefined, enabled: undefined };\r\n \r\n // Update the formDataEntry properties\r\n if(value !== undefined) {\r\n formDataEntry.value = value;\r\n }\r\n formDataEntry.focus = focus;\r\n formDataEntry.touched = touched; \r\n formDataEntry.enabled = enabled;\r\n\r\n const newFormData = {\r\n ...prevFormData,\r\n [name]: formDataEntry,\r\n };\r\n \r\n return newFormData;\r\n });\r\n };\r\n\r\n const handleNextStep = (event: React.MouseEvent) => {\r\n\r\n event.preventDefault();\r\n \r\n updateVisibleFields(currentStepIndex, true);\r\n \r\n setHandleNextFormStep(true);\r\n };\r\n \r\n const handlePrevStep = (event: React.MouseEvent) => {\r\n \r\n event.preventDefault();\r\n \r\n setHandlePrevFormStep(true);\r\n };\r\n \r\n const handleSubmit = async (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n \r\n updateVisibleFields(currentStepIndex, true);\r\n \r\n setHandleFormSubmit(true);\r\n };\r\n\r\n // Function to update visible fields based on current form data\r\n const updateVisibleFields = (stepIndex: number, forceValidation: boolean = false) => {\r\n const updatedVisibleFields = [];\r\n if(fields) {\r\n fields.forEach(field => {\r\n if(formDefinition.form.sections[stepIndex].fields.some((stepField) => stepField.identifier == field[\"@guid\"])) {\r\n if(field.settings.IsHiddenField !== \"True\") {\r\n if (VisibilityControlHelper.isFieldVisible(field, formData, formErrors, fields, handleNewFormData, customVisibleConditions)) {\r\n updatedVisibleFields.push(field);\r\n if(field.settings.componentidentifier == \"FormFieldGroup\" || field.settings.componentidentifier == \"GridControl\") {\r\n return;\r\n }\r\n const errors = ValidationControlHelper.validateField(fields, field[\"@column\"], formData, setFormData, handleNewFormData, !field[\"@allowempty\"], forceValidation);\r\n addErrorsToFormErrors(field[\"@column\"], errors);\r\n } else {\r\n // Reset the value of the field if it is not visible\r\n delete formData[field[\"@column\"]];\r\n delete formErrors[field[\"@column\"]];\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n setVisibleFields(updatedVisibleFields);\r\n };\r\n\r\n const addErrorsToFormErrors = (name, errors) => {\r\n if (_.isEqual(errors, formErrors[name])) {\r\n return;\r\n }\r\n setFormErrors((prevFormErrors) => {\r\n const newFormErrors = {\r\n ...prevFormErrors,\r\n [name]: errors,\r\n };\r\n \r\n return newFormErrors;\r\n });\r\n };\r\n\r\n const getFormSteps = () => {\r\n if(!formDefinition || !fields) {\r\n return [];\r\n }\r\n\r\n const steps = formDefinition.form.sections.map((section, index) => {\r\n\r\n let sectionTitle = getResourceString(`Form.Sections.${section[\"@guid\"]}`);\r\n if(sectionTitle == \"\") {\r\n const sectionFields = section.fields.map(field => {\r\n return fields.find(f => f[\"@guid\"] === field.identifier);\r\n })?.filter(Boolean) ?? [];\r\n\r\n const firstFormFieldGroup = sectionFields.find(item => item.settings.componentidentifier === \"FormFieldGroup\");\r\n sectionTitle = firstFormFieldGroup?.properties?.fieldcaption;\r\n }\r\n\r\n return { \r\n title: sectionTitle ?? `Form.Sections.${section[\"@guid\"]}`, \r\n formName: index.toString()\r\n }; \r\n });\r\n\r\n return steps;\r\n };\r\n\r\n const FormNavigationBar = ({}) => {\r\n return (\r\n <>\r\n {formDefinition.form.sections.length > 1 && useDefaultNavigation && (\r\n
\r\n {(() => {\r\n if(currentStepIndex !== 0){\r\n return ( \r\n \r\n );\r\n }\r\n })()}\r\n
\r\n {(() => {\r\n if(currentStepIndex !== formDefinition.form.sections.length - 1){\r\n return ( \r\n \r\n );\r\n }\r\n else {\r\n return (\r\n \r\n );\r\n }\r\n })()}\r\n
\r\n
\r\n )}\r\n \r\n )\r\n }\r\n\r\n // Expose methods via ref if needed\r\n useImperativeHandle(ref, () => ({\r\n setLoading,\r\n setFormLoading,\r\n setFormSaved,\r\n setOnError,\r\n setShowOkPopup,\r\n setFormData,\r\n setUseDefaultNavigation,\r\n setFormErrors,\r\n setVisibleFields,\r\n setCurrentStepIndex,\r\n setHandleNextFormStep,\r\n setHandlePrevFormStep,\r\n setHandleFormStepSpecific,\r\n setHandleFormSubmit,\r\n setFormDefinition,\r\n setWindowWidth,\r\n handleBlur,\r\n handleChange,\r\n handleNewFormData,\r\n handleNextStep,\r\n handlePrevStep,\r\n handleSubmit,\r\n updateVisibleFields,\r\n initForms\r\n }));\r\n\r\n return (\r\n <>\r\n {onError && (\r\n \r\n )}\r\n\r\n {!formLoading && (\r\n \r\n )}\r\n\r\n \r\n \r\n );\r\n });\r\n\r\n return WithFormState;\r\n};\r\n\r\nexport default withFormState;","import * as React from 'react';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport { Link } from 'react-router-dom';\r\nimport ReactHtmlParser from 'react-html-parser';\r\n\r\ninterface onSubmitFunction {\r\n (event: React.MouseEvent): void;\r\n}\r\n\r\nexport interface PopupErrorProps {\r\n isUserError : boolean;\r\n title: string;\r\n explanation: string;\r\n message: string;\r\n okButtonText: string;\r\n telephoneText: string;\r\n telephoneNumber: string;\r\n telephoneHint: string;\r\n linkUrl: string;\r\n container: any;\r\n stayOnPage?: boolean;\r\n setFormValues?: any;\r\n\r\n email?: string;\r\n emailInfo? : string;\r\n}\r\n\r\nexport const PopupError = (props: PopupErrorProps) => {\r\n \r\n return {}}>\r\n \r\n {props.isUserError ?
\r\n \r\n
: null}\r\n {props.title}\r\n
\r\n \r\n {!props.isUserError && <>\r\n
\r\n {props.explanation !== undefined && props.message !== '' ? ReactHtmlParser(props.message) : null}\r\n
\r\n
\r\n {props.explanation !== undefined && props.explanation !== ''\r\n ? ReactHtmlParser(props.explanation)\r\n : null}\r\n
\r\n \r\n }\r\n {!props.isUserError && props.telephoneNumber !== undefined &&\r\n props.telephoneNumber !== '' &&\r\n props.telephoneText !== undefined &&\r\n props.telephoneText !== '' &&\r\n props.telephoneHint !== undefined &&\r\n props.telephoneHint !== '' ? (\r\n
    \r\n
  • \r\n \r\n {props.telephoneText}\r\n \r\n {props.telephoneHint}\r\n \r\n \r\n
  • \r\n
\r\n ) : null}\r\n {!props.isUserError && props.email !== undefined &&\r\n props.email !== '' &&\r\n props.emailInfo !== undefined &&\r\n props.emailInfo !== '' ? (\r\n
    \r\n
  • \r\n \r\n {props.email}\r\n \r\n {props.emailInfo}\r\n \r\n \r\n
  • \r\n
\r\n ) : null}\r\n
\r\n {\r\n if (props.container) {\r\n props.container.setState({\r\n isShowPostDataError: false,\r\n isShowTooBigDataError : false,\r\n isUserError: false\r\n });\r\n }\r\n if (props.setFormValues) {\r\n props.setFormValues('formGetApiError', false);\r\n }\r\n }}\r\n className=\"form__popup-buttons\"\r\n >\r\n {props.stayOnPage === true ? \r\n {props.okButtonText} :\r\n \r\n {props.okButtonText}\r\n \r\n }\r\n \r\n
;\r\n};\r\n\r\n","import * as React from \"react\";\r\nimport Modal from \"react-bootstrap/Modal\";\r\nimport ReactHtmlParser from \"react-html-parser\";\r\n\r\ninterface onSubmitFunction {\r\n (event: React.MouseEvent, reactRouteOnSuccess?): void;\r\n}\r\n\r\nexport interface PopupOkProps {\r\n message: string;\r\n okButtonText: string;\r\n onPopupOK: onSubmitFunction;\r\n withIcon?: string;\r\n description?: string;\r\n okButtonCssContainerName?: string;\r\n btnCssClass?: string;\r\n hideModal: boolean; // 'hide' instead of 'show' to be compatible with the current implementation within forms and other components\r\n}\r\n\r\nexport const PopupOk = (props: PopupOkProps) => {\r\n function handleClose() {\r\n props.hideModal = true;\r\n }\r\n\r\n return (\r\n {\r\n handleClose();\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {ReactHtmlParser(props.message)}\r\n
\r\n {props.description && (\r\n
\r\n {ReactHtmlParser(props.description)}\r\n
\r\n )}\r\n
\r\n \r\n props.onPopupOK(e)}\r\n className={\r\n \"btn \" + (props.btnCssClass ? props.btnCssClass : \"btn-success\")\r\n }\r\n >\r\n {props.okButtonText}\r\n \r\n \r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { useEffect } from \"react\";\r\nimport ReactHtmlParser from 'react-html-parser';\r\n\r\nexport interface Step {\r\n title: string;\r\n formName: string;\r\n}\r\n\r\nexport interface StepsProps {\r\n steps: Step[];\r\n activeStepFormName : string;\r\n extraSteps: Step[];\r\n cssClass? : string;\r\n}\r\n\r\nexport const Steps = (props: StepsProps) => {\r\n let stepLength = props.steps.length + props.extraSteps.length;\r\n let width = Math.floor(100 / stepLength);\r\n let formStepCheckmark = \"form-steps__step--checkmark\";\r\n useEffect(() => {\r\n document.body.classList.add(\"has-step-indicator\");\r\n return () => {\r\n document.body.classList.remove(\"has-step-indicator\");\r\n };\r\n }, [props.steps]);\r\n\r\n // We need to check if there are extraSteps, as they are used in counting\r\n // Also we need to add 1, because arrays start at 0, and the first step is 1.\r\n let addToIndex = 1 + props.extraSteps.length;\r\n for (let i = 0; i < props.steps.length; i++) {\r\n if(props.steps[i].formName === props.activeStepFormName) {\r\n width = Math.floor(100 / stepLength * (i + addToIndex));\r\n }\r\n }\r\n\r\n\r\n return <>\r\n
\r\n
    \r\n {props.extraSteps.map((step : Step, index) =>
  1. \r\n {ReactHtmlParser(step.title)}\r\n
  2. \r\n )\r\n }\r\n {props.steps.map((step : Step, index) => {\r\n if (step.formName === props.activeStepFormName) {\r\n formStepCheckmark = \"\";\r\n }\r\n return
  3. \r\n {ReactHtmlParser(step.title)}\r\n
  4. ;\r\n })\r\n }\r\n
\r\n
\r\n Stap\r\n {props.steps.map((step : Step, index) => {\r\n if (step.formName === props.activeStepFormName) {\r\n return (\r\n \r\n {index + addToIndex}\r\n \r\n )\r\n }})\r\n }\r\n  / \r\n {stepLength}\r\n
\r\n
\r\n
\r\n ;\r\n};"],"names":["render","popupText","title","errorMessageTitle","message","errorMessageDescription","this","props","forms","explanation","telephoneHint","errorMessagePhoneNumberInfo","telephoneNumber","errorMessagePhoneNumber","replace","telephoneText","okButtonText","errorMessageButtonText","linkUrl","container","undefined","setFormValues","stayOnPage","PopupContainer","state","dispatch","formName","values","ContainedPopupContainer","GetLidmaatschapData","memberGuid","Promise","Get","path","cache","Map","cacheDuration","api","headers","pathString","cached","get","now","Date","expiry","data","response","set","console","error","Post","post","delete","Put","put","Delete","clearCache","clear","useState","lidmaatschap","setlidmaatschap","prevContributionBody","setPrevContributionBody","contribution","setContribution","showSubscriptionCards","setShowSubscriptionCards","lidmaatschapService","LidmaatschapService","fields","length","formLoading","setTimeout","setFormLoading","useEffect","setUseDefaultNavigation","setCustomVisibleConditions","ContributionHelper","getVisibleConditionsIntroductionContribution","setFieldManipulations","getFieldManipulationsIntroductionContribution","initForms","formDefinitions","pageModel","FormDefinition","forEach","field","settings","IsHiddenField","VisibilityControlHelper","isFieldVisible","formData","formErrors","handleNewFormData","customVisibleConditions","ValidationControlHelper","V","validateField","setFormData","touched","value","then","getContribution","className","formDefinition","visibleFields","currentStepIndex","handleChange","handleBlur","formSummaryData","navigateToStep","setHandleFormStepSpecific","monthlyPeriod","toString","discountPrice","toLocaleString","minimumFractionDigits","maximumFractionDigits","price","discountProcentage","type","onClick","queryParams","queryString","Object","keys","key","formatFormDataForSubmit","URLSearchParams","url","FormThankYou","FormThankYouPage","window","location","href","dangerouslySetInnerHTML","__html","contributionBlock","filter","componentidentifier","find","MembershipAdvantages","ADD_ATTR","getContributionAdvantages","contentData","setContentData","introText","summaryIntro","beforeFormRef","current","createPortal","isNullOrEmpty","ref","formFieldsRef","sidebarRef","windowWidth","document","body","style","paddingBottom","ContributionAmount","FormLogicHelper","getQueryParams","prev","enabled","focus","loading","sections","rows","fieldName","visible","labelOverride","dataOverride","SummaryHelper","GetOptionLabelFromFieldByKeySummary","f","format","DateParser","parse","getAdresSummary","stepsContainerRef","Steps","cssClass","steps","getFormSteps","extraSteps","activeStepFormName","FormNavigationBar","useRef","form","name","GetComponentTypedValue","String","trim","toLowerCase","JSON","FormControlLabelAndPopover","properties","fielddescription","FormControlLabel","FormControlPopover","FormControlSpinner","htmlFor","fieldcaption","explanationtext","isOpen","setIsOpen","onBlur","ValidationErrorsMessages","keyGuid","errors","renderedErrors","map","index","cleanHtmlString","tempElement","createElement","innerHTML","plainText","innerText","textContent","ValidationCheckMark","required","hasErrors","formDataEntry","hasFocus","getCurrentCulture","currentCulture","culture","currentCultureCode","cultureCode","substr","indexOf","module","cultureImport","CalendarControl","dataDate","setDataDate","date","setDate","input","setInput","isFocused","setIsFocused","locale","setLocale","dateFormat","CultureHelper","isValid","setOpen","parsedDate","isValidDateString","handleDateChange","target","dateString","regex","regexString","RegExp","createDateRegex","test","fieldcssclass","selected","onChangeRaw","event","str","replacement","diffIndex","str1","str2","i","Math","max","findDifferenceIndex","slice","formattedValue","formatParts","split","separators","match","formattedDate","currentPosition","part","partLength","partValue","formatPartialDateString","onChange","maxDate","toDate","onFocus","Array","from","classList","findIndex","element","includes","maxMonth","showYearDropdown","showMonthDropdown","autoComplete","isClearable","adjustDateOnChange","scrollableYearDropdown","yearDropdownItemNumber","dropdownMode","SelectBoxControl","selectedValue","setSelectedValue","options","Options","option","label","id","onSelect","RadioButtonsControl","inputcontrolstyle","checked","Autocomplete","TextBoxControl","disabled","DropDownListControl","selectRef","handleDropDownChange","selectedOption","findClosestOptionForInput","foundOptions","foundOption","classNamePrefix","inputValue","onInputChange","newInputValue","onKeyDown","preventDefault","blur","defaultValue","placeholder","noOptionsMessage","InternationalPhoneControl","EmailinputControl","validationerrormessage","HeadingLabelControl","tag","ConsentAgreement","isChecked","setIsChecked","e","tagName","stopPropagation","SummaryRow","formFields","dataEntry","FormSummary","section","sectionIndex","headerClass","contentClass","row","rowIndex","CitySearcherControl","loadOptions","fetch","origin","res","json","getOptionLabel","getOptionValue","loadingMessage","CompanySearcherControl","city","Bedrijfsnaam","isNew","setValue","returnOptionsWithDefault","text","isDisabled","action","components","Option","innerRef","innerProps","Straat","AddressLine1","AddressLine2","PostalCode","LabelControl","TipBlockControl","Tip","Layout","Icon","CheckBoxControl","handleCheckboxChange","valueIsWhatBoolean","ButtonControl","Href","RenderStep","step","hasRequiredFields","identifier","Boolean","some","renderedFields","fieldRef","handleChangeFunction","getCustomHandleChange","PicklistMode","PicklistTemplate","endsWith","GetComponent","html","ValidationErrorsHtml","RenderField","defaultHandleChange","AdresZoeker","handleAdresZoekerChange","CompanySearcher","handleCompanySearchChange","handleCompanyCityChange","onlyDigitsPattern","partialZipCodePattern","fullZipCodePattern","fieldNames","setAdresZoeker","getStreetAndCity","zipCode","houseNumber","houseNumberExt","place","street","Error","formDataTemp","assign","prefix","getPrefixFromFieldName","country","toUpperCase","adresInputsValid","delayAdresZoeker","clearTimeout","prevFormData","initFeatureField","countryField","countryValue","defaultvalue","companyDetails","isnew","isSameNewCompany","BedrijfsGuid","join","content","code","workSituation","benefitType","incomeType","studyType","workType","birthday","toISOString","stringify","calculateContribution","resolve","isVisible","newFields","dateIsValid","thisYearBirthday","getFullYear","getMonth","getDate","twoMonthsFromNow","setMonth","setFullYear","push","searchParams","search","params","scrollToInvalidField","invalidElement","querySelector","parentElement","scrollIntoView","behavior","block","scrollToTop","scrollTo","top","left","isDefaultValueFromApi","dateTimeMinValue","setUTCFullYear","getTime","zipcode","housenumber","housenumberAddition","address","concat","getFeatureForField","inputControlStyle","createFeatureInstance","featureMap","getErrorMessageWithReplacementFields","errorMessage","rule","replacementFields","MinimumLength","MaximumLength","StringHelpers","replacePropertiesInString","isRequired","force","FormControlMapping","validateDataByRule","formFieldRequiredFieldErrorMessage","validateDataByControlName","controlname","featureErrors","validateFeatureField","validationObject","validationrulesdata","isArray","ValidationRuleConfiguration","result","item","Identifier","ValidationRule","ErrorMessage","Html","controlName","ruleName","RegularExpression","parseInt","MinYearsValue","MaxYearsValue","stringIsIban","minYear","maxYear","startDate","diff","diffDuration","years","iban","numericIban","char","charCodeAt","BigInt","feature","FeatureFactory","evaluateExpression","expression","helpers","parsedExpression","hasOwnProperty","isNaN","helperNames","helperValues","Function","evaluateAnotherBoolField","condition","dependeeField","DependeeFieldGuid","dependeeEntry","ExpectedValue","evaluateAnotherStringField","ComparisonType","CompareToValue","isOfAge","birthDate","age","ageThresholdDate","getHours","getMinutes","getSeconds","getMilliseconds","visibilityconditiondata","VisibilityConditionConfiguration","VisibilityCondition","Expression","WrappedComponent","forwardRef","setLoading","formSaved","setFormSaved","onError","setOnError","useDefaultNavigation","reactId","setPageModel","initialFormData","setInitialFormData","setFormErrors","setVisibleFields","setCurrentStepIndex","handleNextFormStep","setHandleNextFormStep","handlePrevFormStep","setHandlePrevFormStep","handleFormStepSpecific","handleFormSubmit","setHandleFormSubmit","setFormDefinition","setFields","innerWidth","setWindowWidth","showOkPopup","setShowOkPopup","wordLidBroncode","fieldManipulations","doAfterSaveActions","setDoAfterSaveActions","setErrorMessagePropertes","updateVisibleFields","vField","nextStepIndex","min","bodyFormData","FormData","entry","append","getCurrentRole","status","handleFormAfterSave","successUrl","createCookie","decodeURIComponent","afterSave","redirectUrl","userInfoAutoFill","dataKeys","indexOfField","formField","initialData","preloadQueryParams","log","addEventListener","handleResize","removeEventListener","handleNextStep","handlePrevStep","handleSubmit","stepIndex","forceValidation","updatedVisibleFields","stepField","addErrorsToFormErrors","prevFormErrors","useImperativeHandle","formGetApiError","onPopupOK","onPopupOkClick","displayText","reload","withIcon","onSuccessPopupMessage","description","onSuccessPopupDescription","hideModal","sectionTitle","firstFormFieldGroup","PopupError","isUserError","centered","show","onHide","Header","Title","Body","email","emailInfo","Footer","setState","isShowPostDataError","isShowTooBigDataError","to","PopupOk","okButtonCssContainerName","btnCssClass","stepLength","width","floor","formStepCheckmark","add","remove","addToIndex"],"sourceRoot":""}