@bigbinary/neeto-form-frontend 3.10.11 → 3.10.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/app/javascript/src/translations/en.json +3 -1
  2. package/dist/BuildForm.js +62 -33
  3. package/dist/BuildForm.js.map +1 -1
  4. package/dist/ExternalForm.js +2 -2
  5. package/dist/UrlBuilder.js +7 -4
  6. package/dist/UrlBuilder.js.map +1 -1
  7. package/dist/{buildForm-Zw1xpuBS.js → buildForm-D5-1L1Je.js} +3 -2
  8. package/dist/buildForm-D5-1L1Je.js.map +1 -0
  9. package/dist/{buildForm-12iKiorQ.js → buildForm-ZqO8kJoo.js} +3 -2
  10. package/dist/buildForm-ZqO8kJoo.js.map +1 -0
  11. package/dist/cjs/BuildForm.js +62 -33
  12. package/dist/cjs/BuildForm.js.map +1 -1
  13. package/dist/cjs/ExternalForm.js +2 -2
  14. package/dist/cjs/UrlBuilder.js +6 -3
  15. package/dist/cjs/UrlBuilder.js.map +1 -1
  16. package/dist/cjs/hooks.js +1 -1
  17. package/dist/cjs/index.js +5 -5
  18. package/dist/{constants-BL-0uUwk.js → constants-DwXbiMSR.js} +6 -3
  19. package/dist/constants-DwXbiMSR.js.map +1 -0
  20. package/dist/{constants-BUAlqO79.js → constants-awsxzvM-.js} +6 -2
  21. package/dist/constants-awsxzvM-.js.map +1 -0
  22. package/dist/hooks.js +1 -1
  23. package/dist/index.js +5 -5
  24. package/dist/{utils-Bo2ljfJm.js → utils-BfdHlZ_G.js} +52 -13
  25. package/dist/utils-BfdHlZ_G.js.map +1 -0
  26. package/dist/{utils-D6IWgDHF.js → utils-BrgDSuZe.js} +52 -13
  27. package/dist/utils-BrgDSuZe.js.map +1 -0
  28. package/package.json +1 -1
  29. package/types.d.ts +1 -0
  30. package/dist/buildForm-12iKiorQ.js.map +0 -1
  31. package/dist/buildForm-Zw1xpuBS.js.map +0 -1
  32. package/dist/constants-BL-0uUwk.js.map +0 -1
  33. package/dist/constants-BUAlqO79.js.map +0 -1
  34. package/dist/utils-Bo2ljfJm.js.map +0 -1
  35. package/dist/utils-D6IWgDHF.js.map +0 -1
@@ -26,7 +26,7 @@ import { a as isBlank, g as getComponentDisplayName, p as parseServerError } fro
26
26
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
27
27
  import Check from '@bigbinary/neeto-icons/Check';
28
28
  import { jsx, jsxs } from 'react/jsx-runtime';
29
- import { c as clientI18nInstance, d as getWithExpiry, g as generateInitValues, F as FormikWrap, a as getFieldComponent, b as buildAutoCompleteAttribute, r as renderButtonsInOrder, m as mergeRefs, e as generateFormResponse, f as clearLocalStorageValues } from './utils-Bo2ljfJm.js';
29
+ import { c as clientI18nInstance, d as getWithExpiry, g as generateInitValues, F as FormikWrap, a as getFieldComponent, b as buildAutoCompleteAttribute, r as renderButtonsInOrder, m as mergeRefs, e as generateFormResponse, f as clearLocalStorageValues } from './utils-BfdHlZ_G.js';
30
30
  import { withT } from '@bigbinary/neeto-commons-frontend/react-utils';
31
31
  import '@babel/runtime/helpers/toConsumableArray';
32
32
  import '@bigbinary/neeto-commons-frontend/constants';
@@ -35,7 +35,7 @@ import '@babel/runtime/helpers/typeof';
35
35
  import '@bigbinary/neeto-editor/utils';
36
36
  import 'libphonenumber-js';
37
37
  import '@bigbinary/neeto-editor/EditorContent';
38
- import './constants-BL-0uUwk.js';
38
+ import './constants-DwXbiMSR.js';
39
39
  import './constants-DlRX5mcQ.js';
40
40
  import 'dompurify';
41
41
  import '@bigbinary/neeto-icons/Plus';
@@ -8,12 +8,12 @@ import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
8
8
  import Typography from '@bigbinary/neetoui/Typography';
9
9
  import Button from '@bigbinary/neetoui/Button';
10
10
  import NoData from '@bigbinary/neetoui/NoData';
11
- import { map, assoc, filter, pluck, isEmpty } from 'ramda';
11
+ import { map, mergeLeft, filter, pluck, isEmpty } from 'ramda';
12
12
  import { useTranslation } from 'react-i18next';
13
- import { g as generateInitValues, F as FormikWrap, a as getFieldComponent, b as buildAutoCompleteAttribute, m as mergeRefs } from './utils-Bo2ljfJm.js';
13
+ import { g as generateInitValues, F as FormikWrap, a as getFieldComponent, b as buildAutoCompleteAttribute, m as mergeRefs } from './utils-BfdHlZ_G.js';
14
14
  import { a as useForm } from './useFormApi-DtoxIPE7.js';
15
15
  import { parsePhoneNumber } from 'libphonenumber-js';
16
- import { Q as QUESTIONS_WITHOUT_FIELD_CODE } from './constants-BL-0uUwk.js';
16
+ import { Q as QUESTIONS_WITHOUT_FIELD_CODE } from './constants-DwXbiMSR.js';
17
17
  import { Q as QUESTION_KIND } from './constants-DlRX5mcQ.js';
18
18
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
19
19
  import './index-BL5SirYx.js';
@@ -50,7 +50,10 @@ import 'axios';
50
50
  import 'dompurify';
51
51
 
