@bigbinary/neeto-form-frontend 3.3.2 → 3.4.1

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 (62) hide show
  1. package/app/javascript/src/translations/en.json +4 -4
  2. package/dist/BuildForm.js +2378 -0
  3. package/dist/BuildForm.js.map +1 -0
  4. package/dist/ExternalForm.js +658 -0
  5. package/dist/ExternalForm.js.map +1 -0
  6. package/dist/NeetoFormProvider.js +11 -0
  7. package/dist/NeetoFormProvider.js.map +1 -0
  8. package/dist/Submission.js +2700 -0
  9. package/dist/Submission.js.map +1 -0
  10. package/dist/UrlBuilder.js +297 -0
  11. package/dist/UrlBuilder.js.map +1 -0
  12. package/dist/buildForm-4a5a5251.js +35 -0
  13. package/dist/buildForm-4a5a5251.js.map +1 -0
  14. package/dist/buildForm-77b32f08.js +42 -0
  15. package/dist/buildForm-77b32f08.js.map +1 -0
  16. package/dist/cjs/BuildForm.js +2437 -0
  17. package/dist/cjs/BuildForm.js.map +1 -0
  18. package/dist/cjs/ExternalForm.js +699 -0
  19. package/dist/cjs/ExternalForm.js.map +1 -0
  20. package/dist/cjs/NeetoFormProvider.js +13 -0
  21. package/dist/cjs/NeetoFormProvider.js.map +1 -0
  22. package/dist/cjs/Submission.js +2711 -0
  23. package/dist/cjs/Submission.js.map +1 -0
  24. package/dist/cjs/UrlBuilder.js +309 -0
  25. package/dist/cjs/UrlBuilder.js.map +1 -0
  26. package/dist/cjs/hooks.js +34 -0
  27. package/dist/cjs/hooks.js.map +1 -0
  28. package/dist/cjs/index.js +116 -0
  29. package/dist/cjs/index.js.map +1 -0
  30. package/dist/constants-25c02c05.js +486 -0
  31. package/dist/constants-25c02c05.js.map +1 -0
  32. package/dist/constants-8afd221a.js +455 -0
  33. package/dist/constants-8afd221a.js.map +1 -0
  34. package/dist/constants-9310a7c2.js +342 -0
  35. package/dist/constants-9310a7c2.js.map +1 -0
  36. package/dist/constants-f0f38e6f.js +378 -0
  37. package/dist/constants-f0f38e6f.js.map +1 -0
  38. package/dist/hooks.js +20 -0
  39. package/dist/hooks.js.map +1 -0
  40. package/dist/index-2664c3e7.js +39 -0
  41. package/dist/index-2664c3e7.js.map +1 -0
  42. package/dist/index-b6bb805c.js +46 -0
  43. package/dist/index-b6bb805c.js.map +1 -0
  44. package/dist/index.js +95 -9325
  45. package/dist/index.js.map +1 -1
  46. package/dist/main.css +12 -1
  47. package/dist/main.css.map +1 -1
  48. package/dist/useFormApi-ca36173e.js +492 -0
  49. package/dist/useFormApi-ca36173e.js.map +1 -0
  50. package/dist/useFormApi-d733cb8d.js +467 -0
  51. package/dist/useFormApi-d733cb8d.js.map +1 -0
  52. package/dist/useFormSubmission-866195bb.js +24 -0
  53. package/dist/useFormSubmission-866195bb.js.map +1 -0
  54. package/dist/useFormSubmission-f8866b84.js +22 -0
  55. package/dist/useFormSubmission-f8866b84.js.map +1 -0
  56. package/dist/utils-1ab9e83f.js +2158 -0
  57. package/dist/utils-1ab9e83f.js.map +1 -0
  58. package/dist/utils-38cc949e.js +2222 -0
  59. package/dist/utils-38cc949e.js.map +1 -0
  60. package/package.json +19 -7
  61. package/dist/index.cjs.js +0 -9424
  62. package/dist/index.cjs.js.map +0 -1
