UNPKG

@open-formulieren/formio-builder

Version:

An opinionated Formio webform builder for Open Forms

79 lines (78 loc) 5.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const jsx_runtime_1 = require("react/jsx-runtime"); const formik_1 = require("formik"); const react_intl_1 = require("react-intl"); const builder_1 = require("../../components/builder"); const messages_1 = require("../../components/builder/messages"); const formio_1 = require("../../components/formio"); const errors_1 = require("../../utils/errors"); /** * Form to configure a Formio 'email' type component. */ const EditForm = () => { const intl = (0, react_intl_1.useIntl)(); const [isKeyManuallySetRef, generatedKey] = (0, builder_1.useDeriveComponentKey)(); const { values } = (0, formik_1.useFormikContext)(); const { hasAnyError } = (0, errors_1.useErrorChecker)(); builder_1.Validate.useManageValidatorsTranslations(['required']); return ((0, jsx_runtime_1.jsxs)(formio_1.Tabs, { children: [(0, jsx_runtime_1.jsxs)(formio_1.TabList, { children: [(0, jsx_runtime_1.jsx)(builder_1.BuilderTabs.Basic, { hasErrors: hasAnyError('label', 'key', 'description', 'tooltip', 'showInSummary', 'showInEmail', 'showInPDF', 'multiple', 'hidden', 'clearOnHide', 'isSensitiveData', 'defaultValue', 'autocomplete') }), (0, jsx_runtime_1.jsx)(builder_1.BuilderTabs.Advanced, { hasErrors: hasAnyError('conditional') }), (0, jsx_runtime_1.jsx)(builder_1.BuilderTabs.Validation, { hasErrors: hasAnyError('validate') }), (0, jsx_runtime_1.jsx)(builder_1.BuilderTabs.Registration, { hasErrors: hasAnyError('registration') }), (0, jsx_runtime_1.jsx)(builder_1.BuilderTabs.Translations, { hasErrors: hasAnyError('openForms.translations') })] }), (0, jsx_runtime_1.jsxs)(formio_1.TabPanel, { children: [(0, jsx_runtime_1.jsx)(builder_1.Label, {}), (0, jsx_runtime_1.jsx)(builder_1.Key, { isManuallySetRef: isKeyManuallySetRef, generatedValue: generatedKey }), (0, jsx_runtime_1.jsx)(builder_1.Description, {}), (0, jsx_runtime_1.jsx)(builder_1.Tooltip, {}), (0, jsx_runtime_1.jsx)(builder_1.PresentationConfig, {}), (0, jsx_runtime_1.jsx)(builder_1.Multiple, {}), (0, jsx_runtime_1.jsx)(builder_1.Hidden, {}), (0, jsx_runtime_1.jsx)(builder_1.ClearOnHide, {}), (0, jsx_runtime_1.jsx)(builder_1.IsSensitiveData, {}), (0, jsx_runtime_1.jsx)(DefaultValue, { multiple: !!values.multiple }), (0, jsx_runtime_1.jsx)(builder_1.AutoComplete, {}), (0, jsx_runtime_1.jsx)(IsConfirmationRecipient, {})] }), (0, jsx_runtime_1.jsx)(formio_1.TabPanel, { children: (0, jsx_runtime_1.jsx)(builder_1.SimpleConditional, {}) }), (0, jsx_runtime_1.jsxs)(formio_1.TabPanel, { children: [(0, jsx_runtime_1.jsx)(builder_1.Validate.Required, {}), (0, jsx_runtime_1.jsx)(RequireVerification, {}), (0, jsx_runtime_1.jsx)(builder_1.Validate.ValidatorPluginSelect, {}), (0, jsx_runtime_1.jsx)(builder_1.Validate.ValidationErrorTranslations, {})] }), (0, jsx_runtime_1.jsx)(formio_1.TabPanel, { children: (0, jsx_runtime_1.jsx)(builder_1.Registration.RegistrationAttributeSelect, {}) }), (0, jsx_runtime_1.jsx)(formio_1.TabPanel, { children: (0, jsx_runtime_1.jsx)(builder_1.Translations.ComponentTranslations, { propertyLabels: { label: intl.formatMessage(messages_1.LABELS.label), description: intl.formatMessage(messages_1.LABELS.description), tooltip: intl.formatMessage(messages_1.LABELS.tooltip), } }) })] })); }; EditForm.defaultValues = { // basic tab label: '', key: '', description: '', showInSummary: true, showInEmail: false, showInPDF: true, multiple: false, hidden: false, clearOnHide: true, isSensitiveData: true, defaultValue: '', autocomplete: 'email', confirmationRecipient: false, // Advanced tab conditional: { show: undefined, when: '', eq: '', }, // Validation tab validate: { required: false, plugins: [], }, translatedErrors: {}, registration: { attribute: '', }, // openForms extensions openForms: { translations: {}, requireVerification: false, }, // fixed but not editable validateOn: 'blur', }; const DefaultValue = ({ multiple }) => { const intl = (0, react_intl_1.useIntl)(); const tooltip = intl.formatMessage({ id: "FffJxu", defaultMessage: [{ type: 0, value: "This will be the initial value for this field before user interaction." }] }); return ((0, jsx_runtime_1.jsx)(formio_1.TextField, { name: "defaultValue", type: "email", label: intl.formatMessage(messages_1.LABELS.defaultValue), tooltip: tooltip, multiple: multiple })); }; const IsConfirmationRecipient = () => { const intl = (0, react_intl_1.useIntl)(); const tooltip = intl.formatMessage({ id: "ewzHfR", defaultMessage: [{ type: 0, value: "Email-address in this field will receive the confirmation email." }] }); return ((0, jsx_runtime_1.jsx)(formio_1.Checkbox, { name: "confirmationRecipient", label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: '0OP7ho', defaultMessage: [{ type: 0, value: "Receives confirmation email" }] }), tooltip: tooltip })); }; const RequireVerification = () => { const intl = (0, react_intl_1.useIntl)(); const tooltip = intl.formatMessage({ id: "205QX5", defaultMessage: [{ type: 0, value: "When email address verification is enabled, the user must verify their email address before they can submit the form. This proves the email address exists and that they have access to the account." }] }); return ((0, jsx_runtime_1.jsx)(formio_1.Checkbox, { name: "openForms.requireVerification", label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: 'Wb+QGm', defaultMessage: [{ type: 0, value: "Require verification" }] }), tooltip: tooltip })); }; exports.default = EditForm;