52
52
  var getPreFillableQuestions = function getPreFillableQuestions(questions) {
53
- var modifiedQuestions = map(assoc("isRequired", false), questions);
53
+ var modifiedQuestions = map(mergeLeft({
54
+ isRequired: false,
55
+ isReadOnly: false
56
+ }), questions);
54
57
  return modifiedQuestions.filter(function (question) {
55
58
  return !QUESTIONS_WITHOUT_FIELD_CODE.includes(question.kind);
56
59
  });
@@ -1 +1 @@
1
- {"version":3,"file":"UrlBuilder.js","sources":["../app/javascript/src/components/UrlBuilder/utils.js","../app/javascript/src/components/UrlBuilder/index.jsx"],"sourcesContent":["import { parsePhoneNumber } from \"libphonenumber-js\";\nimport { findById, isPresent } from \"neetocist\";\nimport { assoc, filter, map, pluck } from \"ramda\";\n\nimport { QUESTIONS_WITHOUT_FIELD_CODE } from \"components/BuildForm/constants\";\nimport { QUESTION_KIND } from \"components/ExternalForm/constants\";\n\nexport const getPreFillableQuestions = questions => {\n const modifiedQuestions = map(assoc(\"isRequired\", false), questions);\n\n return modifiedQuestions.filter(\n question => !QUESTIONS_WITHOUT_FIELD_CODE.includes(question.kind)\n );\n};\n\nexport const buildQueryParameters = (responses, questions) => {\n const filteredResponses = filter(isPresent, responses);\n\n const queryParameters = {};\n questions.forEach(question => {\n const { id, kind, fieldCode, optionsAttributes } = question;\n\n if (QUESTIONS_WITHOUT_FIELD_CODE.includes(kind)) return;\n\n const response = filteredResponses[id];\n\n if (!response) return;\n\n switch (kind) {\n case QUESTION_KIND.ADDITIONAL_GUESTS.value: {\n queryParameters[fieldCode] = pluck(\"label\", response).join(\",\");\n\n return;\n }\n case QUESTION_KIND.CHECKBOX.value: {\n const selectedLabels = response\n .map((value, index) => value && optionsAttributes[index]?.label)\n .filter(Boolean);\n\n queryParameters[fieldCode] = isPresent(selectedLabels)\n ? selectedLabels.join(\",\")\n : undefined;\n\n return;\n }\n case QUESTION_KIND.RADIO.value:\n case QUESTION_KIND.DROPDOWN.value: {\n queryParameters[fieldCode] = findById(\n response,\n optionsAttributes\n )?.label;\n\n return;\n }\n case QUESTION_KIND.PHONE.value:\n case QUESTION_KIND.SMS_REMINDER.value: {\n const parsedNumber = parsePhoneNumber(response);\n queryParameters[`${fieldCode}.country`] = parsedNumber.country;\n queryParameters[`${fieldCode}.number`] = parsedNumber.nationalNumber;\n\n return;\n }\n case QUESTION_KIND.STAR_RATING.value: {\n queryParameters[fieldCode] = parseInt(response);\n\n return;\n }\n default: {\n queryParameters[fieldCode] = response;\n\n return;\n }\n }\n });\n\n return queryParameters;\n};\n","import { useRef } from \"react\";\n\nimport classNames from \"classnames\";\nimport { Formik, Form } from \"formik\";\nimport { noop } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\nimport PageLoader from \"neetomolecules/PageLoader\";\nimport { Typography, Button, NoData } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport FormikWrap from \"components/Common/FormikWrap\";\nimport { useForm } from \"hooks/useFormApi\";\n\nimport { buildQueryParameters, getPreFillableQuestions } from \"./utils\";\n\nimport { getFieldComponent } from \"../ExternalForm/Fields/utils\";\nimport {\n generateInitValues,\n mergeRefs,\n buildAutoCompleteAttribute,\n} from \"../ExternalForm/utils\";\n\nconst UrlBuilder = ({\n formId,\n showTitle = true,\n formTitle,\n titleProps,\n onSubmitSuccess,\n submitButtonProps,\n cancelButtonProps,\n resetButtonProps,\n showEmptyState = true,\n className,\n onChange,\n formDomProps,\n editorProps = {},\n customValidator,\n autoCompleteKinds = [],\n}) => {\n const formRef = useRef();\n const formikInnerRef = useRef();\n const editorRef = useRef();\n\n const { t } = useTranslation();\n\n const onSubmit = (values, { setSubmitting }) => {\n onSubmitSuccess?.({\n values,\n queryParameters: buildQueryParameters(values, questions),\n });\n\n setSubmitting(false);\n };\n\n const onReset = (e, handleReset) => {\n editorRef?.current?.editor?.commands?.setContent(\"\");\n handleReset(e);\n formDomProps?.onReset?.(e);\n };\n\n const handleScrollToError = errors => {\n if (!formRef.current) return;\n const errorKeys = Object.keys(errors);\n if (isEmpty(errorKeys)) return;\n for (const formElement of formRef.current) {\n if (errorKeys.includes(formElement.name)) {\n formElement.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n break;\n }\n }\n };\n\n const { data: form = { title: \"\", questions: [] }, isLoading } = useForm({\n formId,\n placeholderData: { isQuestionsLoading: true },\n });\n\n const keyPressRef = useHotkeys(\n \"command+enter\",\n formikInnerRef.current?.handleSubmit || noop,\n { mode: \"scoped\" }\n );\n\n if (isLoading || form.isQuestionsLoading) {\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n <PageLoader />\n </div>\n );\n }\n\n const { title, questions } = form;\n\n const modifiedQuestions = getPreFillableQuestions(questions);\n\n return (\n <>\n {showTitle && (\n <div className=\"py-6 text-center\">\n <Typography\n className=\"neeto-ui-text-gray-800\"\n style=\"h4\"\n weight=\"semibold\"\n {...titleProps}\n >\n {formTitle || title}\n </Typography>\n </div>\n )}\n <Formik\n {...{ onSubmit }}\n enableReinitialize\n initialValues={generateInitValues({ questions: modifiedQuestions })}\n innerRef={formikInnerRef}\n >\n {({ isSubmitting, errors, setFieldError, handleReset }) => (\n <FormikWrap\n {...{ formId }}\n preserveValues={false}\n onError={handleScrollToError}\n onValuesChange={onChange}\n >\n <Form\n noValidate\n ref={mergeRefs(formRef, keyPressRef)}\n className={classNames(\n \"neeto-form-engine-form relative space-y-4\",\n className\n )}\n onChange={event => {\n if (isEmpty(errors)) return;\n setFieldError(event.target.name, \"\");\n }}\n {...formDomProps}\n onReset={e => onReset(e, handleReset)}\n >\n <div className=\"neeto-form-engine-questions-wrapper space-y-4 overflow-auto pr-4\">\n {modifiedQuestions.map(question => {\n const FieldComponent = getFieldComponent(question);\n\n return (\n <FieldComponent\n {...{ editorProps, editorRef, question }}\n customValidator={customValidator?.(question)}\n key={question.id ?? question.nodeId}\n autoComplete={buildAutoCompleteAttribute(\n question.kind,\n autoCompleteKinds,\n formDomProps\n )}\n />\n );\n })}\n {showEmptyState && isEmpty(modifiedQuestions) && (\n <div className=\"flex flex-col items-center justify-center gap-y-4 py-8\">\n <NoData\n className=\"min-h-80\"\n title={t(\"neetoForm.questions.common.noData\")}\n />\n </div>\n )}\n </div>\n {!isEmpty(modifiedQuestions) && (\n <div className=\"mt-8 flex items-center justify-start gap-x-2\">\n <Button\n disabled={isSubmitting}\n label={t(\"neetoForm.common.generateLink\")}\n loading={isSubmitting}\n type=\"submit\"\n {...submitButtonProps}\n />\n {resetButtonProps && (\n <Button\n label={t(\"neetoForm.common.reset\")}\n style=\"secondary\"\n type=\"reset\"\n {...resetButtonProps}\n />\n )}\n {cancelButtonProps && (\n <Button\n label={t(\"neetoForm.common.cancel\")}\n {...cancelButtonProps}\n />\n )}\n </div>\n )}\n </Form>\n </FormikWrap>\n )}\n </Formik>\n </>\n );\n};\n\nUrlBuilder.propTypes = {\n formId: PropTypes.string,\n onSubmitSuccess: PropTypes.func,\n showTitle: PropTypes.bool,\n submitButtonProps: PropTypes.object,\n cancelButtonProps: PropTypes.object,\n showSuccessToastr: PropTypes.bool,\n showEmptyState: PropTypes.bool,\n className: PropTypes.string,\n};\n\nexport default UrlBuilder;\n"],"names":["getPreFillableQuestions","questions","modifiedQuestions","map","assoc","filter","question","QUESTIONS_WITHOUT_FIELD_CODE","includes","kind","buildQueryParameters","responses","filteredResponses","isPresent","queryParameters","forEach","id","fieldCode","optionsAttributes","response","QUESTION_KIND","ADDITIONAL_GUESTS","value","pluck","join","CHECKBOX","selectedLabels","index","_optionsAttributes$in","label","Boolean","undefined","RADIO","DROPDOWN","_findById","findById","PHONE","SMS_REMINDER","parsedNumber","parsePhoneNumber","concat","country","nationalNumber","STAR_RATING","parseInt","UrlBuilder","_ref","_formikInnerRef$curre","formId","_ref$showTitle","showTitle","formTitle","titleProps","onSubmitSuccess","submitButtonProps","cancelButtonProps","resetButtonProps","_ref$showEmptyState","showEmptyState","className","onChange","formDomProps","_ref$editorProps","editorProps","customValidator","_ref$autoCompleteKind","autoCompleteKinds","formRef","useRef","formikInnerRef","editorRef","_useTranslation","useTranslation","t","onSubmit","values","_ref2","setSubmitting","onReset","e","handleReset","_editorRef$current","_formDomProps$onReset","current","editor","commands","setContent","call","handleScrollToError","errors","errorKeys","Object","keys","isEmpty","_iterator","_createForOfIteratorHelper","_step","s","n","done","formElement","name","scrollIntoView","behavior","block","err","f","_useForm","useForm","placeholderData","isQuestionsLoading","_useForm$data","data","form","title","isLoading","keyPressRef","useHotkeys","handleSubmit","noop","mode","_jsx","children","PageLoader","_jsxs","_Fragment","Typography","_objectSpread","style","weight","Formik","enableReinitialize","initialValues","generateInitValues","innerRef","_ref3","isSubmitting","setFieldError","FormikWrap","preserveValues","onError","onValuesChange","Form","noValidate","ref","mergeRefs","classNames","event","target","_question$id","FieldComponent","getFieldComponent","_createElement","key","nodeId","autoComplete","buildAutoCompleteAttribute","NoData","Button","disabled","loading","type"],"mappings":"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"}
1
+ {"version":3,"file":"UrlBuilder.js","sources":["../app/javascript/src/components/UrlBuilder/utils.js","../app/javascript/src/components/UrlBuilder/index.jsx"],"sourcesContent":["import { parsePhoneNumber } from \"libphonenumber-js\";\nimport { findById, isPresent } from \"neetocist\";\nimport { filter, map, mergeLeft, pluck } from \"ramda\";\n\nimport { QUESTIONS_WITHOUT_FIELD_CODE } from \"components/BuildForm/constants\";\nimport { QUESTION_KIND } from \"components/ExternalForm/constants\";\n\nexport const getPreFillableQuestions = questions => {\n const modifiedQuestions = map(\n mergeLeft({ isRequired: false, isReadOnly: false }),\n questions\n );\n\n return modifiedQuestions.filter(\n question => !QUESTIONS_WITHOUT_FIELD_CODE.includes(question.kind)\n );\n};\n\nexport const buildQueryParameters = (responses, questions) => {\n const filteredResponses = filter(isPresent, responses);\n\n const queryParameters = {};\n questions.forEach(question => {\n const { id, kind, fieldCode, optionsAttributes } = question;\n\n if (QUESTIONS_WITHOUT_FIELD_CODE.includes(kind)) return;\n\n const response = filteredResponses[id];\n\n if (!response) return;\n\n switch (kind) {\n case QUESTION_KIND.ADDITIONAL_GUESTS.value: {\n queryParameters[fieldCode] = pluck(\"label\", response).join(\",\");\n\n return;\n }\n case QUESTION_KIND.CHECKBOX.value: {\n const selectedLabels = response\n .map((value, index) => value && optionsAttributes[index]?.label)\n .filter(Boolean);\n\n queryParameters[fieldCode] = isPresent(selectedLabels)\n ? selectedLabels.join(\",\")\n : undefined;\n\n return;\n }\n case QUESTION_KIND.RADIO.value:\n case QUESTION_KIND.DROPDOWN.value: {\n queryParameters[fieldCode] = findById(\n response,\n optionsAttributes\n )?.label;\n\n return;\n }\n case QUESTION_KIND.PHONE.value:\n case QUESTION_KIND.SMS_REMINDER.value: {\n const parsedNumber = parsePhoneNumber(response);\n queryParameters[`${fieldCode}.country`] = parsedNumber.country;\n queryParameters[`${fieldCode}.number`] = parsedNumber.nationalNumber;\n\n return;\n }\n case QUESTION_KIND.STAR_RATING.value: {\n queryParameters[fieldCode] = parseInt(response);\n\n return;\n }\n default: {\n queryParameters[fieldCode] = response;\n\n return;\n }\n }\n });\n\n return queryParameters;\n};\n","import { useRef } from \"react\";\n\nimport classNames from \"classnames\";\nimport { Formik, Form } from \"formik\";\nimport { noop } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\nimport PageLoader from \"neetomolecules/PageLoader\";\nimport { Typography, Button, NoData } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport FormikWrap from \"components/Common/FormikWrap\";\nimport { useForm } from \"hooks/useFormApi\";\n\nimport { buildQueryParameters, getPreFillableQuestions } from \"./utils\";\n\nimport { getFieldComponent } from \"../ExternalForm/Fields/utils\";\nimport {\n generateInitValues,\n mergeRefs,\n buildAutoCompleteAttribute,\n} from \"../ExternalForm/utils\";\n\nconst UrlBuilder = ({\n formId,\n showTitle = true,\n formTitle,\n titleProps,\n onSubmitSuccess,\n submitButtonProps,\n cancelButtonProps,\n resetButtonProps,\n showEmptyState = true,\n className,\n onChange,\n formDomProps,\n editorProps = {},\n customValidator,\n autoCompleteKinds = [],\n}) => {\n const formRef = useRef();\n const formikInnerRef = useRef();\n const editorRef = useRef();\n\n const { t } = useTranslation();\n\n const onSubmit = (values, { setSubmitting }) => {\n onSubmitSuccess?.({\n values,\n queryParameters: buildQueryParameters(values, questions),\n });\n\n setSubmitting(false);\n };\n\n const onReset = (e, handleReset) => {\n editorRef?.current?.editor?.commands?.setContent(\"\");\n handleReset(e);\n formDomProps?.onReset?.(e);\n };\n\n const handleScrollToError = errors => {\n if (!formRef.current) return;\n const errorKeys = Object.keys(errors);\n if (isEmpty(errorKeys)) return;\n for (const formElement of formRef.current) {\n if (errorKeys.includes(formElement.name)) {\n formElement.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n break;\n }\n }\n };\n\n const { data: form = { title: \"\", questions: [] }, isLoading } = useForm({\n formId,\n placeholderData: { isQuestionsLoading: true },\n });\n\n const keyPressRef = useHotkeys(\n \"command+enter\",\n formikInnerRef.current?.handleSubmit || noop,\n { mode: \"scoped\" }\n );\n\n if (isLoading || form.isQuestionsLoading) {\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n <PageLoader />\n </div>\n );\n }\n\n const { title, questions } = form;\n\n const modifiedQuestions = getPreFillableQuestions(questions);\n\n return (\n <>\n {showTitle && (\n <div className=\"py-6 text-center\">\n <Typography\n className=\"neeto-ui-text-gray-800\"\n style=\"h4\"\n weight=\"semibold\"\n {...titleProps}\n >\n {formTitle || title}\n </Typography>\n </div>\n )}\n <Formik\n {...{ onSubmit }}\n enableReinitialize\n initialValues={generateInitValues({ questions: modifiedQuestions })}\n innerRef={formikInnerRef}\n >\n {({ isSubmitting, errors, setFieldError, handleReset }) => (\n <FormikWrap\n {...{ formId }}\n preserveValues={false}\n onError={handleScrollToError}\n onValuesChange={onChange}\n >\n <Form\n noValidate\n ref={mergeRefs(formRef, keyPressRef)}\n className={classNames(\n \"neeto-form-engine-form relative space-y-4\",\n className\n )}\n onChange={event => {\n if (isEmpty(errors)) return;\n setFieldError(event.target.name, \"\");\n }}\n {...formDomProps}\n onReset={e => onReset(e, handleReset)}\n >\n <div className=\"neeto-form-engine-questions-wrapper space-y-4 overflow-auto pr-4\">\n {modifiedQuestions.map(question => {\n const FieldComponent = getFieldComponent(question);\n\n return (\n <FieldComponent\n {...{ editorProps, editorRef, question }}\n customValidator={customValidator?.(question)}\n key={question.id ?? question.nodeId}\n autoComplete={buildAutoCompleteAttribute(\n question.kind,\n autoCompleteKinds,\n formDomProps\n )}\n />\n );\n })}\n {showEmptyState && isEmpty(modifiedQuestions) && (\n <div className=\"flex flex-col items-center justify-center gap-y-4 py-8\">\n <NoData\n className=\"min-h-80\"\n title={t(\"neetoForm.questions.common.noData\")}\n />\n </div>\n )}\n </div>\n {!isEmpty(modifiedQuestions) && (\n <div className=\"mt-8 flex items-center justify-start gap-x-2\">\n <Button\n disabled={isSubmitting}\n label={t(\"neetoForm.common.generateLink\")}\n loading={isSubmitting}\n type=\"submit\"\n {...submitButtonProps}\n />\n {resetButtonProps && (\n <Button\n label={t(\"neetoForm.common.reset\")}\n style=\"secondary\"\n type=\"reset\"\n {...resetButtonProps}\n />\n )}\n {cancelButtonProps && (\n <Button\n label={t(\"neetoForm.common.cancel\")}\n {...cancelButtonProps}\n />\n )}\n </div>\n )}\n </Form>\n </FormikWrap>\n )}\n </Formik>\n </>\n );\n};\n\nUrlBuilder.propTypes = {\n formId: PropTypes.string,\n onSubmitSuccess: PropTypes.func,\n showTitle: PropTypes.bool,\n submitButtonProps: PropTypes.object,\n cancelButtonProps: PropTypes.object,\n showSuccessToastr: PropTypes.bool,\n showEmptyState: PropTypes.bool,\n className: PropTypes.string,\n};\n\nexport default UrlBuilder;\n"],"names":["getPreFillableQuestions","questions","modifiedQuestions","map","mergeLeft","isRequired","isReadOnly","filter","question","QUESTIONS_WITHOUT_FIELD_CODE","includes","kind","buildQueryParameters","responses","filteredResponses","isPresent","queryParameters","forEach","id","fieldCode","optionsAttributes","response","QUESTION_KIND","ADDITIONAL_GUESTS","value","pluck","join","CHECKBOX","selectedLabels","index","_optionsAttributes$in","label","Boolean","undefined","RADIO","DROPDOWN","_findById","findById","PHONE","SMS_REMINDER","parsedNumber","parsePhoneNumber","concat","country","nationalNumber","STAR_RATING","parseInt","UrlBuilder","_ref","_formikInnerRef$curre","formId","_ref$showTitle","showTitle","formTitle","titleProps","onSubmitSuccess","submitButtonProps","cancelButtonProps","resetButtonProps","_ref$showEmptyState","showEmptyState","className","onChange","formDomProps","_ref$editorProps","editorProps","customValidator","_ref$autoCompleteKind","autoCompleteKinds","formRef","useRef","formikInnerRef","editorRef","_useTranslation","useTranslation","t","onSubmit","values","_ref2","setSubmitting","onReset","e","handleReset","_editorRef$current","_formDomProps$onReset","current","editor","commands","setContent","call","handleScrollToError","errors","errorKeys","Object","keys","isEmpty","_iterator","_createForOfIteratorHelper","_step","s","n","done","formElement","name","scrollIntoView","behavior","block","err","f","_useForm","useForm","placeholderData","isQuestionsLoading","_useForm$data","data","form","title","isLoading","keyPressRef","useHotkeys","handleSubmit","noop","mode","_jsx","children","PageLoader","_jsxs","_Fragment","Typography","_objectSpread","style","weight","Formik","enableReinitialize","initialValues","generateInitValues","innerRef","_ref3","isSubmitting","setFieldError","FormikWrap","preserveValues","onError","onValuesChange","Form","noValidate","ref","mergeRefs","classNames","event","target","_question$id","FieldComponent","getFieldComponent","_createElement","key","nodeId","autoComplete","buildAutoCompleteAttribute","NoData","Button","disabled","loading","type"],"mappings":"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"}
@@ -24,7 +24,8 @@ var useBuildFormStore = create(withImmutableActions(function (set) {
24
24
  helpDocUrls: {},
25
25
  enableDomainBlacklisting: true,
26
26
  enableDomainWhitelisting: true,
27
- isUsingDefaultQuestionKinds: true
27
+ isUsingDefaultQuestionKinds: true,
28
+ showReadOnlySwitch: false
28
29
  },
29
30
  setFormData: function setFormData(arg) {
30
31
  return set(modify("formState", isFunction(arg) ? arg : mergeLeft(arg)));
@@ -36,4 +37,4 @@ var useBuildFormState = function useBuildFormState() {
36
37
  };
37
38
 
38
39
  export { useBuildFormStore as a, useBuildFormState as u };
39
- //# sourceMappingURL=buildForm-Zw1xpuBS.js.map
40
+ //# sourceMappingURL=buildForm-D5-1L1Je.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildForm-D5-1L1Je.js","sources":["../app/javascript/src/stores/buildForm.js"],"sourcesContent":["import i18next from \"i18next\";\nimport { noop } from \"neetocist\";\nimport { withImmutableActions } from \"neetocommons/react-utils\";\nimport { mergeLeft, modify, prop } from \"ramda\";\nimport { create } from \"zustand\";\n\nimport { isFunction } from \"utils\";\n\n/** @type {import(\"neetocommons/react-utils\").ZustandStoreHook} */\nconst useBuildFormStore = create(\n withImmutableActions(set => ({\n formState: {\n values: {},\n dirty: false,\n isSubmitting: false,\n isValid: true,\n errors: [],\n submitForm: noop,\n resetForm: noop,\n selectedLanguage: i18next.resolvedLanguage,\n formId: null,\n enabled: false,\n title: \"\",\n richTextFieldsToReset: [],\n helpDocUrls: {},\n enableDomainBlacklisting: true,\n enableDomainWhitelisting: true,\n isUsingDefaultQuestionKinds: true,\n showReadOnlySwitch: false,\n },\n\n setFormData: arg =>\n set(modify(\"formState\", isFunction(arg) ? arg : mergeLeft(arg))),\n }))\n);\n\nexport const useBuildFormState = () => useBuildFormStore(prop(\"formState\"));\n\nexport default useBuildFormStore;\n"],"names":["useBuildFormStore","create","withImmutableActions","set","formState","values","dirty","isSubmitting","isValid","errors","submitForm","noop","resetForm","selectedLanguage","i18next","resolvedLanguage","formId","enabled","title","richTextFieldsToReset","helpDocUrls","enableDomainBlacklisting","enableDomainWhitelisting","isUsingDefaultQuestionKinds","showReadOnlySwitch","setFormData","arg","modify","isFunction","mergeLeft","useBuildFormState","prop"],"mappings":";;;;;;;AAQA;AACA,IAAMA,iBAAiB,GAAGC,MAAM,CAC9BC,oBAAoB,CAAC,UAAAC,GAAG,EAAA;EAAA,OAAK;AAC3BC,IAAAA,SAAS,EAAE;MACTC,MAAM,EAAE,EAAE;AACVC,MAAAA,KAAK,EAAE,KAAK;AACZC,MAAAA,YAAY,EAAE,KAAK;AACnBC,MAAAA,OAAO,EAAE,IAAI;AACbC,MAAAA,MAAM,EAAE,EAAE;AACVC,MAAAA,UAAU,EAAEC,IAAI;AAChBC,MAAAA,SAAS,EAAED,IAAI;MACfE,gBAAgB,EAAEC,OAAO,CAACC,gBAAgB;AAC1CC,MAAAA,MAAM,EAAE,IAAI;AACZC,MAAAA,OAAO,EAAE,KAAK;AACdC,MAAAA,KAAK,EAAE,EAAE;AACTC,MAAAA,qBAAqB,EAAE,EAAE;MACzBC,WAAW,EAAE,EAAE;AACfC,MAAAA,wBAAwB,EAAE,IAAI;AAC9BC,MAAAA,wBAAwB,EAAE,IAAI;AAC9BC,MAAAA,2BAA2B,EAAE,IAAI;AACjCC,MAAAA,kBAAkB,EAAE;KACrB;AAEDC,IAAAA,WAAW,EAAE,SAAbA,WAAWA,CAAEC,GAAG,EAAA;AAAA,MAAA,OACdvB,GAAG,CAACwB,MAAM,CAAC,WAAW,EAAEC,UAAU,CAACF,GAAG,CAAC,GAAGA,GAAG,GAAGG,SAAS,CAACH,GAAG,CAAC,CAAC,CAAC;AAAA;GACnE;AAAA,CAAC,CACJ;AAEaI,IAAAA,iBAAiB,GAAG,SAApBA,iBAAiBA,GAAA;AAAA,EAAA,OAAS9B,iBAAiB,CAAC+B,IAAI,CAAC,WAAW,CAAC,CAAC;AAAA;;;;"}
@@ -26,7 +26,8 @@ var useBuildFormStore = zustand.create(reactUtils.withImmutableActions(function
26
26
  helpDocUrls: {},
27
27
  enableDomainBlacklisting: true,
28
28
  enableDomainWhitelisting: true,
29
- isUsingDefaultQuestionKinds: true
29
+ isUsingDefaultQuestionKinds: true,
30
+ showReadOnlySwitch: false
30
31
  },
31
32
  setFormData: function setFormData(arg) {
32
33
  return set(ramda.modify("formState", index.isFunction(arg) ? arg : ramda.mergeLeft(arg)));
@@ -39,4 +40,4 @@ var useBuildFormState = function useBuildFormState() {
39
40
 
40
41
  exports.useBuildFormState = useBuildFormState;
41
42
  exports.useBuildFormStore = useBuildFormStore;
42
- //# sourceMappingURL=buildForm-12iKiorQ.js.map
43
+ //# sourceMappingURL=buildForm-ZqO8kJoo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildForm-ZqO8kJoo.js","sources":["../app/javascript/src/stores/buildForm.js"],"sourcesContent":["import i18next from \"i18next\";\nimport { noop } from \"neetocist\";\nimport { withImmutableActions } from \"neetocommons/react-utils\";\nimport { mergeLeft, modify, prop } from \"ramda\";\nimport { create } from \"zustand\";\n\nimport { isFunction } from \"utils\";\n\n/** @type {import(\"neetocommons/react-utils\").ZustandStoreHook} */\nconst useBuildFormStore = create(\n withImmutableActions(set => ({\n formState: {\n values: {},\n dirty: false,\n isSubmitting: false,\n isValid: true,\n errors: [],\n submitForm: noop,\n resetForm: noop,\n selectedLanguage: i18next.resolvedLanguage,\n formId: null,\n enabled: false,\n title: \"\",\n richTextFieldsToReset: [],\n helpDocUrls: {},\n enableDomainBlacklisting: true,\n enableDomainWhitelisting: true,\n isUsingDefaultQuestionKinds: true,\n showReadOnlySwitch: false,\n },\n\n setFormData: arg =>\n set(modify(\"formState\", isFunction(arg) ? arg : mergeLeft(arg))),\n }))\n);\n\nexport const useBuildFormState = () => useBuildFormStore(prop(\"formState\"));\n\nexport default useBuildFormStore;\n"],"names":["useBuildFormStore","create","withImmutableActions","set","formState","values","dirty","isSubmitting","isValid","errors","submitForm","noop","resetForm","selectedLanguage","i18next","resolvedLanguage","formId","enabled","title","richTextFieldsToReset","helpDocUrls","enableDomainBlacklisting","enableDomainWhitelisting","isUsingDefaultQuestionKinds","showReadOnlySwitch","setFormData","arg","modify","isFunction","mergeLeft","useBuildFormState","prop"],"mappings":";;;;;;;;;AAQA;AACA,IAAMA,iBAAiB,GAAGC,cAAM,CAC9BC,+BAAoB,CAAC,UAAAC,GAAG,EAAA;EAAA,OAAK;AAC3BC,IAAAA,SAAS,EAAE;MACTC,MAAM,EAAE,EAAE;AACVC,MAAAA,KAAK,EAAE,KAAK;AACZC,MAAAA,YAAY,EAAE,KAAK;AACnBC,MAAAA,OAAO,EAAE,IAAI;AACbC,MAAAA,MAAM,EAAE,EAAE;AACVC,MAAAA,UAAU,EAAEC,cAAI;AAChBC,MAAAA,SAAS,EAAED,cAAI;MACfE,gBAAgB,EAAEC,OAAO,CAACC,gBAAgB;AAC1CC,MAAAA,MAAM,EAAE,IAAI;AACZC,MAAAA,OAAO,EAAE,KAAK;AACdC,MAAAA,KAAK,EAAE,EAAE;AACTC,MAAAA,qBAAqB,EAAE,EAAE;MACzBC,WAAW,EAAE,EAAE;AACfC,MAAAA,wBAAwB,EAAE,IAAI;AAC9BC,MAAAA,wBAAwB,EAAE,IAAI;AAC9BC,MAAAA,2BAA2B,EAAE,IAAI;AACjCC,MAAAA,kBAAkB,EAAE;KACrB;AAEDC,IAAAA,WAAW,EAAE,SAAbA,WAAWA,CAAEC,GAAG,EAAA;AAAA,MAAA,OACdvB,GAAG,CAACwB,YAAM,CAAC,WAAW,EAAEC,gBAAU,CAACF,GAAG,CAAC,GAAGA,GAAG,GAAGG,eAAS,CAACH,GAAG,CAAC,CAAC,CAAC;AAAA;GACnE;AAAA,CAAC,CACJ;AAEaI,IAAAA,iBAAiB,GAAG,SAApBA,iBAAiBA,GAAA;AAAA,EAAA,OAAS9B,iBAAiB,CAAC+B,UAAI,CAAC,WAAW,CAAC,CAAC;AAAA;;;;;"}
@@ -11,7 +11,7 @@ var PageLoader = require('@bigbinary/neeto-molecules/PageLoader');
11
11
  var ramda = require('ramda');
12
12
  var useFormApi = require('../useFormApi-CWHgrz3I.js');
13
13
  var constants$1 = require('../constants-D-XSuLo2.js');
14
- var constants = require('../constants-BUAlqO79.js');
14
+ var constants = require('../constants-awsxzvM-.js');
15
15
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
16
16
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
17
17
  var dnd = require('@hello-pangea/dnd');
@@ -19,7 +19,7 @@ var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
19
19
  var HelpPopover = require('@bigbinary/neeto-molecules/HelpPopover');
20
20
  var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
21
21
  var reactI18next = require('react-i18next');
22
- var buildForm = require('../buildForm-12iKiorQ.js');
22
+ var buildForm = require('../buildForm-ZqO8kJoo.js');
23
23
  var shallow = require('zustand/shallow');
24
24
  var Alert = require('@bigbinary/neetoui/Alert');
25
25
  var index = require('../index-2caW4Cx0.js');
@@ -35,12 +35,12 @@ var uuid = require('uuid');
35
35
  var NoData = require('@bigbinary/neetoui/NoData');
36
36
  var Pane = require('@bigbinary/neetoui/Pane');
37
37
  var Form$2 = require('@bigbinary/neetoui/formik/Form');
38
+ var Textarea = require('@bigbinary/neetoui/formik/Textarea');
39
+ var Accordion = require('@bigbinary/neetoui/Accordion');
38
40
  var Select = require('@bigbinary/neetoui/formik/Select');
39
41
  var Switch = require('@bigbinary/neetoui/formik/Switch');
40
- var Textarea = require('@bigbinary/neetoui/formik/Textarea');
41
42
  var NeetoEditor = require('@bigbinary/neeto-editor/Editor');
42
43
  var Button = require('@bigbinary/neetoui/Button');
43
- var Accordion = require('@bigbinary/neetoui/Accordion');
44
44
  var Input = require('@bigbinary/neetoui/formik/Input');
45
45
  var utils$1 = require('@bigbinary/neeto-editor/utils');
46
46
  var yup = require('yup');
@@ -840,28 +840,21 @@ var FieldCode = function FieldCode() {
840
840
  var helpDocUrl = buildForm.useBuildFormStore(ramda.path(["formState", "helpDocUrls", "fieldCode"]));
841
841
  var _useTranslation = reactI18next.useTranslation(),
842
842
  t = _useTranslation.t;
843
- return /*#__PURE__*/jsxRuntime.jsx(Accordion, {
844
- className: "neeto-form-nano-advanced-properties-accordion",
845
- "data-cy": "advanced-properties-card",
846
- children: /*#__PURE__*/jsxRuntime.jsx(Accordion.Item, {
847
- title: t("neetoForm.common.advancedProperties"),
848
- children: /*#__PURE__*/jsxRuntime.jsx(InputWithMaxLength, {
849
- required: true,
850
- label: t("neetoForm.questions.common.questionFields.field.fieldCode"),
851
- name: "fieldCode",
852
- rejectCharsRegex: constants.FIELD_CODES_REJECT_CHARS_REGEX,
853
- helpText: helpDocUrl && /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
854
- i18nKey: "neetoForm.questions.common.questionFields.field.fieldCodeHelpDescription",
855
- components: {
856
- Link: /*#__PURE__*/jsxRuntime.jsx(Button, {
857
- className: "text-xs",
858
- href: helpDocUrl,
859
- style: "link",
860
- target: "_blank"
861
- })
862
- }
843
+ return /*#__PURE__*/jsxRuntime.jsx(InputWithMaxLength, {
844
+ required: true,
845
+ label: t("neetoForm.questions.common.questionFields.field.fieldCode"),
846
+ name: "fieldCode",
847
+ rejectCharsRegex: constants.FIELD_CODES_REJECT_CHARS_REGEX,
848
+ helpText: helpDocUrl && /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
849
+ i18nKey: "neetoForm.questions.common.questionFields.field.fieldCodeHelpDescription",
850
+ components: {
851
+ Link: /*#__PURE__*/jsxRuntime.jsx(Button, {
852
+ className: "text-xs",
853
+ href: helpDocUrl,
854
+ style: "link",
855
+ target: "_blank"
863
856
  })
864
- })
857
+ }
865
858
  })
866
859
  });
867
860
  };
@@ -887,17 +880,20 @@ var Form$1 = function Form(_ref) {
887
880
  setTouched = _useFormikContext.setTouched,
888
881
  setFieldValue = _useFormikContext.setFieldValue;
889
882
  var hideQuestionHelpDoc = buildForm.useBuildFormStore(ramda.path(["formState", "helpDocUrls", "hideQuestion"]));
883
+ var readOnlyHelpDoc = buildForm.useBuildFormStore(ramda.path(["formState", "helpDocUrls", "readOnly"]));
890
884
  var _useBuildFormStore = buildForm.useBuildFormStore(function (store) {
891
- var _store$formState, _store$formState2, _store$formState3, _store$formState4;
885
+ var _store$formState, _store$formState2, _store$formState3, _store$formState4, _store$formState5;
892
886
  return {
893
887
  enableDomainWhitelisting: (_store$formState = store["formState"]) === null || _store$formState === void 0 ? void 0 : _store$formState["enableDomainWhitelisting"],
894
888
  enableDomainBlacklisting: (_store$formState2 = store["formState"]) === null || _store$formState2 === void 0 ? void 0 : _store$formState2["enableDomainBlacklisting"],
895
- selectedLanguage: (_store$formState3 = store["formState"]) === null || _store$formState3 === void 0 ? void 0 : _store$formState3["selectedLanguage"],
896
- isUsingDefaultQuestionKinds: (_store$formState4 = store["formState"]) === null || _store$formState4 === void 0 ? void 0 : _store$formState4["isUsingDefaultQuestionKinds"]
889
+ showReadOnlySwitch: (_store$formState3 = store["formState"]) === null || _store$formState3 === void 0 ? void 0 : _store$formState3["showReadOnlySwitch"],
890
+ selectedLanguage: (_store$formState4 = store["formState"]) === null || _store$formState4 === void 0 ? void 0 : _store$formState4["selectedLanguage"],
891
+ isUsingDefaultQuestionKinds: (_store$formState5 = store["formState"]) === null || _store$formState5 === void 0 ? void 0 : _store$formState5["isUsingDefaultQuestionKinds"]
897
892
  };
898
893
  }, shallow.shallow),
899
894
  enableDomainWhitelisting = _useBuildFormStore.enableDomainWhitelisting,
900
895
  enableDomainBlacklisting = _useBuildFormStore.enableDomainBlacklisting,
896
+ showReadOnlySwitch = _useBuildFormStore.showReadOnlySwitch,
901
897
  selectedLanguage = _useBuildFormStore.selectedLanguage,
902
898
  isUsingDefaultQuestionKinds = _useBuildFormStore.isUsingDefaultQuestionKinds;
903
899
  var kind = values.kind;
@@ -921,6 +917,7 @@ var Form$1 = function Form(_ref) {
921
917
  var hasAdditionalData = ramda.includes(kind, QUESTIONS_WITH_ADDITIONAL_DATA);
922
918
  var shouldShowFieldCode = enableFieldCode && !ramda.includes(kind, constants.QUESTIONS_WITHOUT_FIELD_CODE);
923
919
  var shouldShowHideSwitch = !ramda.includes(kind, constants.NON_HIDEABLE_FIELDS);
920
+ var shouldShowReadOnlySwitch = showReadOnlySwitch && !ramda.includes(kind, constants.NON_READ_ONLY_FIELDS);
924
921
  var isSettingsBlockVisible = !isRequired && (!isImmutable || shouldShowHideSwitch);
925
922
  var handleKindChange = function handleKindChange(option) {
926
923
  var data = buildQuestionData(option);
@@ -1002,8 +999,22 @@ var Form$1 = function Form(_ref) {
1002
999
  label: t("neetoForm.common.hideQuestion"),
1003
1000
  labelProps: hideSwitchLabelProps(hideQuestionHelpDoc),
1004
1001
  name: "isHidden"
1002
+ }), shouldShowReadOnlySwitch && /*#__PURE__*/jsxRuntime.jsx(Switch, {
1003
+ label: t("neetoForm.common.readOnly"),
1004
+ labelProps: readOnlySwitchLabelProps(readOnlyHelpDoc),
1005
+ name: "isReadOnly"
1005
1006
  })]
1006
- }), shouldShowFieldCode && /*#__PURE__*/jsxRuntime.jsx(FieldCode, {})]
1007
+ }), (shouldShowFieldCode || shouldShowReadOnlySwitch) && /*#__PURE__*/jsxRuntime.jsx(Accordion, {
1008
+ className: "neeto-form-nano-advanced-properties-accordion",
1009
+ "data-cy": "advanced-properties-card",
1010
+ children: /*#__PURE__*/jsxRuntime.jsx(Accordion.Item, {
1011
+ title: t("neetoForm.common.advancedProperties"),
1012
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
1013
+ className: "flex flex-col space-y-4",
1014
+ children: shouldShowFieldCode && /*#__PURE__*/jsxRuntime.jsx(FieldCode, {})
1015
+ })
1016
+ })
1017
+ })]
1007
1018
  })]