@@ -0,0 +1,2437 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var React = require('react');
5
+ var reactQuery = require('@tanstack/react-query');
6
+ var classnames = require('classnames');
7
+ var formik = require('formik');
8
+ var neetoCist = require('@bigbinary/neeto-cist');
9
+ var utils = require('@bigbinary/neeto-commons-frontend/utils');
10
+ var PageLoader = require('@bigbinary/neeto-molecules/PageLoader');
11
+ var ramda = require('ramda');
12
+ var useFormApi = require('../useFormApi-ca36173e.js');
13
+ var constants$1 = require('../constants-f0f38e6f.js');
14
+ var constants = require('../constants-25c02c05.js');
15
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
16
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
17
+ var dnd = require('@hello-pangea/dnd');
18
+ var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
19
+ var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
20
+ var reactI18next = require('react-i18next');
21
+ var buildForm = require('../buildForm-77b32f08.js');
22
+ var shallow = require('zustand/shallow');
23
+ var Alert = require('@bigbinary/neetoui/Alert');
24
+ var index = require('../index-b6bb805c.js');
25
+ var jsxRuntime = require('react/jsx-runtime');
26
+ var MoreDropdown = require('@bigbinary/neeto-molecules/MoreDropdown');
27
+ var Typography = require('@bigbinary/neetoui/Typography');
28
+ var Dropdown = require('@bigbinary/neetoui/Dropdown');
29
+ var Tooltip = require('@bigbinary/neetoui/Tooltip');
30
+ var i18next = require('i18next');
31
+ var Plus = require('@bigbinary/neeto-icons/Plus');
32
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
33
+ var NoData = require('@bigbinary/neetoui/NoData');
34
+ var Pane = require('@bigbinary/neetoui/Pane');
35
+ var Form$2 = require('@bigbinary/neetoui/formik/Form');
36
+ var Select = require('@bigbinary/neetoui/formik/Select');
37
+ var Switch = require('@bigbinary/neetoui/formik/Switch');
38
+ var Textarea = require('@bigbinary/neetoui/formik/Textarea');
39
+ var NeetoEditor = require('@bigbinary/neeto-editor/Editor');
40
+ var Button = require('@bigbinary/neetoui/Button');
41
+ var Accordion = require('@bigbinary/neetoui/Accordion');
42
+ var Input = require('@bigbinary/neetoui/formik/Input');
43
+ var utils$1 = require('@bigbinary/neeto-editor/utils');
44
+ var yup = require('yup');
45
+ var Radio = require('@bigbinary/neetoui/formik/Radio');
46
+ var HelpPopover = require('@bigbinary/neeto-molecules/HelpPopover');
47
+ var Label = require('@bigbinary/neetoui/Label');
48
+ var CreatableSelect = require('react-select/creatable');
49
+ var _toArray = require('@babel/runtime/helpers/toArray');
50
+ var Close = require('@bigbinary/neeto-icons/Close');
51
+ var Tag = require('@bigbinary/neetoui/Tag');
52
+ var reactSelect = require('react-select');
53
+ var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
54
+ var _regeneratorRuntime = require('@babel/runtime/regenerator');
55
+ var Checkbox$1 = require('@bigbinary/neetoui/formik/Checkbox');
56
+ var Checkbox = require('@bigbinary/neetoui/Checkbox');
57
+ var Delete = require('@bigbinary/neeto-icons/Delete');
58
+ require('@bigbinary/neeto-commons-frontend/constants');
59
+ require('axios');
60
+ require('dompurify');
61
+ require('zustand');
62
+ require('@babel/runtime/helpers/typeof');
63
+
64
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
65
+
66
+ function _interopNamespace(e) {
67
+ if (e && e.__esModule) return e;
68
+ var n = Object.create(null);
69
+ if (e) {
70
+ Object.keys(e).forEach(function (k) {
71
+ if (k !== 'default') {
72
+ var d = Object.getOwnPropertyDescriptor(e, k);
73
+ Object.defineProperty(n, k, d.get ? d : {
74
+ enumerable: true,
75
+ get: function () { return e[k]; }
76
+ });
77
+ }
78
+ });
79
+ }
80
+ n["default"] = e;
81
+ return Object.freeze(n);
82
+ }
83
+
84
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
85
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
86
+ var PageLoader__default = /*#__PURE__*/_interopDefaultLegacy(PageLoader);
87
+ var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
88
+ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
89
+ var ActionBlock__default = /*#__PURE__*/_interopDefaultLegacy(ActionBlock);
90
+ var Alert__default = /*#__PURE__*/_interopDefaultLegacy(Alert);
91
+ var MoreDropdown__default = /*#__PURE__*/_interopDefaultLegacy(MoreDropdown);
92
+ var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
93
+ var Dropdown__default = /*#__PURE__*/_interopDefaultLegacy(Dropdown);
94
+ var Tooltip__default = /*#__PURE__*/_interopDefaultLegacy(Tooltip);
95
+ var Plus__default = /*#__PURE__*/_interopDefaultLegacy(Plus);
96
+ var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
97
+ var NoData__default = /*#__PURE__*/_interopDefaultLegacy(NoData);
98
+ var Pane__default = /*#__PURE__*/_interopDefaultLegacy(Pane);
99
+ var Form__default = /*#__PURE__*/_interopDefaultLegacy(Form$2);
100
+ var Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);
101
+ var Switch__default = /*#__PURE__*/_interopDefaultLegacy(Switch);
102
+ var Textarea__default = /*#__PURE__*/_interopDefaultLegacy(Textarea);
103
+ var NeetoEditor__default = /*#__PURE__*/_interopDefaultLegacy(NeetoEditor);
104
+ var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
105
+ var Accordion__default = /*#__PURE__*/_interopDefaultLegacy(Accordion);
106
+ var Input__default = /*#__PURE__*/_interopDefaultLegacy(Input);
107
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
108
+ var Radio__default = /*#__PURE__*/_interopDefaultLegacy(Radio);
109
+ var HelpPopover__default = /*#__PURE__*/_interopDefaultLegacy(HelpPopover);
110
+ var Label__default = /*#__PURE__*/_interopDefaultLegacy(Label);
111
+ var CreatableSelect__default = /*#__PURE__*/_interopDefaultLegacy(CreatableSelect);
112
+ var _toArray__default = /*#__PURE__*/_interopDefaultLegacy(_toArray);
113
+ var Close__default = /*#__PURE__*/_interopDefaultLegacy(Close);
114
+ var Tag__default = /*#__PURE__*/_interopDefaultLegacy(Tag);
115
+ var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
116
+ var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
117
+ var Checkbox__default$1 = /*#__PURE__*/_interopDefaultLegacy(Checkbox$1);
118
+ var Checkbox__default = /*#__PURE__*/_interopDefaultLegacy(Checkbox);
119
+ var Delete__default = /*#__PURE__*/_interopDefaultLegacy(Delete);
120
+
121
+ var DeleteAlert = function DeleteAlert(_ref) {
122
+ var selectedQuestion = _ref.selectedQuestion,
123
+ isOpen = _ref.isOpen,
124
+ onClose = _ref.onClose,
125
+ languagesCount = _ref.languagesCount,
126
+ handleSelect = _ref.handleSelect;
127
+ var _useTranslation = reactI18next.useTranslation(),
128
+ t = _useTranslation.t;
129
+ var _useBuildFormStore = buildForm.useBuildFormStore(function (store) {
130
+ var _store$formState;
131
+ return {
132
+ selectedLanguage: (_store$formState = store["formState"]) === null || _store$formState === void 0 ? void 0 : _store$formState["selectedLanguage"]
133
+ };
134
+ }, shallow.shallow),
135
+ selectedLanguage = _useBuildFormStore.selectedLanguage;
136
+ var renderQuestionLabel = function renderQuestionLabel() {
137
+ var questionKind = selectedQuestion.kind;
138
+ var independentLabel = constants.INDEPENDENT_LABELS_MAP[questionKind];
139
+ if (neetoCist.isPresent(independentLabel)) return independentLabel;
140
+ var questionLabel = index.fieldWithFallback(selectedQuestion, "label");
141
+ return neetoCist.truncate(questionLabel, 40);
142
+ };
143
+ var _useDeleteQuestion = useFormApi.useDeleteQuestion(selectedQuestion === null || selectedQuestion === void 0 ? void 0 : selectedQuestion.formId, selectedLanguage, {
144
+ onSuccess: function onSuccess() {
145
+ utils.showThumbsUpToastr();
146
+ onClose();
147
+ }
148
+ }),
149
+ deleteQuestion = _useDeleteQuestion.mutate,
150
+ isDeleting = _useDeleteQuestion.isPending;
151
+ var selectNextQuestion = function selectNextQuestion(questions) {
152
+ var selectedQuestionIndex = selectedQuestion.displayOrder;
153
+ var wasLastQuestion = ramda.equals(selectedQuestionIndex, questions.length);
154
+ var newDisplayOrder = wasLastQuestion ? selectedQuestionIndex - 1 : selectedQuestionIndex;
155
+ var newQuestion = neetoCist.findBy({
156
+ displayOrder: newDisplayOrder
157
+ }, questions);
158
+ handleSelect(newQuestion);
159
+ };
160
+ var handleSubmit = function handleSubmit() {
161
+ deleteQuestion(selectedQuestion.id, {
162
+ onSuccess: function onSuccess(_ref2) {
163
+ var questions = _ref2.questions;
164
+ return selectNextQuestion(questions);
165
+ }
166
+ });
167
+ };
168
+ return /*#__PURE__*/jsxRuntime.jsx(Alert__default["default"], {
169
+ isOpen: isOpen,
170
+ onClose: onClose,
171
+ isSubmitting: isDeleting,
172
+ submitButtonLabel: t("neetoForm.common.delete"),
173
+ title: t("neetoForm.questions.deleteAlert.title"),
174
+ message: neetoCist.isPresent(selectedQuestion) && /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
175
+ i18nKey: "neetoForm.questions.deleteAlert.message",
176
+ values: {
177
+ count: languagesCount,
178
+ label: renderQuestionLabel()
179
+ }
180
+ }),
181
+ onSubmit: handleSubmit
182
+ });
183
+ };
184
+
185
+ var ChangeLanguageDropdown = function ChangeLanguageDropdown(_ref) {
186
+ var _findBy;
187
+ var currentLanguage = _ref.currentLanguage,
188
+ languages = _ref.languages,
189
+ onChange = _ref.onChange;
190
+ var _useState = React.useState(false),
191
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
192
+ isUnsavedChangesAlertOpen = _useState2[0],
193
+ setIsUnsavedChangesAlertOpen = _useState2[1];
194
+ var _useState3 = React.useState(currentLanguage),
195
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
196
+ selectedLanguage = _useState4[0],
197
+ setSelectedLanguage = _useState4[1];
198
+ var _useTranslation = reactI18next.useTranslation(),
199
+ t = _useTranslation.t;
200
+ var _useFormikContext = formik.useFormikContext(),
201
+ dirty = _useFormikContext.dirty;
202
+ var languageChangeHandler = function languageChangeHandler(code) {
203
+ if (!dirty) {
204
+ onChange(code);
205
+ return;
206
+ }
207
+ setSelectedLanguage(code);
208
+ setIsUnsavedChangesAlertOpen(true);
209
+ };
210
+ var selectedLanguageName = (_findBy = neetoCist.findBy({
211
+ code: currentLanguage
212
+ }, languages)) === null || _findBy === void 0 ? void 0 : _findBy.name;
213
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
214
+ children: [/*#__PURE__*/jsxRuntime.jsx(Tooltip__default["default"], {
215
+ content: t("neetoForm.questions.changeLanguage"),
216
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
217
+ children: /*#__PURE__*/jsxRuntime.jsx(Dropdown__default["default"], {
218
+ buttonStyle: "secondary",
219
+ label: selectedLanguageName,
220
+ children: /*#__PURE__*/jsxRuntime.jsx(Dropdown__default["default"].Menu, {
221
+ children: languages.map(function (_ref2) {
222
+ var code = _ref2.code,
223
+ name = _ref2.name;
224
+ return /*#__PURE__*/jsxRuntime.jsx(Dropdown__default["default"].MenuItem.Button, {
225
+ isActive: currentLanguage === code,
226
+ onClick: function onClick() {
227
+ return languageChangeHandler(code);
228
+ },
229
+ children: name
230
+ }, code);
231
+ })
232
+ })
233
+ })
234
+ })
235
+ }), /*#__PURE__*/jsxRuntime.jsx(Alert__default["default"], {
236
+ isOpen: isUnsavedChangesAlertOpen,
237
+ message: t("neetoForm.questions.unsavedChangesAlert.message"),
238
+ submitButtonLabel: t("neetoForm.questions.unsavedChangesAlert.discard"),
239
+ title: t("neetoForm.questions.unsavedChangesAlert.title"),
240
+ onClose: function onClose() {
241
+ return setIsUnsavedChangesAlertOpen(false);
242
+ },
243
+ onSubmit: function onSubmit() {
244
+ onChange(selectedLanguage);
245
+ setIsUnsavedChangesAlertOpen(false);
246
+ }
247
+ })]
248
+ });
249
+ };
250
+
251
+ var Overview = function Overview(_ref) {
252
+ var title = _ref.title,
253
+ description = _ref.description,
254
+ availableLanguages = _ref.availableLanguages,
255
+ selectedLanguage = _ref.selectedLanguage,
256
+ onLanguageChange = _ref.onLanguageChange,
257
+ additionalActionOptions = _ref.additionalActionOptions;
258
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
259
+ className: "neeto-form-nano-form-wrapper__overview mb-4 w-full flex-shrink-0 space-y-4 px-6 pt-6",
260
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
261
+ className: "flex items-center justify-between",
262
+ children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
263
+ "data-cy": "neeto-form-engine-overview-title",
264
+ lineHeight: "neeto-ui-leading-normal",
265
+ style: "h2",
266
+ weight: "neeto-ui-font-semibold",
267
+ children: title
268
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
269
+ className: "flex flex-shrink-0 items-center justify-between space-x-1",
270
+ children: [availableLanguages.length > 1 && /*#__PURE__*/jsxRuntime.jsx(ChangeLanguageDropdown, {
271
+ currentLanguage: selectedLanguage,
272
+ languages: availableLanguages,
273
+ onChange: onLanguageChange
274
+ }), neetoCist.isPresent(additionalActionOptions) && /*#__PURE__*/jsxRuntime.jsx(MoreDropdown__default["default"], {
275
+ dropdownButtonProps: {
276
+ isRounded: true,
277
+ style: "tertiary"
278
+ },
279
+ dropdownProps: {
280
+ strategy: "fixed",
281
+ position: "bottom-start"
282
+ },
283
+ menuItems: additionalActionOptions
284
+ })]
285
+ })]
286
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
287
+ "data-cy": "neeto-form-engine-overview-description",
288
+ style: "body2",
289
+ children: description
290
+ })]
291
+ });
292
+ };
293
+
294
+ function ownKeys$g(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; }
295
+ function _objectSpread$g(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$g(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$g(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
296
+ var validateEditorContent = function validateEditorContent(editorRef) {
297
+ return function () {
298
+ var _editorRef$current;
299
+ return (_editorRef$current = editorRef.current) !== null && _editorRef$current !== void 0 && (_editorRef$current = _editorRef$current.editor) !== null && _editorRef$current !== void 0 && _editorRef$current.isEmpty ? i18next.t("neetoForm.common.thisFieldIsRequired") : "";
300
+ };
301
+ };
302
+ var buildReorderPayload = function buildReorderPayload(questions) {
303
+ return ramda.reduce(function (acc, _ref) {
304
+ var id = _ref.id,
305
+ displayOrder = _ref.displayOrder;
306
+ return ramda.assoc(id, displayOrder, acc);
307
+ }, {}, questions);
308
+ };
309
+ var isRichTextQuestion = ramda.includes(ramda.__, constants.RICH_TEXT_QUESTIONS);
310
+ var buildAddQuestionButtonProps = function buildAddQuestionButtonProps(onAdd, isDisabled, tooltipProps) {
311
+ return _objectSpread$g({
312
+ "data-cy": "neeto-form-engine-add-question-button",
313
+ disabled: isDisabled,
314
+ label: i18next.t("neetoForm.questions.common.primaryPanel.addQuestion"),
315
+ icon: Plus__default["default"],
316
+ iconPosition: "left",
317
+ style: "link",
318
+ onClick: onAdd
319
+ }, isDisabled && {
320
+ tooltipProps: tooltipProps
321
+ });
322
+ };
323
+ var buildDisabledAddButtonTooltipProps = function buildDisabledAddButtonTooltipProps(isDisabled) {
324
+ var disabledAddButtonTooltipProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
325
+ return _objectSpread$g({
326
+ disabled: !isDisabled,
327
+ position: "top",
328
+ content: i18next.t("neetoForm.questions.common.primaryPanel.noQuestionLeft")
329
+ }, disabledAddButtonTooltipProps);
330
+ };
331
+
332
+ var Card = function Card(_ref) {
333
+ var _ref$question = _ref.question,
334
+ question = _ref$question === void 0 ? {} : _ref$question,
335
+ allQuestionKinds = _ref.allQuestionKinds,
336
+ getActiveKindDetails = _ref.getActiveKindDetails,
337
+ isActive = _ref.isActive,
338
+ onSelect = _ref.onSelect,
339
+ onEdit = _ref.onEdit,
340
+ onClone = _ref.onClone,
341
+ onDelete = _ref.onDelete;
342
+ var _useTranslation = reactI18next.useTranslation(),
343
+ t = _useTranslation.t;
344
+ var _getActiveKindDetails = getActiveKindDetails({
345
+ allQuestionKinds: allQuestionKinds,
346
+ item: question
347
+ }),
348
+ kind = _getActiveKindDetails.kind,
349
+ isSingular = _getActiveKindDetails.isSingular;
350
+ var label = index.fieldWithFallback(question, "label");
351
+ var questionLabel = isRichTextQuestion(kind) ? constants.htmlToPlainText(label) : label;
352
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
353
+ "data-cy": "neeto-form-engine-".concat(neetoCist.slugify(questionLabel)),
354
+ className: classnames__default["default"]("neeto-ui-rounded neeto-ui-border-gray-300 neeto-ui-bg-white neeto-form-nano-form__card flex h-10 w-full items-center justify-between border p-2", {
355
+ "neeto-ui-border-primary-500 neeto-form-nano-form__card--active": isActive
356
+ }),
357
+ onClick: function onClick() {
358
+ return onSelect(question);
359
+ },
360
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
361
+ className: "flex min-w-0 flex-grow items-center gap-1",
362
+ children: [/*#__PURE__*/jsxRuntime.jsx(constants.Drag, {
363
+ className: "neeto-ui-text-gray-600 flex-shrink-0"
364
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
365
+ className: "line-clamp-2 min-w-0 flex-grow truncate break-words",
366
+ lineHeight: "snug",
367
+ style: "body2",
368
+ weight: "medium",
369
+ children: questionLabel
370
+ })]
371
+ }), /*#__PURE__*/jsxRuntime.jsx(MoreDropdown__default["default"], {
372
+ dropdownButtonProps: {
373
+ className: "shrink-0"
374
+ },
375
+ dropdownProps: {
376
+ strategy: "fixed"
377
+ },
378
+ menuItems: [{
379
+ "data-cy": "edit-question",
380
+ key: "edit",
381
+ label: t("neetoForm.common.edit"),
382
+ onClick: onEdit
383
+ }, {
384
+ "data-cy": "clone-question",
385
+ key: "clone",
386
+ label: t("neetoForm.common.clone"),
387
+ isVisible: !isSingular && index.isFunction(onClone),
388
+ onClick: onClone
389
+ }, {
390
+ "data-cy": "delete-question",
391
+ key: "delete",
392
+ label: t("neetoForm.common.delete"),
393
+ isVisible: index.isFunction(onDelete),
394
+ onClick: onDelete
395
+ }]
396
+ })]
397
+ });
398
+ };
399
+
400
+ function ownKeys$f(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; }
401
+ function _objectSpread$f(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$f(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$f(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
402
+ var Questions = function Questions(_ref) {
403
+ var questions = _ref.questions,
404
+ isDeletable = _ref.isDeletable,
405
+ allQuestionKinds = _ref.allQuestionKinds,
406
+ getActiveKindDetails = _ref.getActiveKindDetails,
407
+ selectedQuestion = _ref.selectedQuestion,
408
+ onEdit = _ref.onEdit,
409
+ onClone = _ref.onClone,
410
+ onDelete = _ref.onDelete,
411
+ onSelect = _ref.onSelect;
412
+ return /*#__PURE__*/jsxRuntime.jsx(dnd.Droppable, {
413
+ droppableId: "droppable",
414
+ children: function children(_ref2) {
415
+ var droppableProps = _ref2.droppableProps,
416
+ placeholder = _ref2.placeholder,
417
+ innerRef = _ref2.innerRef;
418
+ return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread$f(_objectSpread$f({}, droppableProps), {}, {
419
+ className: "space-y-2",
420
+ ref: innerRef,
421
+ children: [questions.map(function (question, index) {
422
+ var _question$id, _question$id2;
423
+ return /*#__PURE__*/React.createElement(dnd.Draggable, {
424
+ index: index,
425
+ draggableId: "question-".concat((_question$id = question.id) !== null && _question$id !== void 0 ? _question$id : question.nodeId),
426
+ key: "question-".concat((_question$id2 = question.id) !== null && _question$id2 !== void 0 ? _question$id2 : question.nodeId)
427
+ }, function (_ref3) {
428
+ var draggableProps = _ref3.draggableProps,
429
+ dragHandleProps = _ref3.dragHandleProps,
430
+ innerRef = _ref3.innerRef;
431
+ return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread$f(_objectSpread$f(_objectSpread$f({}, draggableProps), dragHandleProps), {}, {
432
+ ref: innerRef,
433
+ children: /*#__PURE__*/jsxRuntime.jsx(Card, {
434
+ allQuestionKinds: allQuestionKinds,
435
+ getActiveKindDetails: getActiveKindDetails,
436
+ onClone: onClone,
437
+ onEdit: onEdit,
438
+ onSelect: onSelect,
439
+ question: question,
440
+ isActive: ramda.equals(selectedQuestion, question),
441
+ onDelete: isDeletable(question) && onDelete
442
+ })
443
+ }));
444
+ });
445
+ }), placeholder]
446
+ }));
447
+ }
448
+ });
449
+ };
450
+
451
+ // Unique ID creation requires a high quality random # generator. In the browser we therefore
452
+ // require the crypto API and do not support built-in fallback to lower quality random number
453
+ // generators (like Math.random()).
454
+ let getRandomValues;
455
+ const rnds8 = new Uint8Array(16);
456
+ function rng() {
457
+ // lazy load so that environments that need to polyfill have a chance to do so
458
+ if (!getRandomValues) {
459
+ // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation.
460
+ getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
461
+
462
+ if (!getRandomValues) {
463
+ throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
464
+ }
465
+ }
466
+
467
+ return getRandomValues(rnds8);
468
+ }
469
+
470
+ /**
471
+ * Convert array of 16 byte values to UUID string format of the form:
472
+ * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
473
+ */
474
+
475
+ const byteToHex = [];
476
+
477
+ for (let i = 0; i < 256; ++i) {
478
+ byteToHex.push((i + 0x100).toString(16).slice(1));
479
+ }
480
+
481
+ function unsafeStringify(arr, offset = 0) {
482
+ // Note: Be careful editing this code! It's been tuned for performance
483
+ // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
484
+ return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
485
+ }
486
+
487
+ const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
488
+ var native = {
489
+ randomUUID
490
+ };
491
+
492
+ function v4(options, buf, offset) {
493
+ if (native.randomUUID && !buf && !options) {
494
+ return native.randomUUID();
495
+ }
496
+
497
+ options = options || {};
498
+ const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
499
+
500
+ rnds[6] = rnds[6] & 0x0f | 0x40;
501
+ rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
502
+
503
+ if (buf) {
504
+ offset = offset || 0;
505
+
506
+ for (let i = 0; i < 16; ++i) {
507
+ buf[offset + i] = rnds[i];
508
+ }
509
+
510
+ return buf;
511
+ }
512
+
513
+ return unsafeStringify(rnds);
514
+ }
515
+
516
+ var moveItem = function moveItem(arr, sourceIndex, destinationIndex) {
517
+ if (sourceIndex === destinationIndex) return arr;
518
+ if (arr instanceof Array && arr[sourceIndex] !== undefined) {
519
+ var removedItem = arr.splice(sourceIndex, 1)[0];
520
+ arr.splice(destinationIndex, 0, removedItem);
521
+ }
522
+ return arr;
523
+ };
524
+ var arrayHelpers = {
525
+ moveItem: moveItem
526
+ };
527
+
528
+ function ownKeys$e(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; }
529
+ function _objectSpread$e(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$e(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
530
+ var isChoiceQuestion = function isChoiceQuestion(question) {
531
+ return ramda.includes(question === null || question === void 0 ? void 0 : question.kind, constants.SELECTABLE_KINDS);
532
+ };
533
+ var generateUniqueFieldCode = function generateUniqueFieldCode(type, questions) {
534
+ var fieldCodes = ramda.pluck("fieldCode", neetoCist.filterBy({
535
+ kind: type
536
+ }, questions));
537
+ var uniqueNumber = fieldCodes.length;
538
+ var candidateFieldCode = "";
539
+ var prefix = constants.RESERVED_FIELD_CODES.includes(type) ? "".concat(type, "_field") : type;
540
+
541
+ //We need to continue this while loop until we can generate a unique fieldCode
542
+ // eslint-disable-next-line no-constant-condition
543
+ while (true) {
544
+ candidateFieldCode = "".concat(prefix).concat(uniqueNumber || "");
545
+ if (!neetoCist.findBy({
546
+ fieldCode: candidateFieldCode
547
+ }, questions)) break;
548
+ uniqueNumber += 1;
549
+ }
550
+ return candidateFieldCode;
551
+ };
552
+ var isQuestionKindAlreadyActive = function isQuestionKindAlreadyActive(_ref) {
553
+ var activeQuestions = _ref.activeQuestions,
554
+ kind = _ref.kind;
555
+ return activeQuestions.some(function (activeQuestion) {
556
+ return activeQuestion.kind === kind.type && activeQuestion._destroy !== true;
557
+ });
558
+ };
559
+ var handleFieldDragEnd = function handleFieldDragEnd(_ref2) {
560
+ var items = _ref2.items,
561
+ setValue = _ref2.setValue,
562
+ source = _ref2.source,
563
+ destination = _ref2.destination;
564
+ if (!(destination && items instanceof Array)) return;
565
+ var nextItems = _toConsumableArray__default["default"](items);
566
+ arrayHelpers.moveItem(nextItems, source.index, destination.index);
567
+ var orderedItems = nextItems.map(function (item, index) {
568
+ return _objectSpread$e(_objectSpread$e({}, item), {}, {
569
+ displayOrder: index
570
+ });
571
+ });
572
+ setValue("questions", orderedItems);
573
+ };
574
+ var createFieldData = function createFieldData(_ref3) {
575
+ var _ref3$kind = _ref3.kind,
576
+ defaults = _ref3$kind.defaults,
577
+ type = _ref3$kind.type,
578
+ metadata = _ref3$kind.metadata,
579
+ _ref3$isRequired = _ref3.isRequired,
580
+ isRequired = _ref3$isRequired === void 0 ? undefined : _ref3$isRequired,
581
+ questions = _ref3.questions;
582
+ return _objectSpread$e(_objectSpread$e({}, defaults), {}, {
583
+ metadata: metadata,
584
+ isRequired: isRequired,
585
+ kind: type,
586
+ nodeId: v4(),
587
+ fieldCode: generateUniqueFieldCode(type, questions)
588
+ });
589
+ };
590
+ var duplicateFieldData = function duplicateFieldData(_ref4) {
591
+ var item = _ref4.item,
592
+ questionKinds = _ref4.questionKinds,
593
+ questions = _ref4.questions;
594
+ var questionKind = neetoCist.findBy({
595
+ type: item.kind
596
+ }, questionKinds);
597
+ var isRequired = item.isRequired,
598
+ kind = item.kind,
599
+ optionsAttributes = item.optionsAttributes;
600
+ var label = index.fieldWithFallback(item, "label");
601
+ var defaultAttributeNames = ramda.keys(questionKind.defaults || {});
602
+ var defaultAttributes = ramda.pick(defaultAttributeNames, item);
603
+ var newQuestionLabel = isRichTextQuestion(kind) ? label : i18next.t("neetoForm.common.clonedElementLabel", {
604
+ label: label
605
+ });
606
+ return _objectSpread$e(_objectSpread$e({}, defaultAttributes), {}, {
607
+ isRequired: isRequired,
608
+ kind: kind,
609
+ label: newQuestionLabel,
610
+ optionsAttributes: optionsAttributes && optionsAttributes.map(ramda.omit(["id"])),
611
+ nodeId: v4(),
612
+ fieldCode: generateUniqueFieldCode(item.kind, questions),
613
+ displayOrder: item.displayOrder + 1
614
+ });
615
+ };
616
+ var getAvailableQuestionKinds = function getAvailableQuestionKinds(_ref5) {
617
+ var allQuestionKinds = _ref5.allQuestionKinds,
618
+ _ref5$activeQuestions = _ref5.activeQuestions,
619
+ activeQuestions = _ref5$activeQuestions === void 0 ? [] : _ref5$activeQuestions,
620
+ isKindAlreadyActive = _ref5.isKindAlreadyActive;
621
+ if (ramda.isEmpty(activeQuestions)) return allQuestionKinds;
622
+ return ramda.reject(function (kind) {
623
+ var isSingularKind = kind.isSingular;
624
+ return isSingularKind && isKindAlreadyActive({
625
+ activeQuestions: activeQuestions,
626
+ kind: kind
627
+ });
628
+ }, allQuestionKinds);
629
+ };
630
+ var formatQuestionAttributesForClone = ramda.when(isChoiceQuestion, ramda.assoc("isCloning", true));
631
+
632
+ var AddFirstQuestion = function AddFirstQuestion(_ref) {
633
+ var onAdd = _ref.onAdd,
634
+ isDisabled = _ref.isDisabled,
635
+ disabledAddButtonTooltipProps = _ref.disabledAddButtonTooltipProps;
636
+ var _useTranslation = reactI18next.useTranslation(),
637
+ t = _useTranslation.t;
638
+ var tooltipProps = buildDisabledAddButtonTooltipProps(isDisabled, disabledAddButtonTooltipProps);
639
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
640
+ className: "flex h-full flex-col items-center justify-center py-8",
641
+ children: /*#__PURE__*/jsxRuntime.jsx(NoData__default["default"], {
642
+ showTooltipWhenButtonDisabled: true,
643
+ className: "min-h-80",
644
+ title: t("neetoForm.questions.common.noData"),
645
+ primaryButtonProps: buildAddQuestionButtonProps(onAdd, isDisabled, tooltipProps)
646
+ })
647
+ });
648
+ };
649
+
650
+ var NAME = constants.QUESTION_TYPES.NAME,
651
+ PHONE = constants.QUESTION_TYPES.PHONE,
652
+ EMAIL$1 = constants.QUESTION_TYPES.EMAIL,
653
+ ADDITIONAL_GUESTS = constants.QUESTION_TYPES.ADDITIONAL_GUESTS,
654
+ TEXT = constants.QUESTION_TYPES.TEXT,
655
+ TEXTAREA = constants.QUESTION_TYPES.TEXTAREA,
656
+ RICH_TEXT = constants.QUESTION_TYPES.RICH_TEXT,
657
+ INTEGER = constants.QUESTION_TYPES.INTEGER,
658
+ DECIMAL = constants.QUESTION_TYPES.DECIMAL,
659
+ STAR_RATING$1 = constants.QUESTION_TYPES.STAR_RATING,
660
+ RATING$1 = constants.QUESTION_TYPES.RATING,
661
+ DATE = constants.QUESTION_TYPES.DATE,
662
+ FILE_UPLOAD$1 = constants.QUESTION_TYPES.FILE_UPLOAD,
663
+ CAPTCHA$1 = constants.QUESTION_TYPES.CAPTCHA;
664
+ var QUESTIONS_WITH_ADDITIONAL_DATA = [].concat(_toConsumableArray__default["default"](constants.SELECTABLE_KINDS), [STAR_RATING$1, RATING$1, FILE_UPLOAD$1, CAPTCHA$1, EMAIL$1]);
665
+ var QUESTIONS_WITH_PLACEHOLDERS = [NAME, PHONE, EMAIL$1, ADDITIONAL_GUESTS, TEXT, TEXTAREA, RICH_TEXT, INTEGER, DECIMAL, DATE];
666
+ var DEFAULT_PLACEHOLDERS = {
667
+ CHECKBOX: i18next.t("neetoForm.questions.common.questionFields.field.labelExample", {
668
+ what: i18next.t("neetoForm.common.hobbies")
669
+ }),
670
+ RADIO: i18next.t("neetoForm.questions.common.questionFields.field.labelExample", {
671
+ what: i18next.t("neetoForm.common.country")
672
+ }),
673
+ DROPDOWN: i18next.t("neetoForm.questions.common.questionFields.field.labelExample", {
674
+ what: i18next.t("neetoForm.common.company")
675
+ })
676
+ };
677
+ var INITIAL_VALUES = {
678
+ kind: "",
679
+ label: "",
680
+ fieldCode: ""
681
+ };
682
+
683
+ var _excluded$8 = ["label", "name"];
684
+ function ownKeys$d(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; }
685
+ function _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$d(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
686
+ var FormikAdaptiveInput = function FormikAdaptiveInput(_ref) {
687
+ var label = _ref.label,
688
+ name = _ref.name,
689
+ otherProps = _objectWithoutProperties__default["default"](_ref, _excluded$8);
690
+ var _useFormikContext = formik.useFormikContext(),
691
+ dirty = _useFormikContext.dirty,
692
+ isValid = _useFormikContext.isValid,
693
+ submitForm = _useFormikContext.submitForm;
694
+ var handleKeyDown = function handleKeyDown(event) {
695
+ if (event.key !== "Enter" || event.shiftKey) return;
696
+ event.preventDefault();
697
+ if (reactUtils.isMetaKeyPressed(event)) return;
698
+ dirty && isValid && submitForm();
699
+ };
700
+ var handleFocus = function handleFocus(element) {
701
+ var end = element.value.length;
702
+ element.setSelectionRange(end, end);
703
+ };
704
+ return /*#__PURE__*/jsxRuntime.jsx(Textarea__default["default"], _objectSpread$d({
705
+ label: label,
706
+ name: name,
707
+ className: "neeto-form-nano-adaptive-input",
708
+ resize: "none",
709
+ size: "small",
710
+ onFocus: function onFocus(_ref2) {
711
+ var target = _ref2.target;
712
+ return handleFocus(target);
713
+ },
714
+ onKeyDown: handleKeyDown
715
+ }, otherProps));
716
+ };
717
+
718
+ var Block = function Block(_ref) {
719
+ var title = _ref.title,
720
+ children = _ref.children,
721
+ dataCy = _ref.dataCy;
722
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
723
+ className: "mt-4 space-y-4",
724
+ "data-cy": dataCy,
725
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
726
+ className: "flex items-center justify-between",
727
+ "data-cy": "properties-header",
728
+ children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
729
+ lineHeight: "normal",
730
+ style: "body1",
731
+ weight: "semibold",
732
+ children: title
733
+ })
734
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
735
+ className: "space-y-4",
736
+ children: children
737
+ })]
738
+ });
739
+ };
740
+
741
+ var useUpdateEditorContent = function useUpdateEditorContent(_ref) {
742
+ var editorRef = _ref.editorRef,
743
+ fieldName = _ref.fieldName,
744
+ value = _ref.value,
745
+ initialValue = _ref.initialValue,
746
+ fieldCode = _ref.fieldCode;
747
+ var initialStateRef = React.useRef({
748
+ language: "",
749
+ value: null
750
+ });
751
+ var _useBuildFormStore = buildForm.useBuildFormStore(function (store) {
752
+ return {
753
+ setFormData: store["setFormData"]
754
+ };
755
+ }, shallow.shallow),
756
+ setFormData = _useBuildFormStore.setFormData;
757
+ var _useBuildFormStore2 = buildForm.useBuildFormStore(function (store) {
758
+ var _store$formState, _store$formState2;
759
+ return {
760
+ formId: (_store$formState = store["formState"]) === null || _store$formState === void 0 ? void 0 : _store$formState["formId"],
761
+ selectedLanguage: (_store$formState2 = store["formState"]) === null || _store$formState2 === void 0 ? void 0 : _store$formState2["selectedLanguage"]
762
+ };
763
+ }, shallow.shallow),
764
+ formId = _useBuildFormStore2.formId,
765
+ language = _useBuildFormStore2.selectedLanguage;
766
+ var shouldReset = buildForm.useBuildFormStore(function (store) {
767
+ return store.formState.richTextFieldsToReset.includes(fieldCode);
768
+ });
769
+ var setEditorContent = function setEditorContent(content) {
770
+ var _editorRef$current$ed;
771
+ return (_editorRef$current$ed = editorRef.current.editor) === null || _editorRef$current$ed === void 0 || (_editorRef$current$ed = _editorRef$current$ed.commands) === null || _editorRef$current$ed === void 0 ? void 0 : _editorRef$current$ed.setContent(content);
772
+ };
773
+ if (shouldReset) {
774
+ setEditorContent(initialValue);
775
+ setFormData(ramda.modify("richTextFieldsToReset", ramda.without([fieldCode])));
776
+ }
777
+ var _useFetchQuestions = useFormApi.useFetchQuestions({
778
+ formId: formId,
779
+ language: language
780
+ }),
781
+ data = _useFetchQuestions.data;
782
+ React.useEffect(function () {
783
+ if (!data) return;
784
+ var pathArray = fieldName.split(".").map(function (part) {
785
+ var parsedPart = parseInt(part);
786
+ return isNaN(parsedPart) ? part : parsedPart;
787
+ });
788
+ setEditorContent(ramda.path(pathArray, data));
789
+ }, [data]);
790
+ React.useEffect(function () {
791
+ if (initialStateRef.current["language"] !== language) {
792
+ initialStateRef.current["language"] = language;
793
+ initialStateRef.current["value"] = null;
794
+ return;
795
+ }
796
+ if (initialStateRef.current["value"] === null && value !== null) {
797
+ setEditorContent(value);
798
+ initialStateRef.current["value"] = value;
799
+ }
800
+ }, [language, value]);
801
+ };
802
+
803
+ var Editor = function Editor() {
804
+ var editorRef = React.useRef({
805
+ editor: {}
806
+ });
807
+ var _useFormikContext = formik.useFormikContext(),
808
+ fieldCode = _useFormikContext.values.fieldCode;
809
+ var fieldName = "label";
810
+ var _useField = formik.useField({
811
+ name: fieldName,
812
+ validate: validateEditorContent(editorRef)
813
+ }),
814
+ _useField2 = _slicedToArray__default["default"](_useField, 3),
815
+ value = _useField2[0].value,
816
+ _useField2$ = _useField2[1],
817
+ touched = _useField2$.touched,
818
+ error = _useField2$.error,
819
+ initialValue = _useField2$.initialValue,
820
+ _useField2$2 = _useField2[2],
821
+ setTouched = _useField2$2.setTouched,
822
+ setValue = _useField2$2.setValue;
823
+ useUpdateEditorContent({
824
+ editorRef: editorRef,
825
+ fieldName: fieldName,
826
+ value: value,
827
+ initialValue: initialValue,
828
+ fieldCode: fieldCode
829
+ });
830
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
831
+ className: "w-full cursor-auto",
832
+ children: /*#__PURE__*/jsxRuntime.jsx(NeetoEditor__default["default"], {
833
+ required: true,
834
+ error: touched ? error : "",
835
+ id: "editor",
836
+ initialValue: value,
837
+ name: fieldName,
838
+ ref: editorRef,
839
+ onBlur: function onBlur() {
840
+ return setTouched(true);
841
+ },
842
+ onChange: setValue
843
+ })
844
+ });
845
+ };
846
+
847
+ var RequiredSwitch = reactUtils.withT(function (_ref) {
848
+ var t = _ref.t;
849
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
850
+ className: "w-full",
851
+ children: /*#__PURE__*/jsxRuntime.jsx(Switch__default["default"], {
852
+ label: t("neetoForm.common.required"),
853
+ name: "isRequired"
854
+ })
855
+ });
856
+ });
857
+
858
+ var _excluded$7 = ["maxLength"];
859
+ function ownKeys$c(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; }
860
+ function _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$c(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
861
+ var InputWithMaxLength = function InputWithMaxLength(_ref) {
862
+ var maxLength = _ref.maxLength,
863
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$7);
864
+ var _useField = formik.useField(props),
865
+ _useField2 = _slicedToArray__default["default"](_useField, 3),
866
+ value = _useField2[0].value,
867
+ setValue = _useField2[2].setValue;
868
+ React.useEffect(function () {
869
+ if (value && value.length > maxLength) {
870
+ setValue(value.substring(0, maxLength));
871
+ }
872
+ }, [value, maxLength, setValue]);
873
+ var shouldShowMaxLength = value && value.length > maxLength - 10;
874
+ return /*#__PURE__*/jsxRuntime.jsx(Input__default["default"], _objectSpread$c(_objectSpread$c({}, props), shouldShowMaxLength && {
875
+ maxLength: maxLength
876
+ }));
877
+ };
878
+
879
+ var FieldCode = reactUtils.withT(function (_ref) {
880
+ var helpDocUrl = _ref.helpDocUrl,
881
+ t = _ref.t;
882
+ return /*#__PURE__*/jsxRuntime.jsx(Accordion__default["default"], {
883
+ className: "neeto-form-nano-advanced-properties-accordion",
884
+ "data-cy": "advanced-properties-card",
885
+ children: /*#__PURE__*/jsxRuntime.jsx(Accordion__default["default"].Item, {
886
+ title: t("neetoForm.common.advancedProperties"),
887
+ children: /*#__PURE__*/jsxRuntime.jsx(InputWithMaxLength, {
888
+ required: true,
889
+ label: t("neetoForm.questions.common.questionFields.field.fieldCode"),
890
+ name: "fieldCode",
891
+ helpText: helpDocUrl && /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
892
+ i18nKey: "neetoForm.questions.common.questionFields.field.fieldCodeHelpDescription",
893
+ components: {
894
+ Link: /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
895
+ className: "text-xs",
896
+ href: helpDocUrl,
897
+ style: "link",
898
+ target: "_blank"
899
+ })
900
+ }
901
+ })
902
+ })
903
+ })
904
+ });
905
+ });
906
+
907
+ var Form$1 = function Form(_ref) {
908
+ var questions = _ref.questions,
909
+ initialFocusRef = _ref.initialFocusRef,
910
+ isRequiredField = _ref.isRequiredField,
911
+ isDisabledFieldLabel = _ref.isDisabledFieldLabel,
912
+ enableFieldCode = _ref.enableFieldCode,
913
+ allQuestionKinds = _ref.allQuestionKinds,
914
+ availableQuestionKinds = _ref.availableQuestionKinds,
915
+ getActiveKindDetails = _ref.getActiveKindDetails,
916
+ additionalQuestionKindPattern = _ref.additionalQuestionKindPattern,
917
+ fieldCodeHelpDocUrl = _ref.fieldCodeHelpDocUrl,
918
+ enableDomainRestriction = _ref.enableDomainRestriction,
919
+ domainRestrictionHelpDocUrl = _ref.domainRestrictionHelpDocUrl,
920
+ _ref$isEdit = _ref.isEdit,
921
+ isEdit = _ref$isEdit === void 0 ? false : _ref$isEdit;
922
+ var _useTranslation = reactI18next.useTranslation(),
923
+ t = _useTranslation.t;
924
+ var _useFormikContext = formik.useFormikContext(),
925
+ values = _useFormikContext.values,
926
+ setValues = _useFormikContext.setValues,
927
+ setErrors = _useFormikContext.setErrors,
928
+ setTouched = _useFormikContext.setTouched;
929
+ var kind = values.kind;
930
+ var questionKinds = isEdit ? allQuestionKinds : availableQuestionKinds;
931
+ var questionKindUniquenessPattern = ramda.mergeLeft(isEdit && additionalQuestionKindPattern ? additionalQuestionKindPattern(values) : {}, {
932
+ type: kind
933
+ });
934
+ var _useStateWithDependen = reactUtils.useStateWithDependency(getQuestionKind(questionKinds, questionKindUniquenessPattern), [kind]),
935
+ _useStateWithDependen2 = _slicedToArray__default["default"](_useStateWithDependen, 1),
936
+ questionKind = _useStateWithDependen2[0];
937
+ var _ref2 = questionKind ? getActiveKindDetails({
938
+ allQuestionKinds: allQuestionKinds,
939
+ item: questionKind
940
+ }) : {},
941
+ _ref2$questionProps = _ref2.questionProps,
942
+ questionProps = _ref2$questionProps === void 0 ? {} : _ref2$questionProps;
943
+ var isRequired = questionKind && isRequiredField(questionKind);
944
+ var isLabelDisabled = questionKind && isDisabledFieldLabel(questionKind);
945
+ var shouldShowPlaceholder = ramda.includes(kind, QUESTIONS_WITH_PLACEHOLDERS);
946
+ var hasAdditionalData = ramda.includes(kind, QUESTIONS_WITH_ADDITIONAL_DATA);
947
+ var shouldShowFieldCode = enableFieldCode && !ramda.includes(kind, constants.QUESTIONS_WITHOUT_FIELD_CODE);
948
+ var shouldShowHideSwitch = !ramda.includes(kind, constants.QUESTIONS_WITHOUT_FIELD_CODE);
949
+ var handleKindChange = function handleKindChange(option) {
950
+ var data = buildQuestionData(option);
951
+ updateFormState(data);
952
+ };
953
+ var buildQuestionData = function buildQuestionData(option) {
954
+ if (ramda.isNil(option)) {
955
+ return INITIAL_VALUES;
956
+ }
957
+ var label = option.label,
958
+ value = option.value;
959
+ var kind = extractKindFromOption(value);
960
+ var questionKind = getQuestionKind(availableQuestionKinds, {
961
+ type: kind,
962
+ label: label
963
+ });
964
+ return createFieldData({
965
+ kind: questionKind,
966
+ isRequired: isRequired,
967
+ questions: questions
968
+ });
969
+ };
970
+ var updateFormState = function updateFormState(data) {
971
+ setValues(data);
972
+ setErrors({});
973
+ setTouched({});
974
+ };
975
+ return /*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Body, {
976
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
977
+ className: "w-full space-y-4",
978
+ children: [/*#__PURE__*/jsxRuntime.jsx(Select__default["default"], {
979
+ isClearable: true,
980
+ isSearchable: true,
981
+ defaultValue: buildDefaultValueForKind(questionKind),
982
+ innerRef: initialFocusRef,
983
+ isDisabled: isEdit,
984
+ name: "kind",
985
+ options: buildKindOptions(questionKinds),
986
+ label: t("neetoForm.questions.common.questionFields.field.questionType"),
987
+ onChange: handleKindChange
988
+ }), isRichTextQuestion(kind) ? /*#__PURE__*/jsxRuntime.jsx(Editor, {
989
+ isLabelDisabled: isLabelDisabled
990
+ }) : /*#__PURE__*/jsxRuntime.jsxs("div", {
991
+ className: "space-y-6",
992
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
993
+ className: "space-y-4",
994
+ children: [/*#__PURE__*/jsxRuntime.jsx(FormikAdaptiveInput, {
995
+ required: true,
996
+ disabled: isLabelDisabled,
997
+ name: "label",
998
+ placeholder: DEFAULT_PLACEHOLDERS[kind],
999
+ label: t("neetoForm.questions.common.questionFields.field.question")
1000
+ }), shouldShowPlaceholder && /*#__PURE__*/jsxRuntime.jsx(FormikAdaptiveInput, {
1001
+ name: "placeholder",
1002
+ label: t("neetoForm.questions.common.questionFields.field.placeholder")
1003
+ }), hasAdditionalData && renderAdditionalData({
1004
+ kind: kind,
1005
+ questionProps: questionProps,
1006
+ domainRestrictionHelpDocUrl: domainRestrictionHelpDocUrl,
1007
+ enableDomainRestriction: enableDomainRestriction
1008
+ })]
1009
+ }), !isRequired && /*#__PURE__*/jsxRuntime.jsxs(Block, {
1010
+ dataCy: "settings-card",
1011
+ title: t("neetoForm.common.settings"),
1012
+ children: [/*#__PURE__*/jsxRuntime.jsx(RequiredSwitch, {}), shouldShowHideSwitch && /*#__PURE__*/jsxRuntime.jsx(Switch__default["default"], {
1013
+ label: t("neetoForm.common.hideQuestion"),
1014
+ name: "isHidden"
1015
+ })]
1016
+ }), shouldShowFieldCode && /*#__PURE__*/jsxRuntime.jsx(FieldCode, {
1017
+ helpDocUrl: fieldCodeHelpDocUrl
1018
+ })]
1019
+ })]
1020
+ })
1021
+ });
1022
+ };
1023
+
1024
+ /* eslint-disable @bigbinary/neeto/file-name-and-export-name-standards */
1025
+ var requiredLabelValidation = function requiredLabelValidation(schema, field) {
1026
+ return schema.trim().required(i18next.t("neetoForm.common.fieldReq", {
1027
+ field: field
1028
+ }));
1029
+ };
1030
+ var richTextFieldMissingErrorMessage = function richTextFieldMissingErrorMessage(kind) {
1031
+ var field = ramda.equals(kind, constants.QUESTION_TYPES.PARAGRAPH) ? i18next.t("neetoForm.fields.def") : i18next.t("neetoForm.fields.tcf");
1032
+ return i18next.t("neetoForm.error.fieldCantBeEmpty", {
1033
+ field: field
1034
+ });
1035
+ };
1036
+ var formValidationSchema = yup__namespace.object().shape({
1037
+ kind: yup__namespace.string().trim().required(i18next.t("neetoForm.common.fieldReq", {
1038
+ field: i18next.t("neetoForm.questions.common.questionFields.field.questionType")
1039
+ })),
1040
+ label: yup__namespace.string().when("kind", function (kind, schema) {
1041
+ return ramda.includes(kind, constants.RICH_TEXT_QUESTIONS) ? schema.test("required", richTextFieldMissingErrorMessage(kind), function (value) {
1042
+ return !utils$1.isEditorEmpty(value);
1043
+ }) : requiredLabelValidation(schema, i18next.t("neetoForm.questions.common.questionFields.field.question"));
1044
+ }),
1045
+ fieldCode: yup__namespace.string().trim().notOneOf(constants.RESERVED_FIELD_CODES, i18next.t("neetoForm.error.invalidFieldCode")).when("kind", function (kind, schema) {
1046
+ return ramda.includes(kind, constants.QUESTIONS_WITHOUT_FIELD_CODE) ? schema.notRequired() : requiredLabelValidation(schema, i18next.t("neetoForm.questions.common.questionFields.field.fieldCode"));
1047
+ }),
1048
+ optionsAttributes: yup__namespace.array().when("_destroy", {
1049
+ is: true,
1050
+ otherwise: function otherwise(schema) {
1051
+ return schema.when("kind", function (kind, schema) {
1052
+ return ramda.includes(kind, constants.SELECTABLE_KINDS) ? schema.of(yup__namespace.object().shape({
1053
+ label: requiredLabelValidation(yup__namespace.string(), i18next.t("neetoForm.questions.common.questionFields.field.option"))
1054
+ })) : schema.notRequired();
1055
+ });
1056
+ }
1057
+ }),
1058
+ highestRatingLabel: yup__namespace.string().nullable(),
1059
+ averageRatingLabel: yup__namespace.string().nullable(),
1060
+ lowestRatingLabel: yup__namespace.string().nullable()
1061
+ });
1062
+
1063
+ var _excluded$6 = ["question", "onClose", "questions", "handleSelect", "buildRequestArgs", "isOpen", "fieldCodeHelpDocUrl", "domainRestrictionHelpDocUrl"];
1064
+ function ownKeys$b(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; }
1065
+ function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1066
+ var Add = function Add(_ref) {
1067
+ var question = _ref.question,
1068
+ onClose = _ref.onClose,
1069
+ questions = _ref.questions,
1070
+ handleSelect = _ref.handleSelect,
1071
+ buildRequestArgs = _ref.buildRequestArgs,
1072
+ isOpen = _ref.isOpen,
1073
+ fieldCodeHelpDocUrl = _ref.fieldCodeHelpDocUrl,
1074
+ domainRestrictionHelpDocUrl = _ref.domainRestrictionHelpDocUrl,
1075
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$6);
1076
+ var _useBuildFormStore = buildForm.useBuildFormStore(function (store) {
1077
+ var _store$formState, _store$formState2;
1078
+ return {
1079
+ formId: (_store$formState = store["formState"]) === null || _store$formState === void 0 ? void 0 : _store$formState["formId"],
1080
+ selectedLanguage: (_store$formState2 = store["formState"]) === null || _store$formState2 === void 0 ? void 0 : _store$formState2["selectedLanguage"]
1081
+ };
1082
+ }, shallow.shallow),
1083
+ formId = _useBuildFormStore.formId,
1084
+ language = _useBuildFormStore.selectedLanguage;
1085
+ var _useTranslation = reactI18next.useTranslation(),
1086
+ t = _useTranslation.t;
1087
+ var _useCreateQuestion = useFormApi.useCreateQuestion(formId, language, {
1088
+ onSuccess: function onSuccess() {
1089
+ utils.showThumbsUpToastr();
1090
+ onClose();
1091
+ }
1092
+ }),
1093
+ createQuestion = _useCreateQuestion.mutate,
1094
+ isCreating = _useCreateQuestion.isPending;
1095
+ var handleSubmit = function handleSubmit(values) {
1096
+ if (isCreating || !isOpen) return;
1097
+ var displayOrder = question ? question.displayOrder + 1 : questions.length;
1098
+ createQuestion(_objectSpread$b({
1099
+ language: language,
1100
+ neetoFormQuestion: ramda.mergeLeft({
1101
+ displayOrder: displayOrder
1102
+ }, values)
1103
+ }, buildRequestArgs), {
1104
+ onSuccess: function onSuccess(_ref2) {
1105
+ var questions = _ref2.questions;
1106
+ var newQuestion = neetoCist.findBy({
1107
+ displayOrder: displayOrder
1108
+ }, questions);
1109
+ handleSelect(newQuestion);
1110
+ }
1111
+ });
1112
+ };
1113
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1114
+ children: [/*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Header, {
1115
+ children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1116
+ "data-cy": "add-question-pane-header",
1117
+ style: "h2",
1118
+ children: t("neetoForm.questions.common.primaryPanel.addQuestion")
1119
+ })
1120
+ }), /*#__PURE__*/jsxRuntime.jsx(Form__default["default"], {
1121
+ formikProps: {
1122
+ initialValues: INITIAL_VALUES,
1123
+ validationSchema: formValidationSchema,
1124
+ onSubmit: handleSubmit
1125
+ },
1126
+ children: /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1127
+ children: [/*#__PURE__*/jsxRuntime.jsx(Form$1, _objectSpread$b({}, _objectSpread$b(_objectSpread$b({}, props), {}, {
1128
+ domainRestrictionHelpDocUrl: domainRestrictionHelpDocUrl,
1129
+ fieldCodeHelpDocUrl: fieldCodeHelpDocUrl,
1130
+ question: question,
1131
+ questions: questions
1132
+ }))), /*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Footer, {
1133
+ children: /*#__PURE__*/jsxRuntime.jsx(ActionBlock__default["default"], {
1134
+ cancelButtonProps: {
1135
+ onClick: onClose
1136
+ },
1137
+ isSubmitting: isCreating
1138
+ })
1139
+ })]
1140
+ })
1141
+ })]
1142
+ });
1143
+ };
1144
+
1145
+ var _excluded$5 = ["question", "isOpen", "onClose", "fieldCodeHelpDocUrl", "domainRestrictionHelpDocUrl"];
1146
+ function ownKeys$a(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; }
1147
+ function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1148
+ var Edit = function Edit(_ref) {
1149
+ var question = _ref.question,
1150
+ isOpen = _ref.isOpen,
1151
+ onClose = _ref.onClose,
1152
+ fieldCodeHelpDocUrl = _ref.fieldCodeHelpDocUrl,
1153
+ domainRestrictionHelpDocUrl = _ref.domainRestrictionHelpDocUrl,
1154
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$5);
1155
+ var _useTranslation = reactI18next.useTranslation(),
1156
+ t = _useTranslation.t;
1157
+ var _useBuildFormStore = buildForm.useBuildFormStore(function (store) {
1158
+ var _store$formState;
1159
+ return {
1160
+ selectedLanguage: (_store$formState = store["formState"]) === null || _store$formState === void 0 ? void 0 : _store$formState["selectedLanguage"]
1161
+ };
1162
+ }, shallow.shallow),
1163
+ language = _useBuildFormStore.selectedLanguage;
1164
+ var _useUpdateQuestion = useFormApi.useUpdateQuestion(question === null || question === void 0 ? void 0 : question.formId, language),
1165
+ updateQuestion = _useUpdateQuestion.mutate,
1166
+ isUpdating = _useUpdateQuestion.isPending;
1167
+ var handleSubmit = function handleSubmit(values, _ref2) {
1168
+ var setSubmitting = _ref2.setSubmitting;
1169
+ if (isUpdating || !isOpen) return;
1170
+ var payload = {
1171
+ language: language,
1172
+ neetoFormQuestion: values
1173
+ };
1174
+ updateQuestion({
1175
+ questionId: question.id,
1176
+ payload: payload
1177
+ }, {
1178
+ onSuccess: function onSuccess() {
1179
+ utils.showThumbsUpToastr();
1180
+ onClose();
1181
+ },
1182
+ onSettled: function onSettled() {
1183
+ return setSubmitting(false);
1184
+ }
1185
+ });
1186
+ };
1187
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1188
+ children: [/*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Header, {
1189
+ children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1190
+ "data-cy": "edit-question-pane-header",
1191
+ style: "h2",
1192
+ children: t("neetoForm.questions.common.editQuestion")
1193
+ })
1194
+ }), /*#__PURE__*/jsxRuntime.jsx(Form__default["default"], {
1195
+ formikProps: {
1196
+ initialValues: question,
1197
+ validationSchema: formValidationSchema,
1198
+ onSubmit: handleSubmit
1199
+ },
1200
+ children: /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1201
+ children: [/*#__PURE__*/jsxRuntime.jsx(Form$1, _objectSpread$a(_objectSpread$a({}, _objectSpread$a({
1202
+ domainRestrictionHelpDocUrl: domainRestrictionHelpDocUrl,
1203
+ fieldCodeHelpDocUrl: fieldCodeHelpDocUrl,
1204
+ question: question
1205
+ }, props)), {}, {
1206
+ isEdit: true
1207
+ })), /*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Footer, {
1208
+ children: /*#__PURE__*/jsxRuntime.jsx(ActionBlock__default["default"], {
1209
+ cancelButtonProps: {
1210
+ onClick: onClose
1211
+ },
1212
+ isSubmitting: isUpdating
1213
+ })
1214
+ })]
1215
+ })
1216
+ })]
1217
+ });
1218
+ };
1219
+
1220
+ var Captcha = reactUtils.withT(function (_ref) {
1221
+ var t = _ref.t;
1222
+ return /*#__PURE__*/jsxRuntime.jsxs(Radio__default["default"], {
1223
+ label: t("neetoForm.common.captchaType"),
1224
+ labelProps: {
1225
+ required: true
1226
+ },
1227
+ name: "variant",
1228
+ children: [/*#__PURE__*/jsxRuntime.jsx(Radio__default["default"].Item, {
1229
+ label: t("neetoForm.common.reCaptchaV2"),
1230
+ value: constants.CAPTCHA_TYPES.RECAPTCHA_V2
1231
+ }), /*#__PURE__*/jsxRuntime.jsx(Radio__default["default"].Item, {
1232
+ label: t("neetoForm.common.mathCaptcha"),
1233
+ value: constants.CAPTCHA_TYPES.MATH_CAPTCHA
1234
+ })]
1235
+ });
1236
+ });
1237
+
1238
+ var _excluded$4 = ["name", "title", "className"];
1239
+ function ownKeys$9(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; }
1240
+ function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1241
+ var SwitchBlock = function SwitchBlock(_ref) {
1242
+ var name = _ref.name,
1243
+ title = _ref.title,
1244
+ _ref$className = _ref.className,
1245
+ className = _ref$className === void 0 ? "" : _ref$className,
1246
+ otherProps = _objectWithoutProperties__default["default"](_ref, _excluded$4);
1247
+ return /*#__PURE__*/jsxRuntime.jsxs(Label__default["default"], {
1248
+ className: classnames__default["default"]("flex items-center justify-start gap-2 ", className),
1249
+ "data-cy": "neeto-form-engine-".concat(neetoCist.hyphenate(title), "-toggle-label"),
1250
+ children: [/*#__PURE__*/jsxRuntime.jsx(Switch__default["default"], _objectSpread$9(_objectSpread$9({}, _objectSpread$9(_objectSpread$9({}, otherProps), {}, {
1251
+ name: name
1252
+ })), {}, {
1253
+ "data-cy": "neeto-form-engine-".concat(neetoCist.hyphenate(title), "-switch")
1254
+ })), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1255
+ component: "span",
1256
+ style: "body1",
1257
+ children: title
1258
+ })]
1259
+ });
1260
+ };
1261
+
1262
+ var _excluded$3 = ["children"];
1263
+ function ownKeys$8(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; }
1264
+ function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1265
+ var STYLES = {
1266
+ border: {
1267
+ "default": "1px solid rgb(var(--neeto-ui-gray-400))",
1268
+ error: "1px solid rgb(var(--neeto-ui-error-800)) !important"
1269
+ },
1270
+ color: {
1271
+ "default": "rgb(var(--neeto-ui-gray-800))",
1272
+ error: "rgb(var(--neeto-ui-error-800)) !important"
1273
+ }
1274
+ };
1275
+ var MultiValueRemove = function MultiValueRemove(props) {
1276
+ return /*#__PURE__*/jsxRuntime.jsx(reactSelect.components.MultiValueRemove, _objectSpread$8(_objectSpread$8({}, props), {}, {
1277
+ innerProps: _objectSpread$8(_objectSpread$8({}, props.innerProps), {}, _defineProperty__default["default"]({}, "data-cy", "".concat(utils.hyphenize(props.data.label), "-remove-icon"))),
1278
+ children: /*#__PURE__*/jsxRuntime.jsx(Close__default["default"], {
1279
+ size: 16
1280
+ })
1281
+ }));
1282
+ };
1283
+ var ValueContainer = function ValueContainer(_ref) {
1284
+ var children = _ref.children,
1285
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$3);
1286
+ var _useTranslation = reactI18next.useTranslation(),
1287
+ t = _useTranslation.t;
1288
+ var getValue = props.getValue,
1289
+ _props$selectProps = props.selectProps,
1290
+ isFocused = _props$selectProps.isFocused,
1291
+ visibleDomainsCount = _props$selectProps.visibleDomainsCount;
1292
+ var value = getValue();
1293
+ var _children = _toArray__default["default"](children),
1294
+ firstChild = _children[0],
1295
+ rest = _children.slice(1);
1296
+ var shouldCollapse = !isFocused && value.length > visibleDomainsCount;
1297
+ return /*#__PURE__*/jsxRuntime.jsxs(reactSelect.components.ValueContainer, _objectSpread$8(_objectSpread$8({}, props), {}, {
1298
+ innerProps: _objectSpread$8(_objectSpread$8({}, props.innerProps), {}, _defineProperty__default["default"]({}, "data-cy", "multi-domain-input-container")),
1299
+ children: [shouldCollapse ? firstChild.slice(0, visibleDomainsCount) : firstChild, shouldCollapse && /*#__PURE__*/jsxRuntime.jsx(Tag__default["default"], {
1300
+ style: "secondary",
1301
+ label: t("neetoForm.common.remainingItemsCount", {
1302
+ count: value.length - visibleDomainsCount
1303
+ })
1304
+ }), rest]
1305
+ }));
1306
+ };
1307
+ var ClearIndicator = function ClearIndicator(props) {
1308
+ return /*#__PURE__*/jsxRuntime.jsx(reactSelect.components.ClearIndicator, _objectSpread$8(_objectSpread$8({}, props), {}, {
1309
+ innerProps: _objectSpread$8(_objectSpread$8({}, props.innerProps), {}, _defineProperty__default["default"]({}, "data-cy", "clear-all-button")),
1310
+ children: /*#__PURE__*/jsxRuntime.jsx(Close__default["default"], {
1311
+ className: "cursor-pointer",
1312
+ size: 16
1313
+ })
1314
+ }));
1315
+ };
1316
+ var ERROR_MESSAGE_DELIMITER = ". ";
1317
+ var DELIMITER_KEYS = ["Enter", "Tab", ",", " "];
1318
+ var DOMAIN_SEPARATION_REGEX = /[^\s,]+/g;
1319
+ var FLEXIBLE_DOMAIN_REGEX = /^[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/;
1320
+ var VALID_DOMAIN_REGEX = /^(?:[a-zA-Z0-9-]{1,63}\.)+[a-zA-Z0-9-]{2,63}$/;
1321
+ var DOMAIN_VALIDATION_SCHEMA = yup__namespace.string().required(i18next.t("neetoForm.error.requiredField", {
1322
+ label: i18next.t("neetoForm.common.domain")
1323
+ })).test("verify domains", i18next.t("neetoForm.error.invalidDomain"), function (domain) {
1324
+ return VALID_DOMAIN_REGEX.test(domain);
1325
+ });
1326
+ var CUSTOM_STYLES = {
1327
+ input: ramda.assoc("overflow", "hidden"),
1328
+ multiValue: function multiValue(styles, _ref2) {
1329
+ var valid = _ref2.data.valid;
1330
+ return _objectSpread$8(_objectSpread$8({}, styles), {}, {
1331
+ border: valid ? STYLES.border["default"] : STYLES.border.error,
1332
+ color: valid ? STYLES.color["default"] : STYLES.color.error
1333
+ });
1334
+ }
1335
+ };
1336
+ var CUSTOM_COMPONENTS = {
1337
+ DropdownIndicator: null,
1338
+ MultiValueRemove: MultiValueRemove,
1339
+ ValueContainer: ValueContainer,
1340
+ ClearIndicator: ClearIndicator
1341
+ };
1342
+
1343
+ var removeDuplicateErrorMessages = ramda.pipe(ramda.filter(ramda.isNotNil), ramda.uniq, ramda.join(ERROR_MESSAGE_DELIMITER));
1344
+ var formatDomainInputOptions = function formatDomainInputOptions(domain) {
1345
+ var isValid;
1346
+ try {
1347
+ DOMAIN_VALIDATION_SCHEMA.validateSync(domain);
1348
+ isValid = true;
1349
+ } catch (_unused) {
1350
+ isValid = false;
1351
+ }
1352
+ return {
1353
+ label: domain,
1354
+ value: domain,
1355
+ valid: isValid
1356
+ };
1357
+ };
1358
+ var pruneDuplicates = ramda.pipe(ramda.pluck("value"), ramda.uniq, ramda.map(formatDomainInputOptions));
1359
+ var getValidDomains = function getValidDomains(domains) {
1360
+ return domains.filter(function (domain) {
1361
+ return domain === null || domain === void 0 ? void 0 : domain.valid;
1362
+ });
1363
+ };
1364
+ var getValidDomainsCount = function getValidDomainsCount(domains) {
1365
+ return getValidDomains(domains).length;
1366
+ };
1367
+ var formatErrorMessage = function formatErrorMessage(error) {
1368
+ if (typeof error === "string") return error;
1369
+ return removeDuplicateErrorMessages(error);
1370
+ };
1371
+
1372
+ var _excluded$2 = ["label", "value", "onChange", "error", "onBlur"];
1373
+ function ownKeys$7(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; }
1374
+ function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1375
+ var MultiDomainInput = function MultiDomainInput(_ref) {
1376
+ var _ref$label = _ref.label,
1377
+ label = _ref$label === void 0 ? "" : _ref$label,
1378
+ _ref$value = _ref.value,
1379
+ value = _ref$value === void 0 ? [] : _ref$value,
1380
+ _ref$onChange = _ref.onChange,
1381
+ onChange = _ref$onChange === void 0 ? neetoCist.noop : _ref$onChange,
1382
+ _ref$error = _ref.error,
1383
+ error = _ref$error === void 0 ? "" : _ref$error,
1384
+ _ref$onBlur = _ref.onBlur,
1385
+ onBlur = _ref$onBlur === void 0 ? neetoCist.noop : _ref$onBlur,
1386
+ otherProps = _objectWithoutProperties__default["default"](_ref, _excluded$2);
1387
+ var _useState = React.useState(""),
1388
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
1389
+ inputValue = _useState2[0],
1390
+ setInputValue = _useState2[1];
1391
+ var _useState3 = React.useState(false),
1392
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
1393
+ isFocused = _useState4[0],
1394
+ setIsFocused = _useState4[1];
1395
+ var _useTranslation = reactI18next.useTranslation(),
1396
+ t = _useTranslation.t;
1397
+ var handleFilterDomains = function handleFilterDomains() {
1398
+ return onChange(getValidDomains(value));
1399
+ };
1400
+ var handleDomainChange = function handleDomainChange() {
1401
+ var inputValues = inputValue.match(DOMAIN_SEPARATION_REGEX) || [];
1402
+ var domainMatches = ramda.filter(ramda.test(FLEXIBLE_DOMAIN_REGEX), inputValues);
1403
+ var domains = domainMatches.map(formatDomainInputOptions);
1404
+ onChange(pruneDuplicates([].concat(_toConsumableArray__default["default"](value), _toConsumableArray__default["default"](domains))));
1405
+ setInputValue("");
1406
+ };
1407
+ var handleKeyDown = function handleKeyDown(event) {
1408
+ if (!inputValue) return;
1409
+ if (ramda.includes(event.key, DELIMITER_KEYS)) {
1410
+ handleDomainChange();
1411
+ event.preventDefault();
1412
+ event.stopPropagation();
1413
+ }
1414
+ };
1415
+ var onCreateOption = function onCreateOption(input) {
1416
+ var domain = formatDomainInputOptions(input);
1417
+ onChange(pruneDuplicates([].concat(_toConsumableArray__default["default"](value), [domain])));
1418
+ };
1419
+ var handleBlur = function handleBlur(event) {
1420
+ inputValue ? handleDomainChange() : onBlur(event);
1421
+ setIsFocused(false);
1422
+ };
1423
+ var isFilterDomainsLinkVisible = value.length > getValidDomainsCount(value);
1424
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
1425
+ className: "neeto-ui-input__wrapper neeto-ui-email-input__wrapper",
1426
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
1427
+ className: "neeto-ui-email-input__label-wrapper",
1428
+ children: /*#__PURE__*/jsxRuntime.jsx(Label__default["default"], {
1429
+ className: "neeto-ui-email-input__label",
1430
+ "data-cy": "".concat(utils.hyphenize(label), "-input-label"),
1431
+ children: label
1432
+ })
1433
+ }), /*#__PURE__*/jsxRuntime.jsx(CreatableSelect__default["default"], _objectSpread$7({
1434
+ isMulti: true,
1435
+ required: true,
1436
+ classNamePrefix: "neeto-ui-react-select",
1437
+ components: CUSTOM_COMPONENTS,
1438
+ menuIsOpen: false,
1439
+ visibleDomainsCount: 3,
1440
+ className: classnames__default["default"]("neeto-ui-react-select__container neeto-ui-react-select__container--medium neeto-ui-email-input__select", {
1441
+ "neeto-ui-react-select__container--error": !!error
1442
+ }),
1443
+ styles: _objectSpread$7(_objectSpread$7({}, CUSTOM_STYLES), {}, {
1444
+ control: ramda.mergeLeft({
1445
+ maxHeight: "200px",
1446
+ overflowY: "auto"
1447
+ })
1448
+ }),
1449
+ onBlur: handleBlur,
1450
+ onFocus: function onFocus() {
1451
+ return setIsFocused(true);
1452
+ },
1453
+ onInputChange: setInputValue,
1454
+ onKeyDown: handleKeyDown
1455
+ }, _objectSpread$7({
1456
+ inputValue: inputValue,
1457
+ isFocused: isFocused,
1458
+ onChange: onChange,
1459
+ onCreateOption: onCreateOption,
1460
+ value: value
1461
+ }, otherProps))), !!error && /*#__PURE__*/jsxRuntime.jsxs("p", {
1462
+ className: "neeto-ui-input__error",
1463
+ "data-cy": "".concat(utils.hyphenize(label), "-input-error"),
1464
+ children: [formatErrorMessage(error), isFilterDomainsLinkVisible && /*#__PURE__*/jsxRuntime.jsxs("span", {
1465
+ className: "neeto-ui-font-semibold cursor-pointer",
1466
+ onClick: handleFilterDomains,
1467
+ children: [ERROR_MESSAGE_DELIMITER, t("neetoForm.domainRestriction.removeInvalidDomains")]
1468
+ })]
1469
+ }), /*#__PURE__*/jsxRuntime.jsx("p", {
1470
+ className: "neeto-ui-input__help-text",
1471
+ "data-cy": "".concat(utils.hyphenize(label), "-input-help"),
1472
+ children: t("neetoForm.domainRestriction.helpText")
1473
+ })]
1474
+ });
1475
+ };
1476
+
1477
+ var validateDomains = function validateDomains(value) {
1478
+ var schema = yup__namespace.array().of(yup__namespace.string().test("verify domains", i18next.t("neetoForm.error.invalidDomain"), function (domain) {
1479
+ return VALID_DOMAIN_REGEX.test(domain);
1480
+ })).ensure().compact().min(1, i18next.t("neetoForm.error.minOneEntity", {
1481
+ entity: i18next.t("neetoForm.common.domain")
1482
+ }));
1483
+
1484
+ // eslint-disable-next-line no-async-promise-executor
1485
+ return new Promise( /*#__PURE__*/function () {
1486
+ var _ref = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(resolve) {
1487
+ return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
1488
+ while (1) switch (_context.prev = _context.next) {
1489
+ case 0:
1490
+ _context.prev = 0;
1491
+ _context.next = 3;
1492
+ return schema.validate(value);
1493
+ case 3:
1494
+ resolve(undefined);
1495
+ _context.next = 9;
1496
+ break;
1497
+ case 6:
1498
+ _context.prev = 6;
1499
+ _context.t0 = _context["catch"](0);
1500
+ resolve(_context.t0.message);
1501
+ case 9:
1502
+ case "end":
1503
+ return _context.stop();
1504
+ }
1505
+ }, _callee, null, [[0, 6]]);
1506
+ }));
1507
+ return function (_x) {
1508
+ return _ref.apply(this, arguments);
1509
+ };
1510
+ }());
1511
+ };
1512
+
1513
+ var RestrictedDomains = function RestrictedDomains() {
1514
+ var _useField = formik.useField({
1515
+ name: "restrictedDomains",
1516
+ validate: validateDomains
1517
+ }),
1518
+ _useField2 = _slicedToArray__default["default"](_useField, 3),
1519
+ _useField2$0$value = _useField2[0].value,
1520
+ domains = _useField2$0$value === void 0 ? [] : _useField2$0$value,
1521
+ meta = _useField2[1],
1522
+ _useField2$ = _useField2[2],
1523
+ setValue = _useField2$.setValue,
1524
+ setTouched = _useField2$.setTouched;
1525
+ var _useTranslation = reactI18next.useTranslation(),
1526
+ t = _useTranslation.t;
1527
+ var formattedDomains = ramda.map(formatDomainInputOptions, domains);
1528
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
1529
+ className: "mb-4",
1530
+ children: /*#__PURE__*/jsxRuntime.jsx(MultiDomainInput, {
1531
+ error: meta.touched ? meta.error : "",
1532
+ label: t("neetoForm.domainRestriction.description"),
1533
+ name: "restrictedDomains",
1534
+ value: formattedDomains,
1535
+ onBlur: function onBlur() {
1536
+ return setTouched(true);
1537
+ },
1538
+ onChange: function onChange(value) {
1539
+ return setValue(neetoCist.nullSafe(ramda.pluck)("value", value));
1540
+ }
1541
+ })
1542
+ });
1543
+ };
1544
+
1545
+ function ownKeys$6(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; }
1546
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1547
+ var Email = function Email(_ref) {
1548
+ var _ref$domainRestrictio = _ref.domainRestrictionHelpDocUrl,
1549
+ domainRestrictionHelpDocUrl = _ref$domainRestrictio === void 0 ? "" : _ref$domainRestrictio;
1550
+ var _useFormikContext = formik.useFormikContext(),
1551
+ _useFormikContext$val = _useFormikContext.values.isDomainRestrictionEnabled,
1552
+ isDomainRestrictionEnabled = _useFormikContext$val === void 0 ? false : _useFormikContext$val;
1553
+ var _useTranslation = reactI18next.useTranslation(),
1554
+ t = _useTranslation.t;
1555
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
1556
+ className: "flex flex-col space-y-4",
1557
+ children: [/*#__PURE__*/jsxRuntime.jsx(SwitchBlock, {
1558
+ className: "mt-4",
1559
+ name: "isDomainRestrictionEnabled",
1560
+ title: /*#__PURE__*/jsxRuntime.jsxs("div", {
1561
+ className: "flex gap-2",
1562
+ children: [t("neetoForm.domainRestriction.label"), /*#__PURE__*/jsxRuntime.jsx(HelpPopover__default["default"], _objectSpread$6({
1563
+ description: t("neetoForm.domainRestriction.popoverDescription"),
1564
+ popoverProps: {
1565
+ position: "top"
1566
+ }
1567
+ }, domainRestrictionHelpDocUrl && {
1568
+ helpLinkProps: {
1569
+ href: domainRestrictionHelpDocUrl
1570
+ }
1571
+ }))]
1572
+ })
1573
+ }), isDomainRestrictionEnabled && /*#__PURE__*/jsxRuntime.jsx(RestrictedDomains, {})]
1574
+ });
1575
+ };
1576
+
1577
+ var FileGroup = function FileGroup(_ref) {
1578
+ var name = _ref.name,
1579
+ label = _ref.label,
1580
+ checked = _ref.checked,
1581
+ handleAllowedFileTypesChange = _ref.handleAllowedFileTypesChange;
1582
+ return /*#__PURE__*/jsxRuntime.jsx(Checkbox__default["default"], {
1583
+ checked: checked,
1584
+ label: label,
1585
+ name: name,
1586
+ "data-cy": "neeto-form-engine-file-type-".concat(name),
1587
+ id: name,
1588
+ onChange: handleAllowedFileTypesChange
1589
+ });
1590
+ };
1591
+
1592
+ var buildFileTypesList = function buildFileTypesList(fileTypes) {
1593
+ return (fileTypes !== null && fileTypes !== void 0 ? fileTypes : "").split(", ");
1594
+ };
1595
+ var getAllowedFileTypes = function getAllowedFileTypes(_ref) {
1596
+ var type = _ref.type,
1597
+ isChecked = _ref.isChecked,
1598
+ allowedFileTypes = _ref.allowedFileTypes;
1599
+ var fileTypes = buildFileTypesList(allowedFileTypes);
1600
+ if (isChecked) {
1601
+ var fileTypesSet = new Set([].concat(_toConsumableArray__default["default"](constants.FILE_TYPES_MAP[type]), _toConsumableArray__default["default"](fileTypes)));
1602
+ return Array.from(fileTypesSet).join(", ");
1603
+ }
1604
+ var newFileTypes = ramda.difference(fileTypes, constants.FILE_TYPES_MAP[type]);
1605
+ return newFileTypes.join(", ");
1606
+ };
1607
+ var isFileTypeEnabled = function isFileTypeEnabled(type, allowedFileTypes) {
1608
+ var fileTypes = buildFileTypesList(allowedFileTypes);
1609
+ return ramda.isEmpty(ramda.difference(constants.FILE_TYPES_MAP[type], fileTypes));
1610
+ };
1611
+
1612
+ var FileUpload = function FileUpload() {
1613
+ var _useTranslation = reactI18next.useTranslation(),
1614
+ t = _useTranslation.t;
1615
+ var _useFormikContext = formik.useFormikContext(),
1616
+ values = _useFormikContext.values,
1617
+ setFieldValue = _useFormikContext.setFieldValue;
1618
+ var allowedFileTypes = ramda.prop("allowedFileTypes", values);
1619
+ var handleAllowedFileTypesChange = function handleAllowedFileTypesChange(_ref) {
1620
+ var _ref$target = _ref.target,
1621
+ fileType = _ref$target.name,
1622
+ checked = _ref$target.checked;
1623
+ return setFieldValue("allowedFileTypes", getAllowedFileTypes({
1624
+ type: fileType,
1625
+ isChecked: checked,
1626
+ allowedFileTypes: allowedFileTypes
1627
+ }));
1628
+ };
1629
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1630
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
1631
+ className: "w-full",
1632
+ children: /*#__PURE__*/jsxRuntime.jsx(Checkbox__default$1["default"], {
1633
+ id: "multipleFilesAllowed",
1634
+ label: t("neetoForm.fileUpload.enableMultipleFilesUpload"),
1635
+ name: "multipleFilesAllowed"
1636
+ })
1637
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
1638
+ className: "flex flex-col space-y-3",
1639
+ children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1640
+ style: "body1",
1641
+ weight: "semibold",
1642
+ children: t("neetoForm.fileUpload.fileTypes")
1643
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
1644
+ className: "flex space-x-4",
1645
+ children: constants.FILE_GROUPS.map(function (_ref2) {
1646
+ var name = _ref2.name,
1647
+ label = _ref2.label;
1648
+ return /*#__PURE__*/React.createElement(FileGroup, {
1649
+ handleAllowedFileTypesChange: handleAllowedFileTypesChange,
1650
+ label: label,
1651
+ name: name,
1652
+ checked: isFileTypeEnabled(name, allowedFileTypes),
1653
+ key: name
1654
+ });
1655
+ })
1656
+ })]
1657
+ })]
1658
+ });
1659
+ };
1660
+
1661
+ function ownKeys$5(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; }
1662
+ function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1663
+ var defaultConfig = {
1664
+ strict: true,
1665
+ matchKey: "value"
1666
+ };
1667
+ var findOptionByValue = function findOptionByValue(value) {
1668
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1669
+ var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
1670
+ var configObject = _objectSpread$5(_objectSpread$5({}, defaultConfig), config);
1671
+ var matchKey = configObject.matchKey,
1672
+ strict = configObject.strict;
1673
+ return options.find(function (option) {
1674
+ return (
1675
+ // eslint-disable-next-line eqeqeq
1676
+ strict ? option[matchKey] === value : option[matchKey] == value
1677
+ );
1678
+ });
1679
+ };
1680
+ var filterOptionsByValues = function filterOptionsByValues() {
1681
+ var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
1682
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1683
+ var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
1684
+ var configObject = _objectSpread$5(_objectSpread$5({}, defaultConfig), config);
1685
+ var matchKey = configObject.matchKey,
1686
+ strict = configObject.strict;
1687
+ return options.filter(function (option) {
1688
+ return values.some(function (value) {
1689
+ return (
1690
+ // eslint-disable-next-line eqeqeq
1691
+ strict ? option[matchKey] === value : option[matchKey] == value
1692
+ );
1693
+ });
1694
+ });
1695
+ };
1696
+ var destroyFromList = function destroyFromList(items, index) {
1697
+ var itemToRemove = items[index];
1698
+ if (itemToRemove) {
1699
+ var nextItems = _toConsumableArray__default["default"](items);
1700
+ nextItems.splice(index, 1);
1701
+ if (itemToRemove.id) {
1702
+ nextItems.push(_objectSpread$5(_objectSpread$5({}, itemToRemove), {}, {
1703
+ _destroy: true
1704
+ }));
1705
+ }
1706
+ return nextItems;
1707
+ }
1708
+ return items;
1709
+ };
1710
+ var insertToList = function insertToList(items, item, index) {
1711
+ var nextItems = _toConsumableArray__default["default"](items !== null && items !== void 0 ? items : []);
1712
+ nextItems.splice(index, 0, item);
1713
+ return nextItems;
1714
+ };
1715
+ var pushToList = function pushToList(items, item) {
1716
+ var nextItems = _toConsumableArray__default["default"](items !== null && items !== void 0 ? items : []);
1717
+ nextItems.push(item);
1718
+ return nextItems;
1719
+ };
1720
+ var formHelpers = {
1721
+ findOptionByValue: findOptionByValue,
1722
+ filterOptionsByValues: filterOptionsByValues,
1723
+ destroyFromList: destroyFromList,
1724
+ insertToList: insertToList,
1725
+ pushToList: pushToList
1726
+ };
1727
+
1728
+ function ownKeys$4(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; }
1729
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1730
+ var Options = function Options(_ref) {
1731
+ var questionProps = _ref.questionProps;
1732
+ var _useTranslation = reactI18next.useTranslation(),
1733
+ t = _useTranslation.t;
1734
+ var _useBuildFormStore = buildForm.useBuildFormStore(function (store) {
1735
+ var _store$formState;
1736
+ return {
1737
+ selectedLanguage: (_store$formState = store["formState"]) === null || _store$formState === void 0 ? void 0 : _store$formState["selectedLanguage"]
1738
+ };
1739
+ }, shallow.shallow),
1740
+ selectedLanguage = _useBuildFormStore.selectedLanguage;
1741
+ var _useField = formik.useField("optionsAttributes"),
1742
+ _useField2 = _slicedToArray__default["default"](_useField, 3),
1743
+ optionsAttributes = _useField2[0].value;
1744
+ _useField2[1];
1745
+ var setOptionsAttributes = _useField2[2].setValue;
1746
+ var _ref2 = questionProps || {},
1747
+ _ref2$optionLabelProp = _ref2.optionLabelProps,
1748
+ optionLabelProps = _ref2$optionLabelProp === void 0 ? {} : _ref2$optionLabelProp,
1749
+ _ref2$freezeOptions = _ref2.freezeOptions,
1750
+ freezeOptions = _ref2$freezeOptions === void 0 ? false : _ref2$freezeOptions,
1751
+ _ref2$disableAddOptio = _ref2.disableAddOption,
1752
+ disableAddOption = _ref2$disableAddOptio === void 0 ? false : _ref2$disableAddOptio,
1753
+ _ref2$disableRemoveOp = _ref2.disableRemoveOption,
1754
+ disableRemoveOption = _ref2$disableRemoveOp === void 0 ? false : _ref2$disableRemoveOp;
1755
+ var handleRemoveOption = function handleRemoveOption(index) {
1756
+ var nextOptions = formHelpers.destroyFromList(optionsAttributes, index);
1757
+ setOptionsAttributes(nextOptions);
1758
+ };
1759
+ var isManageOptionDisabled = index.isFunction(freezeOptions) ? freezeOptions(selectedLanguage) : freezeOptions;
1760
+ var isAddOptionDisabled = disableAddOption || isManageOptionDisabled;
1761
+ var isRemoveOptionDisabled = disableRemoveOption || isManageOptionDisabled;
1762
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
1763
+ className: "w-full",
1764
+ children: /*#__PURE__*/jsxRuntime.jsx(formik.FieldArray, {
1765
+ name: "optionsAttributes",
1766
+ children: function children(_ref3) {
1767
+ var handlePush = _ref3.handlePush;
1768
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1769
+ children: [/*#__PURE__*/jsxRuntime.jsx(Label__default["default"], _objectSpread$4(_objectSpread$4({
1770
+ className: "mb-1 block"
1771
+ }, optionLabelProps), {}, {
1772
+ children: t("neetoForm.questions.common.questionFields.field.options")
1773
+ })), /*#__PURE__*/jsxRuntime.jsx("div", {
1774
+ className: "flex w-2/3 flex-col space-y-2",
1775
+ children: optionsAttributes === null || optionsAttributes === void 0 ? void 0 : optionsAttributes.map(function (option, index) {
1776
+ var _option$id;
1777
+ return !option._destroy && /*#__PURE__*/jsxRuntime.jsxs("div", {
1778
+ className: "flex items-start gap-1",
1779
+ "data-cy": "neeto-form-engine-option-".concat(index),
1780
+ children: [/*#__PURE__*/jsxRuntime.jsx(InputWithMaxLength, {
1781
+ required: true,
1782
+ disabled: isManageOptionDisabled,
1783
+ name: "optionsAttributes.".concat(index, ".label"),
1784
+ placeholder: t("neetoForm.questions.common.questionFields.field.numberedOption", {
1785
+ number: index + 1
1786
+ })
1787
+ }), !isRemoveOptionDisabled && /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
1788
+ "data-cy": "neeto-form-engine-delete-option-button",
1789
+ icon: Delete__default["default"],
1790
+ size: "small",
1791
+ style: "text",
1792
+ className: classnames__default["default"]({
1793
+ invisible: index < constants.MINIMUM_OPTIONS
1794
+ }),
1795
+ tooltipProps: {
1796
+ position: "top",
1797
+ content: t("neetoForm.common.delete")
1798
+ },
1799
+ onClick: function onClick() {
1800
+ return handleRemoveOption(index);
1801
+ }
1802
+ })]
1803
+ }, "question-option-".concat((_option$id = option.id) !== null && _option$id !== void 0 ? _option$id : index));
1804
+ })
1805
+ }), !isAddOptionDisabled && /*#__PURE__*/jsxRuntime.jsx("div", {
1806
+ className: "mt-3 w-full",
1807
+ children: /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
1808
+ "data-cy": "neeto-form-engine-add-option-button",
1809
+ icon: Plus__default["default"],
1810
+ iconPosition: "left",
1811
+ size: "small",
1812
+ style: "text",
1813
+ label: t("neetoForm.questions.common.questionFields.field.addOption"),
1814
+ onClick: handlePush({
1815
+ label: ""
1816
+ })
1817
+ })
1818
+ })]
1819
+ });
1820
+ }
1821
+ })
1822
+ });
1823
+ };
1824
+
1825
+ var RatingItem = function RatingItem(_ref) {
1826
+ var children = _ref.children;
1827
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
1828
+ className: "flex w-16 flex-col items-center gap-3",
1829
+ children: children
1830
+ });
1831
+ };
1832
+ var Rating = function Rating() {
1833
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
1834
+ className: "flex flex-col",
1835
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
1836
+ className: "w-full",
1837
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
1838
+ className: "flex gap-6",
1839
+ children: constants.RATING_OPTIONS.map(function (_ref2) {
1840
+ var Icon = _ref2.icon,
1841
+ name = _ref2.name,
1842
+ color = _ref2.color;
1843
+ return /*#__PURE__*/jsxRuntime.jsxs(RatingItem, {
1844
+ children: [/*#__PURE__*/jsxRuntime.jsx(Icon, {
1845
+ color: color,
1846
+ size: 48
1847
+ }), /*#__PURE__*/jsxRuntime.jsx(InputWithMaxLength, {
1848
+ name: name,
1849
+ "data-cy": "neeto-form-engine-".concat(neetoCist.hyphenate(name))
1850
+ })]
1851
+ }, name);
1852
+ })
1853
+ })
1854
+ })
1855
+ });
1856
+ };
1857
+
1858
+ var StarRating = function StarRating() {
1859
+ var _useTranslation = reactI18next.useTranslation(),
1860
+ t = _useTranslation.t;
1861
+ var _useFormikContext = formik.useFormikContext(),
1862
+ setFieldValue = _useFormikContext.setFieldValue;
1863
+ var _useField = formik.useField("iconType"),
1864
+ _useField2 = _slicedToArray__default["default"](_useField, 3),
1865
+ iconType = _useField2[0].value;
1866
+ _useField2[1];
1867
+ var setIconType = _useField2[2].setValue;
1868
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1869
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
1870
+ className: "flex space-x-4",
1871
+ children: [/*#__PURE__*/jsxRuntime.jsx(Select__default["default"], {
1872
+ className: "w-1/2",
1873
+ "data-cy": "neeto-form-engine-star-rating-min-value",
1874
+ label: t("neetoForm.common.start"),
1875
+ name: "minValue",
1876
+ options: constants.STAR_RATING_MIN_VALUE_OPTIONS,
1877
+ onChange: function onChange(option) {
1878
+ return setFieldValue("minValue", option === null || option === void 0 ? void 0 : option.value);
1879
+ }
1880
+ }), /*#__PURE__*/jsxRuntime.jsx(Select__default["default"], {
1881
+ className: "w-1/2",
1882
+ "data-cy": "neeto-form-engine-star-rating-max-value",
1883
+ label: t("neetoForm.common.end"),
1884
+ name: "maxValue",
1885
+ options: constants.STAR_RATING_MAX_VALUE_OPTIONS,
1886
+ onChange: function onChange(option) {
1887
+ return setFieldValue("maxValue", option === null || option === void 0 ? void 0 : option.value);
1888
+ }
1889
+ })]
1890
+ }), /*#__PURE__*/jsxRuntime.jsx(Label__default["default"], {
1891
+ children: t("neetoForm.common.shape")
1892
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
1893
+ className: "flex gap-2",
1894
+ children: Object.entries(constants.STAR_RATING_ICONS_MAP).map(function (_ref) {
1895
+ var _ref2 = _slicedToArray__default["default"](_ref, 2),
1896
+ name = _ref2[0],
1897
+ IconType = _ref2[1];
1898
+ var isActive = name === iconType;
1899
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
1900
+ "data-cy": "neeto-form-engine-rating-icon-".concat(name),
1901
+ className: classnames__default["default"]("flex h-10 w-10 items-center justify-center gap-2", "neeto-ui-border-gray-800 neeto-ui-rounded-full cursor-pointer border", "transition-all duration-300 ease-in-out", {
1902
+ "neeto-ui-text-gray-800 neeto-ui-bg-gray-200": !isActive,
1903
+ "neeto-ui-text-white neeto-ui-bg-gray-800": isActive
1904
+ }),
1905
+ onClick: function onClick() {
1906
+ return setIconType(name);
1907
+ },
1908
+ children: /*#__PURE__*/jsxRuntime.jsx(IconType, {})
1909
+ }, name);
1910
+ })
1911
+ })]
1912
+ });
1913
+ };
1914
+
1915
+ var CHECKBOX = constants.QUESTION_TYPES.CHECKBOX,
1916
+ RADIO = constants.QUESTION_TYPES.RADIO,
1917
+ DROPDOWN = constants.QUESTION_TYPES.DROPDOWN,
1918
+ STAR_RATING = constants.QUESTION_TYPES.STAR_RATING,
1919
+ RATING = constants.QUESTION_TYPES.RATING,
1920
+ FILE_UPLOAD = constants.QUESTION_TYPES.FILE_UPLOAD,
1921
+ CAPTCHA = constants.QUESTION_TYPES.CAPTCHA,
1922
+ EMAIL = constants.QUESTION_TYPES.EMAIL;
1923
+ var transformValueForOption = function transformValueForOption(_ref) {
1924
+ var label = _ref.label,
1925
+ type = _ref.type;
1926
+ return "".concat(neetoCist.slugify(label), "-").concat(type);
1927
+ };
1928
+ var renderAdditionalData = function renderAdditionalData(_ref2) {
1929
+ var kind = _ref2.kind,
1930
+ questionProps = _ref2.questionProps,
1931
+ domainRestrictionHelpDocUrl = _ref2.domainRestrictionHelpDocUrl,
1932
+ enableDomainRestriction = _ref2.enableDomainRestriction;
1933
+ switch (kind) {
1934
+ case CHECKBOX:
1935
+ case RADIO:
1936
+ case DROPDOWN:
1937
+ return /*#__PURE__*/jsxRuntime.jsx(Options, {
1938
+ questionProps: questionProps
1939
+ });
1940
+ case RATING:
1941
+ return /*#__PURE__*/jsxRuntime.jsx(Rating, {});
1942
+ case STAR_RATING:
1943
+ return /*#__PURE__*/jsxRuntime.jsx(StarRating, {});
1944
+ case FILE_UPLOAD:
1945
+ return /*#__PURE__*/jsxRuntime.jsx(FileUpload, {});
1946
+ case CAPTCHA:
1947
+ return /*#__PURE__*/jsxRuntime.jsx(Captcha, {});
1948
+ case EMAIL:
1949
+ return enableDomainRestriction ? /*#__PURE__*/jsxRuntime.jsx(Email, {
1950
+ domainRestrictionHelpDocUrl: domainRestrictionHelpDocUrl
1951
+ }) : null;
1952
+ default:
1953
+ return null;
1954
+ }
1955
+ };
1956
+ var resolveActionComponent = function resolveActionComponent(action) {
1957
+ return ramda.equals(action, constants.QUESTION_ACTIONS.ADD) ? Add : Edit;
1958
+ };
1959
+ var getQuestionKind = function getQuestionKind(questionKinds, pattern) {
1960
+ var questionKind = neetoCist.findBy(pattern, questionKinds);
1961
+ return questionKind ? ramda.assoc("kind", questionKind.type, questionKind) : null;
1962
+ };
1963
+ var buildKindOptions = function buildKindOptions(kinds) {
1964
+ return kinds.map(function (_ref3) {
1965
+ var label = _ref3.label,
1966
+ type = _ref3.type;
1967
+ return {
1968
+ label: label,
1969
+ value: transformValueForOption({
1970
+ label: label,
1971
+ type: type
1972
+ })
1973
+ };
1974
+ });
1975
+ };
1976
+ var extractKindFromOption = ramda.pipe(ramda.split("-"), ramda.last);
1977
+ var buildDefaultValueForKind = function buildDefaultValueForKind(questionKind) {
1978
+ return neetoCist.isPresent(questionKind) ? {
1979
+ value: transformValueForOption(questionKind)
1980
+ } : undefined;
1981
+ };
1982
+
1983
+ var _excluded$1 = ["isOpen", "onClose", "action", "question", "availableQuestionKinds", "fieldCodeHelpDocUrl", "domainRestrictionHelpDocUrl"];
1984
+ 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; }
1985
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1986
+ var ManageQuestionPane = function ManageQuestionPane(_ref) {
1987
+ var isOpen = _ref.isOpen,
1988
+ onClose = _ref.onClose,
1989
+ action = _ref.action,
1990
+ question = _ref.question,
1991
+ availableQuestionKinds = _ref.availableQuestionKinds,
1992
+ fieldCodeHelpDocUrl = _ref.fieldCodeHelpDocUrl,
1993
+ domainRestrictionHelpDocUrl = _ref.domainRestrictionHelpDocUrl,
1994
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$1);
1995
+ var initialFocusRef = React.useRef(null);
1996
+ var Component = resolveActionComponent(action);
1997
+ return /*#__PURE__*/jsxRuntime.jsx(Pane__default["default"], {
1998
+ initialFocusRef: initialFocusRef,
1999
+ isOpen: isOpen,
2000
+ onClose: onClose,
2001
+ children: /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread$3({}, _objectSpread$3({
2002
+ availableQuestionKinds: availableQuestionKinds,
2003
+ domainRestrictionHelpDocUrl: domainRestrictionHelpDocUrl,
2004
+ fieldCodeHelpDocUrl: fieldCodeHelpDocUrl,
2005
+ initialFocusRef: initialFocusRef,
2006
+ isOpen: isOpen,
2007
+ onClose: onClose,
2008
+ question: question
2009
+ }, props)))
2010
+ });
2011
+ };
2012
+
2013
+ function ownKeys$2(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; }
2014
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2015
+ var AddQuestion = function AddQuestion(_ref) {
2016
+ var onAdd = _ref.onAdd,
2017
+ disabledAddButtonTooltipProps = _ref.disabledAddButtonTooltipProps,
2018
+ isDisabled = _ref.isDisabled;
2019
+ var tooltipProps = buildDisabledAddButtonTooltipProps(isDisabled, disabledAddButtonTooltipProps);
2020
+ return /*#__PURE__*/jsxRuntime.jsx(Tooltip__default["default"], _objectSpread$2(_objectSpread$2({}, isDisabled && tooltipProps), {}, {
2021
+ children: /*#__PURE__*/jsxRuntime.jsx("span", {
2022
+ children: /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], _objectSpread$2({}, buildAddQuestionButtonProps(onAdd, isDisabled)))
2023
+ })
2024
+ }));
2025
+ };
2026
+
2027
+ 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", "fieldCodeHelpDocUrl", "enableDomainRestriction", "domainRestrictionHelpDocUrl"];
2028
+ 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; }
2029
+ 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__default["default"](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; }
2030
+ var Form = function Form(_ref) {
2031
+ var questionKinds = _ref.questionKinds,
2032
+ onValueChange = _ref.onValueChange,
2033
+ formId = _ref.formId,
2034
+ isDeletable = _ref.isDeletable,
2035
+ isRequiredField = _ref.isRequiredField,
2036
+ submitButtonProps = _ref.submitButtonProps,
2037
+ cancelButtonProps = _ref.cancelButtonProps,
2038
+ isKindAlreadyActive = _ref.isKindAlreadyActive,
2039
+ getActiveKindDetails = _ref.getActiveKindDetails,
2040
+ isDisabledFieldLabel = _ref.isDisabledFieldLabel,
2041
+ disabledAddButtonTooltipProps = _ref.disabledAddButtonTooltipProps,
2042
+ enableFieldCode = _ref.enableFieldCode,
2043
+ isFormEnabled = _ref.isFormEnabled,
2044
+ savedTitle = _ref.savedTitle,
2045
+ formTitle = _ref.formTitle,
2046
+ formDescription = _ref.formDescription,
2047
+ selectedLanguage = _ref.selectedLanguage,
2048
+ availableLanguages = _ref.availableLanguages,
2049
+ onLanguageChange = _ref.onLanguageChange,
2050
+ additionalActionOptions = _ref.additionalActionOptions,
2051
+ isReordering = _ref.isReordering,
2052
+ additionalQuestionKindPattern = _ref.additionalQuestionKindPattern,
2053
+ showActionBlock = _ref.showActionBlock,
2054
+ buildRequestArgs = _ref.buildRequestArgs,
2055
+ fieldCodeHelpDocUrl = _ref.fieldCodeHelpDocUrl,
2056
+ enableDomainRestriction = _ref.enableDomainRestriction,
2057
+ domainRestrictionHelpDocUrl = _ref.domainRestrictionHelpDocUrl,
2058
+ formDomProps = _objectWithoutProperties__default["default"](_ref, _excluded);
2059
+ var containerRef = React.useRef();
2060
+ var _useTranslation = reactI18next.useTranslation(),
2061
+ t = _useTranslation.t;
2062
+ var formikContext = formik.useFormikContext();
2063
+ var _useState = React.useState(null),
2064
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
2065
+ selectedQuestion = _useState2[0],
2066
+ setSelectedQuestion = _useState2[1];
2067
+ var _useState3 = React.useState(""),
2068
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
2069
+ selectedAction = _useState4[0],
2070
+ setSelectedAction = _useState4[1];
2071
+ var _useState5 = React.useState(false),
2072
+ _useState6 = _slicedToArray__default["default"](_useState5, 2),
2073
+ isDeleteAlertOpen = _useState6[0],
2074
+ setIsDeleteAlertOpen = _useState6[1];
2075
+ var _useState7 = React.useState(false),
2076
+ _useState8 = _slicedToArray__default["default"](_useState7, 2),
2077
+ isManageQuestionPaneOpen = _useState8[0],
2078
+ setIsManageQuestionPaneOpen = _useState8[1];
2079
+ var values = formikContext.values,
2080
+ setFieldValue = formikContext.setFieldValue,
2081
+ dirty = formikContext.dirty,
2082
+ isSubmitting = formikContext.isSubmitting,
2083
+ isValid = formikContext.isValid,
2084
+ errors = formikContext.errors,
2085
+ submitForm = formikContext.submitForm,
2086
+ resetForm = formikContext.resetForm;
2087
+ var setFormData = buildForm.useBuildFormStore(ramda.prop("setFormData"));
2088
+ var _useCreateQuestion = useFormApi.useCreateQuestion(formId, selectedLanguage, {
2089
+ onSuccess: utils.showThumbsUpToastr
2090
+ }),
2091
+ createQuestion = _useCreateQuestion.mutate;
2092
+ React.useEffect(function () {
2093
+ setFormData({
2094
+ formId: formId,
2095
+ enabled: isFormEnabled,
2096
+ title: savedTitle,
2097
+ values: values,
2098
+ dirty: dirty,
2099
+ isSubmitting: isSubmitting,
2100
+ isValid: isValid,
2101
+ errors: errors,
2102
+ submitForm: submitForm,
2103
+ resetForm: resetForm,
2104
+ selectedLanguage: selectedLanguage
2105
+ });
2106
+ }, [formId, isFormEnabled, savedTitle, setFormData, values, dirty, isSubmitting, isValid, errors, submitForm, resetForm, selectedLanguage]);
2107
+ var questions = values.questions;
2108
+ var handleSelect = function handleSelect(question) {
2109
+ setSelectedQuestion(question);
2110
+ };
2111
+ var handleAdd = function handleAdd() {
2112
+ setSelectedAction(constants.QUESTION_ACTIONS.ADD);
2113
+ setIsManageQuestionPaneOpen(true);
2114
+ };
2115
+ var handleEdit = function handleEdit() {
2116
+ setSelectedAction(constants.QUESTION_ACTIONS.EDIT);
2117
+ setIsManageQuestionPaneOpen(true);
2118
+ };
2119
+ var handleClone = function handleClone() {
2120
+ var values = duplicateFieldData({
2121
+ item: selectedQuestion,
2122
+ questionKinds: availableQuestionKinds,
2123
+ questions: questions
2124
+ });
2125
+ var displayOrder = selectedQuestion.displayOrder + 1;
2126
+ var attributes = ramda.mergeLeft({
2127
+ displayOrder: displayOrder
2128
+ }, values);
2129
+ var payload = _objectSpread$1({
2130
+ language: selectedLanguage,
2131
+ neetoFormQuestion: formatQuestionAttributesForClone(attributes)
2132
+ }, buildRequestArgs);
2133
+ createQuestion(payload, {
2134
+ onSuccess: function onSuccess(_ref2) {
2135
+ var questions = _ref2.questions;
2136
+ var newQuestion = neetoCist.findBy({
2137
+ displayOrder: displayOrder
2138
+ }, questions);
2139
+ handleSelect(newQuestion);
2140
+ }
2141
+ });
2142
+ };
2143
+ var handleDelete = function handleDelete() {
2144
+ setIsDeleteAlertOpen(true);
2145
+ };
2146
+ reactUtils.useOnClickOutside(containerRef, function () {
2147
+ return handleSelect(null);
2148
+ }, {
2149
+ enabled: !(isDeleteAlertOpen || isManageQuestionPaneOpen)
2150
+ });
2151
+ React.useEffect(function () {
2152
+ onValueChange === null || onValueChange === void 0 || onValueChange(questions);
2153
+ }, [questions]);
2154
+ var availableQuestionKinds = getAvailableQuestionKinds({
2155
+ allQuestionKinds: questionKinds,
2156
+ activeQuestions: questions,
2157
+ isKindAlreadyActive: isKindAlreadyActive
2158
+ });
2159
+ var hasActiveQuestions = questions && questions.length && questions.some(function (question) {
2160
+ return question._destroy !== true;
2161
+ });
2162
+ var handleLanguageChange = function handleLanguageChange(code) {
2163
+ resetForm();
2164
+ onLanguageChange(code);
2165
+ };
2166
+ var richTextQuestions = neetoCist.filterBy({
2167
+ kind: ramda.includes(ramda.__, constants.RICH_TEXT_QUESTIONS)
2168
+ }, questions);
2169
+ var resetFormData = function resetFormData() {
2170
+ resetForm();
2171
+ setFormData({
2172
+ richTextFieldsToReset: ramda.pluck("fieldCode", richTextQuestions)
2173
+ });
2174
+ };
2175
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
2176
+ children: [/*#__PURE__*/jsxRuntime.jsx(DeleteAlert, {
2177
+ handleSelect: handleSelect,
2178
+ selectedQuestion: selectedQuestion,
2179
+ isOpen: isDeleteAlertOpen,
2180
+ languagesCount: availableLanguages.length,
2181
+ onClose: function onClose() {
2182
+ return setIsDeleteAlertOpen(false);
2183
+ }
2184
+ }), /*#__PURE__*/jsxRuntime.jsxs(formik.Form, _objectSpread$1(_objectSpread$1({
2185
+ className: "neeto-form-nano-form-wrapper flex h-full flex-col"
2186
+ }, formDomProps), {}, {
2187
+ noValidate: true,
2188
+ children: [formTitle && /*#__PURE__*/jsxRuntime.jsx(Overview, {
2189
+ additionalActionOptions: additionalActionOptions,
2190
+ availableLanguages: availableLanguages,
2191
+ selectedLanguage: selectedLanguage,
2192
+ description: formDescription,
2193
+ title: formTitle,
2194
+ onLanguageChange: handleLanguageChange
2195
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
2196
+ className: "neeto-form-nano-form-wrapper__body min-h-0 w-full flex-grow space-y-6 overflow-y-auto px-6 pb-6",
2197
+ children: hasActiveQuestions ? /*#__PURE__*/jsxRuntime.jsxs("div", {
2198
+ className: "space-y-6",
2199
+ ref: containerRef,
2200
+ children: [/*#__PURE__*/jsxRuntime.jsx(dnd.DragDropContext, {
2201
+ onDragEnd: function onDragEnd(_ref3) {
2202
+ var source = _ref3.source,
2203
+ destination = _ref3.destination;
2204
+ return handleFieldDragEnd({
2205
+ source: source,
2206
+ destination: destination,
2207
+ items: questions,
2208
+ setValue: setFieldValue
2209
+ });
2210
+ },
2211
+ children: /*#__PURE__*/jsxRuntime.jsx(Questions, {
2212
+ getActiveKindDetails: getActiveKindDetails,
2213
+ isDeletable: isDeletable,
2214
+ questions: questions,
2215
+ selectedQuestion: selectedQuestion,
2216
+ allQuestionKinds: questionKinds,
2217
+ onClone: handleClone,
2218
+ onDelete: handleDelete,
2219
+ onEdit: handleEdit,
2220
+ onSelect: handleSelect
2221
+ })
2222
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
2223
+ className: "mb-8 w-full",
2224
+ children: /*#__PURE__*/jsxRuntime.jsx(AddQuestion, {
2225
+ disabledAddButtonTooltipProps: disabledAddButtonTooltipProps,
2226
+ isDisabled: ramda.isEmpty(availableQuestionKinds),
2227
+ onAdd: handleAdd
2228
+ })
2229
+ })]
2230
+ }) : /*#__PURE__*/jsxRuntime.jsx(AddFirstQuestion, {
2231
+ disabledAddButtonTooltipProps: disabledAddButtonTooltipProps,
2232
+ isDisabled: ramda.isEmpty(availableQuestionKinds),
2233
+ onAdd: handleAdd
2234
+ })
2235
+ }), (showActionBlock || dirty) && /*#__PURE__*/jsxRuntime.jsx("div", {
2236
+ className: "neeto-ui-border-gray-300 neeto-form-nano-form-wrapper__footer neeto-ui-bg-white sticky bottom-0 flex flex-shrink-0 justify-end border-t px-6 py-4",
2237
+ children: /*#__PURE__*/jsxRuntime.jsx(ActionBlock__default["default"], {
2238
+ submitButtonProps: submitButtonProps,
2239
+ isSubmitting: isReordering,
2240
+ cancelButtonProps: _objectSpread$1({
2241
+ label: t("neetoForm.common.reset"),
2242
+ onClick: resetFormData
2243
+ }, cancelButtonProps)
2244
+ })
2245
+ }), /*#__PURE__*/jsxRuntime.jsx(ManageQuestionPane, {
2246
+ additionalQuestionKindPattern: additionalQuestionKindPattern,
2247
+ availableQuestionKinds: availableQuestionKinds,
2248
+ buildRequestArgs: buildRequestArgs,
2249
+ domainRestrictionHelpDocUrl: domainRestrictionHelpDocUrl,
2250
+ enableDomainRestriction: enableDomainRestriction,
2251
+ enableFieldCode: enableFieldCode,
2252
+ fieldCodeHelpDocUrl: fieldCodeHelpDocUrl,
2253
+ getActiveKindDetails: getActiveKindDetails,
2254
+ handleSelect: handleSelect,
2255
+ isDisabledFieldLabel: isDisabledFieldLabel,
2256
+ isRequiredField: isRequiredField,
2257
+ questions: questions,
2258
+ action: selectedAction,
2259
+ allQuestionKinds: questionKinds,
2260
+ isOpen: isManageQuestionPaneOpen,
2261
+ question: selectedQuestion,
2262
+ onClose: function onClose() {
2263
+ return setIsManageQuestionPaneOpen(false);
2264
+ }
2265
+ })]
2266
+ }))]
2267
+ });
2268
+ };
2269
+
2270
+ function ownKeys(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; }
2271
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2272
+ var BuildForm = function BuildForm(_ref) {
2273
+ var id = _ref.id,
2274
+ onUpdate = _ref.onUpdate,
2275
+ buildRequestArgs = _ref.buildRequestArgs,
2276
+ _ref$nonRemovableFiel = _ref.nonRemovableFields,
2277
+ nonRemovableFields = _ref$nonRemovableFiel === void 0 ? [] : _ref$nonRemovableFiel,
2278
+ _ref$requiredFields = _ref.requiredFields,
2279
+ requiredFields = _ref$requiredFields === void 0 ? [] : _ref$requiredFields,
2280
+ formDomProps = _ref.formDomProps,
2281
+ _ref$showActionBlock = _ref.showActionBlock,
2282
+ showActionBlock = _ref$showActionBlock === void 0 ? false : _ref$showActionBlock,
2283
+ submitButtonProps = _ref.submitButtonProps,
2284
+ cancelButtonProps = _ref.cancelButtonProps,
2285
+ questionKinds = _ref.questionKinds,
2286
+ _ref$isKindAlreadyAct = _ref.isKindAlreadyActive,
2287
+ isKindAlreadyActive = _ref$isKindAlreadyAct === void 0 ? isQuestionKindAlreadyActive : _ref$isKindAlreadyAct,
2288
+ _ref$getActiveKindDet = _ref.getActiveKindDetails,
2289
+ getActiveKindDetails = _ref$getActiveKindDet === void 0 ? constants.getActiveQuestionKindDetails : _ref$getActiveKindDet,
2290
+ isQuestionDeletable = _ref.isQuestionDeletable,
2291
+ isFieldRequired = _ref.isFieldRequired,
2292
+ isFieldLabelDisabled = _ref.isFieldLabelDisabled,
2293
+ _ref$showLoader = _ref.showLoader,
2294
+ showLoader = _ref$showLoader === void 0 ? false : _ref$showLoader,
2295
+ _ref$kindUniqueOn = _ref.kindUniqueOn,
2296
+ kindUniqueOn = _ref$kindUniqueOn === void 0 ? ["type"] : _ref$kindUniqueOn,
2297
+ _ref$allowAdditionalG = _ref.allowAdditionalGuests,
2298
+ allowAdditionalGuests = _ref$allowAdditionalG === void 0 ? false : _ref$allowAdditionalG,
2299
+ disabledAddButtonTooltipProps = _ref.disabledAddButtonTooltipProps,
2300
+ _ref$enableFieldCode = _ref.enableFieldCode,
2301
+ enableFieldCode = _ref$enableFieldCode === void 0 ? false : _ref$enableFieldCode,
2302
+ _ref$availableLanguag = _ref.availableLanguages,
2303
+ availableLanguages = _ref$availableLanguag === void 0 ? constants.DEFAULT_AVAILABLE_LANGUAGES : _ref$availableLanguag,
2304
+ formDescription = _ref.formDescription,
2305
+ _ref$formTitle = _ref.formTitle,
2306
+ formTitle = _ref$formTitle === void 0 ? "" : _ref$formTitle,
2307
+ _ref$selectedLanguage = _ref.selectedLanguage,
2308
+ selectedLanguage = _ref$selectedLanguage === void 0 ? "en" : _ref$selectedLanguage,
2309
+ _ref$onLanguageChange = _ref.onLanguageChange,
2310
+ onLanguageChange = _ref$onLanguageChange === void 0 ? neetoCist.noop : _ref$onLanguageChange,
2311
+ _ref$additionalAction = _ref.additionalActionOptions,
2312
+ additionalActionOptions = _ref$additionalAction === void 0 ? [] : _ref$additionalAction,
2313
+ additionalQuestionKindPattern = _ref.additionalQuestionKindPattern,
2314
+ fieldCodeHelpDocUrl = _ref.fieldCodeHelpDocUrl,
2315
+ _ref$enableDomainRest = _ref.enableDomainRestriction,
2316
+ enableDomainRestriction = _ref$enableDomainRest === void 0 ? true : _ref$enableDomainRest,
2317
+ domainRestrictionHelpDocUrl = _ref.domainRestrictionHelpDocUrl,
2318
+ className = _ref.className;
2319
+ var queryClient = reactQuery.useQueryClient();
2320
+ var _useReorderQuestions = useFormApi.useReorderQuestions(id, {
2321
+ onSuccess: utils.showThumbsUpToastr
2322
+ }),
2323
+ reorderQuestions = _useReorderQuestions.mutate,
2324
+ isReordering = _useReorderQuestions.isPending;
2325
+ var _useFetchQuestions = useFormApi.useFetchQuestions({
2326
+ formId: id,
2327
+ language: selectedLanguage
2328
+ }),
2329
+ data = _useFetchQuestions.data,
2330
+ isLoading = _useFetchQuestions.isLoading,
2331
+ isQuestionsPending = _useFetchQuestions.isPending;
2332
+ var _ref2 = data || constants.QUESTIONS_INITIAL_VALUE,
2333
+ isFormEnabled = _ref2.enabled,
2334
+ savedTitle = _ref2.title,
2335
+ questions = _ref2.questions,
2336
+ isQuestionsLoading = _ref2.isQuestionsLoading;
2337
+ React.useEffect(function () {
2338
+ if (data) {
2339
+ onUpdate === null || onUpdate === void 0 || onUpdate(data);
2340
+ }
2341
+ }, [data]);
2342
+ if (isLoading || showLoader && isQuestionsLoading && !isQuestionsPending) {
2343
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
2344
+ className: "flex h-full w-full items-center justify-center py-6",
2345
+ children: /*#__PURE__*/jsxRuntime.jsx(PageLoader__default["default"], {})
2346
+ });
2347
+ }
2348
+ var handleSubmit = function handleSubmit(_ref3, _ref4) {
2349
+ var questions = _ref3.questions;
2350
+ var setSubmitting = _ref4.setSubmitting;
2351
+ var payload = {
2352
+ neetoFormQuestions: {
2353
+ questions: buildReorderPayload(questions)
2354
+ }
2355
+ };
2356
+ reorderQuestions(payload, {
2357
+ onSettled: function onSettled() {
2358
+ return setSubmitting(false);
2359
+ }
2360
+ });
2361
+ };
2362
+ var onValueChange = function onValueChange(questions) {
2363
+ var _queryClient$getQuery = queryClient.getQueryState([useFormApi.QUERY_KEYS.QUESTIONS, id, selectedLanguage]),
2364
+ dataUpdateCount = _queryClient$getQuery.dataUpdateCount;
2365
+ if (dataUpdateCount > 0) {
2366
+ queryClient.setQueryData([useFormApi.QUERY_KEYS.QUESTIONS, "preview/".concat(id), selectedLanguage], ramda.assoc("questions", questions));
2367
+ }
2368
+ };
2369
+ var isDeletable = isQuestionDeletable !== null && isQuestionDeletable !== void 0 ? isQuestionDeletable : function (question) {
2370
+ return !nonRemovableFields.includes(question.kind);
2371
+ };
2372
+ var isRequiredField = isFieldRequired !== null && isFieldRequired !== void 0 ? isFieldRequired : function (_ref5) {
2373
+ var kind = _ref5.kind;
2374
+ return ramda.concat(constants.MANDATORY_KINDS, requiredFields).includes(kind);
2375
+ };
2376
+ var isDisabledFieldLabel = isFieldLabelDisabled !== null && isFieldLabelDisabled !== void 0 ? isFieldLabelDisabled : function () {
2377
+ return false;
2378
+ };
2379
+ var defaultQuestionKinds = allowAdditionalGuests ? constants.QUESTION_KINDS : neetoCist.removeBy({
2380
+ type: constants$1.QUESTION_KIND.ADDITIONAL_GUESTS.value
2381
+ }, constants.QUESTION_KINDS);
2382
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
2383
+ className: classnames__default["default"]("neeto-form-nano-form-outer-wrapper relative", className),
2384
+ children: [/*#__PURE__*/jsxRuntime.jsx(formik.Formik, {
2385
+ enableReinitialize: true,
2386
+ initialValues: {
2387
+ questions: questions
2388
+ },
2389
+ onSubmit: handleSubmit,
2390
+ children: function children(_ref6) {
2391
+ var errors = _ref6.errors,
2392
+ setFieldError = _ref6.setFieldError;
2393
+ return /*#__PURE__*/jsxRuntime.jsx(Form, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, formDomProps), {}, {
2394
+ additionalActionOptions: additionalActionOptions,
2395
+ additionalQuestionKindPattern: additionalQuestionKindPattern,
2396
+ availableLanguages: availableLanguages,
2397
+ buildRequestArgs: buildRequestArgs,
2398
+ cancelButtonProps: cancelButtonProps,
2399
+ disabledAddButtonTooltipProps: disabledAddButtonTooltipProps,
2400
+ domainRestrictionHelpDocUrl: domainRestrictionHelpDocUrl,
2401
+ enableDomainRestriction: enableDomainRestriction,
2402
+ enableFieldCode: enableFieldCode,
2403
+ fieldCodeHelpDocUrl: fieldCodeHelpDocUrl,
2404
+ formDescription: formDescription,
2405
+ formTitle: formTitle,
2406
+ getActiveKindDetails: getActiveKindDetails,
2407
+ isDeletable: isDeletable,
2408
+ isDisabledFieldLabel: isDisabledFieldLabel,
2409
+ isFormEnabled: isFormEnabled,
2410
+ isKindAlreadyActive: isKindAlreadyActive,
2411
+ isReordering: isReordering,
2412
+ isRequiredField: isRequiredField,
2413
+ kindUniqueOn: kindUniqueOn,
2414
+ onLanguageChange: onLanguageChange,
2415
+ onValueChange: onValueChange,
2416
+ savedTitle: savedTitle,
2417
+ selectedLanguage: selectedLanguage,
2418
+ showActionBlock: showActionBlock,
2419
+ submitButtonProps: submitButtonProps
2420
+ })), {}, {
2421
+ formId: id,
2422
+ questionKinds: ramda.isNil(questionKinds) ? defaultQuestionKinds : questionKinds,
2423
+ onChange: function onChange(event) {
2424
+ if (ramda.isEmpty(errors)) return;
2425
+ setFieldError(event.target.name);
2426
+ }
2427
+ }));
2428
+ }
2429
+ }), isQuestionsLoading && !isQuestionsPending && /*#__PURE__*/jsxRuntime.jsx("div", {
2430
+ className: "neeto-ui-bg-white absolute inset-0 flex items-center justify-center",
2431
+ children: /*#__PURE__*/jsxRuntime.jsx(PageLoader__default["default"], {})
2432
+ })]
2433
+ });
2434
+ };
2435
+
2436
+ module.exports = BuildForm;
2437
+ //# sourceMappingURL=BuildForm.js.map