1008
1019
  })
1009
1020
  });
@@ -1925,6 +1936,19 @@ var hideSwitchLabelProps = function hideSwitchLabelProps(helpUrl) {
1925
1936
  }
1926
1937
  } : undefined;
1927
1938
  };
1939
+ var readOnlySwitchLabelProps = function readOnlySwitchLabelProps(helpUrl) {
1940
+ return {
1941
+ helpIconProps: {
1942
+ popoverProps: {
1943
+ description: i18next.t("neetoForm.questions.common.questionFields.field.readOnlyHelpDescription"),
1944
+ helpLinkProps: helpUrl ? {
1945
+ href: helpUrl,
1946
+ label: i18next.t("neetoForm.common.viewHelpArticle")
1947
+ } : undefined
1948
+ }
1949
+ }
1950
+ };
1951
+ };
1928
1952
 
1929
1953
  var _excluded$1 = ["isOpen", "onClose", "action", "question", "availableQuestionKinds"];
1930
1954
  function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -1966,7 +1990,7 @@ var AddQuestion = function AddQuestion(_ref) {
1966
1990
  }));
1967
1991
  };
1968
1992
 
1969
- var _excluded = ["questionKinds", "onValueChange", "formId", "isDeletable", "isRequiredField", "submitButtonProps", "cancelButtonProps", "isKindAlreadyActive", "getActiveKindDetails", "isDisabledFieldLabel", "disabledAddButtonTooltipProps", "enableFieldCode", "isFormEnabled", "savedTitle", "formTitle", "formDescription", "selectedLanguage", "availableLanguages", "onLanguageChange", "additionalActionOptions", "isReordering", "additionalQuestionKindPattern", "showActionBlock", "buildRequestArgs", "enableDomainBlacklisting", "enableDomainWhitelisting", "helpDocUrls", "hostSpecificData", "questionsHelpProps", "isUsingDefaultQuestionKinds"];
1993
+ var _excluded = ["questionKinds", "onValueChange", "formId", "isDeletable", "isRequiredField", "submitButtonProps", "cancelButtonProps", "isKindAlreadyActive", "getActiveKindDetails", "isDisabledFieldLabel", "disabledAddButtonTooltipProps", "enableFieldCode", "isFormEnabled", "savedTitle", "formTitle", "formDescription", "selectedLanguage", "availableLanguages", "onLanguageChange", "additionalActionOptions", "isReordering", "additionalQuestionKindPattern", "showActionBlock", "showReadOnlySwitch", "buildRequestArgs", "enableDomainBlacklisting", "enableDomainWhitelisting", "helpDocUrls", "hostSpecificData", "questionsHelpProps", "isUsingDefaultQuestionKinds"];
1970
1994
  function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1971
1995
  function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1972
1996
  var Form = function Form(_ref) {
@@ -1993,6 +2017,7 @@ var Form = function Form(_ref) {
1993
2017
  isReordering = _ref.isReordering,
1994
2018
  additionalQuestionKindPattern = _ref.additionalQuestionKindPattern,
1995
2019
  showActionBlock = _ref.showActionBlock,
2020
+ showReadOnlySwitch = _ref.showReadOnlySwitch,
1996
2021
  buildRequestArgs = _ref.buildRequestArgs,
1997
2022
  enableDomainBlacklisting = _ref.enableDomainBlacklisting,
1998
2023
  enableDomainWhitelisting = _ref.enableDomainWhitelisting,
@@ -2054,9 +2079,10 @@ var Form = function Form(_ref) {
2054
2079
  helpDocUrls: helpDocUrls,
2055
2080
  enableDomainBlacklisting: enableDomainBlacklisting,
2056
2081
  enableDomainWhitelisting: enableDomainWhitelisting,
2057
- isUsingDefaultQuestionKinds: isUsingDefaultQuestionKinds
2082
+ isUsingDefaultQuestionKinds: isUsingDefaultQuestionKinds,
2083
+ showReadOnlySwitch: showReadOnlySwitch
2058
2084
  });
2059
- }, [formId, isFormEnabled, savedTitle, setFormData, values, dirty, isSubmitting, isValid, errors, submitForm, resetForm, selectedLanguage, helpDocUrls, enableDomainBlacklisting, enableDomainWhitelisting, isUsingDefaultQuestionKinds]);
2085
+ }, [formId, isFormEnabled, savedTitle, setFormData, values, dirty, isSubmitting, isValid, errors, submitForm, resetForm, selectedLanguage, helpDocUrls, enableDomainBlacklisting, enableDomainWhitelisting, isUsingDefaultQuestionKinds, showReadOnlySwitch]);
2060
2086
  var questions = values.questions;
2061
2087
  var handleSelect = function handleSelect(question) {
2062
2088
  setSelectedQuestion(question);
@@ -2282,7 +2308,9 @@ var BuildForm = function BuildForm(_ref) {
2282
2308
  _ref$questionsHelpPro = _ref.questionsHelpProps,
2283
2309
  questionsHelpProps = _ref$questionsHelpPro === void 0 ? {} : _ref$questionsHelpPro,
2284
2310
  _ref$hostSpecificData = _ref.hostSpecificData,
2285
- hostSpecificData = _ref$hostSpecificData === void 0 ? {} : _ref$hostSpecificData;
2311
+ hostSpecificData = _ref$hostSpecificData === void 0 ? {} : _ref$hostSpecificData,
2312
+ _ref$showReadOnlySwit = _ref.showReadOnlySwitch,
2313
+ showReadOnlySwitch = _ref$showReadOnlySwit === void 0 ? false : _ref$showReadOnlySwit;
2286
2314
  var queryClient = reactQuery.useQueryClient();
2287
2315
  var _useReorderQuestions = useFormApi.useReorderQuestions(id, {
2288
2316
  onSuccess: utils.showThumbsUpToastr
@@ -2387,6 +2415,7 @@ var BuildForm = function BuildForm(_ref) {
2387
2415
  savedTitle: savedTitle,
2388
2416
  selectedLanguage: selectedLanguage,
2389
2417
  showActionBlock: showActionBlock,
2418
+ showReadOnlySwitch: showReadOnlySwitch,
2390
2419
  submitButtonProps: submitButtonProps
2391
2420
  })), {}, {
2392
2421
  formId: id,