@bigbinary/neeto-molecules 3.10.6 → 3.11.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 (78) hide show
  1. package/dist/Breadcrumbs.js +1 -1
  2. package/dist/BrowserSupport.js +1 -1
  3. package/dist/Builder.js +1 -1
  4. package/dist/ButtonGroup.js +1 -1
  5. package/dist/CalendarView.js +1 -1
  6. package/dist/{Chevron-DYhRHGmL.js → Chevron-C_bPU_nD.js} +2 -2
  7. package/dist/{Chevron-DYhRHGmL.js.map → Chevron-C_bPU_nD.js.map} +1 -1
  8. package/dist/Columns.js +1 -1
  9. package/dist/ConfigurePageSidebar.js +1 -1
  10. package/dist/Container.js +1 -1
  11. package/dist/CustomDomainDashboard.js +1 -1
  12. package/dist/DocumentEditor.js +1 -1
  13. package/dist/DynamicVariables.js +1 -1
  14. package/dist/FileUpload.js +1 -1
  15. package/dist/FloatingActionMenu.js +1 -1
  16. package/dist/Header.js +1 -1
  17. package/dist/MadeWith.js +1 -1
  18. package/dist/MenuBar.js +1 -1
  19. package/dist/Metadata.js +1 -1
  20. package/dist/MoreDropdown.js +1 -1
  21. package/dist/NavigationHeader.js +1 -1
  22. package/dist/Onboarding.js +1 -1
  23. package/dist/OptionFields.js +380 -222
  24. package/dist/OptionFields.js.map +1 -1
  25. package/dist/PageLoader.js +1 -1
  26. package/dist/ProductEmbed.js +1 -1
  27. package/dist/PublishBlock.js +1 -1
  28. package/dist/Rename.js +1 -1
  29. package/dist/SessionEnvironment.js +1 -1
  30. package/dist/ShareViaEmail.js +1 -1
  31. package/dist/Sidebar.js +1 -1
  32. package/dist/SubHeader.js +2 -2
  33. package/dist/SuffixedInput.js +1 -1
  34. package/dist/TableWrapper.js +1 -1
  35. package/dist/Taxonomy.js +1 -1
  36. package/dist/cjs/Breadcrumbs.js +1 -1
  37. package/dist/cjs/BrowserSupport.js +1 -1
  38. package/dist/cjs/Builder.js +1 -1
  39. package/dist/cjs/ButtonGroup.js +1 -1
  40. package/dist/cjs/CalendarView.js +1 -1
  41. package/dist/cjs/{Chevron-BHx_p44t.js → Chevron-DCuqBPU0.js} +2 -2
  42. package/dist/cjs/{Chevron-BHx_p44t.js.map → Chevron-DCuqBPU0.js.map} +1 -1
  43. package/dist/cjs/Columns.js +1 -1
  44. package/dist/cjs/ConfigurePageSidebar.js +1 -1
  45. package/dist/cjs/Container.js +1 -1
  46. package/dist/cjs/CustomDomainDashboard.js +1 -1
  47. package/dist/cjs/DocumentEditor.js +1 -1
  48. package/dist/cjs/DynamicVariables.js +1 -1
  49. package/dist/cjs/FileUpload.js +1 -1
  50. package/dist/cjs/FloatingActionMenu.js +1 -1
  51. package/dist/cjs/Header.js +1 -1
  52. package/dist/cjs/MadeWith.js +1 -1
  53. package/dist/cjs/MenuBar.js +1 -1
  54. package/dist/cjs/Metadata.js +1 -1
  55. package/dist/cjs/MoreDropdown.js +1 -1
  56. package/dist/cjs/NavigationHeader.js +1 -1
  57. package/dist/cjs/Onboarding.js +1 -1
  58. package/dist/cjs/OptionFields.js +377 -219
  59. package/dist/cjs/OptionFields.js.map +1 -1
  60. package/dist/cjs/PageLoader.js +1 -1
  61. package/dist/cjs/ProductEmbed.js +1 -1
  62. package/dist/cjs/PublishBlock.js +1 -1
  63. package/dist/cjs/Rename.js +1 -1
  64. package/dist/cjs/SessionEnvironment.js +1 -1
  65. package/dist/cjs/ShareViaEmail.js +1 -1
  66. package/dist/cjs/Sidebar.js +1 -1
  67. package/dist/cjs/SubHeader.js +2 -2
  68. package/dist/cjs/SuffixedInput.js +1 -1
  69. package/dist/cjs/TableWrapper.js +1 -1
  70. package/dist/cjs/Taxonomy.js +1 -1
  71. package/dist/cjs/{useColumns-E3db4ucs.js → useColumns-BP8c4PV-.js} +2 -2
  72. package/dist/cjs/{useColumns-E3db4ucs.js.map → useColumns-BP8c4PV-.js.map} +1 -1
  73. package/dist/styles/page-loader.css +1 -1
  74. package/dist/styles/page-loader.js +1 -1
  75. package/dist/{useColumns-B8JL1GjK.js → useColumns-Db5uic1-.js} +2 -2
  76. package/dist/{useColumns-B8JL1GjK.js.map → useColumns-Db5uic1-.js.map} +1 -1
  77. package/package.json +1 -1
  78. package/types/OptionFields.d.ts +12 -6
@@ -4,105 +4,25 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
5
  var React = require('react');
6
6
  var dnd = require('@hello-pangea/dnd');
7
+ var formik = require('formik');
7
8
  var neetoCist = require('@bigbinary/neeto-cist');
8
9
  var Plus = require('@bigbinary/neeto-icons/Plus');
9
10
  var Button = require('@bigbinary/neetoui/Button');
10
- var Typography = require('@bigbinary/neetoui/Typography');
11
11
  var ramda = require('ramda');
12
12
  var reactI18next = require('react-i18next');
13
+ var Modal = require('@bigbinary/neetoui/Modal');
14
+ var Textarea = require('@bigbinary/neetoui/Textarea');
15
+ var Typography = require('@bigbinary/neetoui/Typography');
16
+ var jsxRuntime = require('react/jsx-runtime');
17
+ var i18next = require('i18next');
18
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
13
19
  var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
14
20
  var Delete = require('@bigbinary/neeto-icons/Delete');
15
21
  var Edit = require('@bigbinary/neeto-icons/Edit');
16
22
  var Drag = require('@bigbinary/neeto-icons/Drag');
17
- var jsxRuntime = require('react/jsx-runtime');
18
- var Modal = require('@bigbinary/neetoui/Modal');
19
- var Textarea = require('@bigbinary/neetoui/Textarea');
20
- var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
21
- var i18next = require('i18next');
22
23
  var ImageUpload = require('@bigbinary/neeto-icons/ImageUpload');
23
- var Input = require('@bigbinary/neetoui/Input');
24
-
25
- 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; }
26
- 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(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; }
27
- var DragHandle = function DragHandle(props) {
28
- return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread$4(_objectSpread$4({
29
- className: "neeto-ui-text-gray-500 flex h-8 flex-shrink-0 cursor-grab items-center",
30
- "data-cy": "drag-handle",
31
- "data-testid": "drag-handle"
32
- }, props), {}, {
33
- children: /*#__PURE__*/jsxRuntime.jsx(Drag, {
34
- size: 16,
35
- strokeWidth: 2
36
- })
37
- }));
38
- };
39
-
40
- 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; }
41
- 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(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; }
42
- var BlockOption = reactUtils.withT(function (_ref) {
43
- var t = _ref.t,
44
- innerRef = _ref.innerRef,
45
- _ref$hideDeleteOption = _ref.hideDeleteOption,
46
- hideDeleteOption = _ref$hideDeleteOption === void 0 ? false : _ref$hideDeleteOption,
47
- draggableProps = _ref.draggableProps,
48
- dragHandleProps = _ref.dragHandleProps,
49
- label = _ref.label,
50
- index = _ref.index,
51
- onEdit = _ref.onEdit,
52
- handleDeleteClick = _ref.handleDeleteClick,
53
- id = _ref.id;
54
- return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread$3(_objectSpread$3(_objectSpread$3({
55
- ref: innerRef
56
- }, draggableProps), dragHandleProps), {}, {
57
- children: /*#__PURE__*/jsxRuntime.jsxs("div", {
58
- className: "neeto-ui-border-gray-400 hover:neeto-ui-bg-gray-200 neeto-ui-rounded-sm shadow-xs group relative mb-2 flex h-10 cursor-pointer items-center gap-2 border p-3 transition-colors duration-300 ease-in-out",
59
- "data-cy": "address-field-block",
60
- children: [/*#__PURE__*/jsxRuntime.jsx(DragHandle, _objectSpread$3({}, dragHandleProps)), /*#__PURE__*/jsxRuntime.jsx(Typography, {
61
- className: "flex-grow leading-4",
62
- "data-cy": "address-text-field",
63
- "data-testid": "address-text-field",
64
- style: "body2",
65
- children: label
66
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
67
- className: "flex items-center justify-end gap-2 opacity-0 group-hover:opacity-100",
68
- children: [/*#__PURE__*/jsxRuntime.jsx(Button, {
69
- className: "neeto-ui-rounded hover:neeto-ui-bg-gray-400 p-1",
70
- "data-cy": "address-field-edit-button",
71
- "data-testid": "address-field-edit-button",
72
- icon: Edit,
73
- size: "small",
74
- style: "text",
75
- tooltipProps: {
76
- content: t("neetoMolecules.common.actions.edit"),
77
- position: "top",
78
- touch: ["hold", 500]
79
- },
80
- onClick: function onClick() {
81
- return onEdit(index);
82
- }
83
- }), !hideDeleteOption && /*#__PURE__*/jsxRuntime.jsx(Button, {
84
- className: "neeto-ui-rounded hover:neeto-ui-bg-gray-400 p-1",
85
- "data-cy": "address-field-delete-button",
86
- "data-testid": "address-field-delete-button",
87
- icon: Delete,
88
- size: "small",
89
- style: "text",
90
- tooltipProps: {
91
- content: t("neetoMolecules.common.actions.delete"),
92
- position: "top",
93
- touch: ["hold", 500]
94
- },
95
- onClick: function onClick() {
96
- return handleDeleteClick({
97
- index: index,
98
- id: id
99
- });
100
- }
101
- })]
102
- })]
103
- })
104
- }));
105
- });
24
+ var Input = require('@bigbinary/neetoui/formik/Input');
25
+ var Textarea$1 = require('@bigbinary/neetoui/formik/Textarea');
106
26
 
107
27
  var BulkOptionModal = function BulkOptionModal(_ref) {
108
28
  var isOpen = _ref.isOpen,
@@ -175,24 +95,56 @@ var BulkOptionModal = function BulkOptionModal(_ref) {
175
95
 
176
96
  var DEFAULT_OPTION_LABEL = i18next.t("neetoMolecules.optionFields.defaultOption");
177
97
 
178
- var getOrderedVisibleOptions = function getOrderedVisibleOptions() {
98
+ var FormError = function FormError(_ref) {
99
+ var error = _ref.error;
100
+ if (neetoCist.isNotPresent(error) || typeof error !== "string") return null;
101
+ return /*#__PURE__*/jsxRuntime.jsx(Typography, {
102
+ className: "neeto-ui-input__error",
103
+ "data-testid": "validation-error-container",
104
+ style: "body3",
105
+ children: error
106
+ });
107
+ };
108
+
109
+ var getOrderedOptions = function getOrderedOptions() {
179
110
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
180
- return options.filter(function (option) {
181
- return !option.deleted;
182
- }).sort(function (a, b) {
111
+ return options.sort(function (a, b) {
183
112
  return a.position - b.position;
184
113
  });
185
114
  };
186
- var filterDeletedRecords = ramda.reject(ramda.prop("deleted"));
115
+ var filterDeletedRecords = function filterDeletedRecords(options, destroyFlagName) {
116
+ return ramda.reject(ramda.prop(destroyFlagName), options);
117
+ };
187
118
  var randomId = function randomId() {
188
119
  return Math.random().toString(36).substring(2, 13);
189
120
  };
121
+ var getUniqueOptionId = function getUniqueOptionId(option) {
122
+ var _option$id, _option$position, _option$label;
123
+ return option.altId || ((_option$id = option.id) === null || _option$id === void 0 ? void 0 : _option$id.toString()) || ((_option$position = option.position) === null || _option$position === void 0 ? void 0 : _option$position.toString()) || neetoCist.slugify((_option$label = option.label) !== null && _option$label !== void 0 ? _option$label : "");
124
+ };
125
+ var generatePlaceholder = function generatePlaceholder(itemLabel, count) {
126
+ return "".concat(itemLabel, " ").concat(count + 1);
127
+ };
128
+ var _generateLabel = function generateLabel(itemLabel, options, count) {
129
+ var labelCount = count || options.length + 1;
130
+ var tempLabel = "".concat(itemLabel, " ").concat(labelCount);
131
+ var isDuplicateLabel = ramda.pluck("label", options).includes(tempLabel);
132
+ return isDuplicateLabel ? _generateLabel(itemLabel, options, labelCount + 1) : tempLabel;
133
+ };
134
+ var resolveFormikValue = function resolveFormikValue(path, values) {
135
+ if (!path || typeof path !== "string") {
136
+ return [];
137
+ }
138
+ return path.replace(/\[|\]/g, ".").split(".").filter(Boolean).reduce(function (acc, key) {
139
+ return acc && acc[key] !== undefined ? acc[key] : undefined;
140
+ }, values);
141
+ };
190
142
 
191
- 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; }
192
- 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(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; }
143
+ 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; }
144
+ 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(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; }
193
145
  var attachPosition = function attachPosition(options) {
194
146
  return options.map(function (option, index) {
195
- return _objectSpread$2(_objectSpread$2({}, option), {}, {
147
+ return _objectSpread$4(_objectSpread$4({}, option), {}, {
196
148
  position: index
197
149
  });
198
150
  });
@@ -201,8 +153,11 @@ var useOptionFields = function useOptionFields(_ref) {
201
153
  var options = _ref.options,
202
154
  onChange = _ref.onChange,
203
155
  shouldDestroy = _ref.shouldDestroy,
204
- _ref$itemLabel = _ref.itemLabel,
205
- itemLabel = _ref$itemLabel === void 0 ? DEFAULT_OPTION_LABEL : _ref$itemLabel;
156
+ itemLabel = _ref.itemLabel,
157
+ shouldResetEmptyOptionOnBlur = _ref.shouldResetEmptyOptionOnBlur,
158
+ name = _ref.name,
159
+ destroyFlagName = _ref.destroyFlagName,
160
+ isNewItemsPrefilled = _ref.isNewItemsPrefilled;
206
161
  var _useState = React.useState(false),
207
162
  _useState2 = _slicedToArray(_useState, 2),
208
163
  shouldFocus = _useState2[0],
@@ -211,11 +166,20 @@ var useOptionFields = function useOptionFields(_ref) {
211
166
  id: "",
212
167
  value: ""
213
168
  });
169
+ var _useField = formik.useField(name),
170
+ _useField2 = _slicedToArray(_useField, 3);
171
+ _useField2[0];
172
+ _useField2[1];
173
+ var helpers = _useField2[2];
174
+ var setValue = helpers.setValue;
214
175
  var handleChange = function handleChange(id, value) {
215
176
  var isOnBlur = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
216
177
  // Ignores onBlur events if the value in the input field is not cleared.
217
178
  // The value will be reset to the initial value if user clicks outside after clearing the value.
218
- if (isOnBlur && !ramda.isEmpty(value)) return;
179
+ // This can be controlled using the prop `shouldResetEmptyOptionOnBlur`.
180
+ if (isOnBlur && (neetoCist.isNotEmpty(value) || !shouldResetEmptyOptionOnBlur)) {
181
+ return;
182
+ }
219
183
  var index = neetoCist.findIndexById(id, options);
220
184
  if (editingOptionDetailsRef.current.id !== id) {
221
185
  editingOptionDetailsRef.current = {
@@ -226,49 +190,50 @@ var useOptionFields = function useOptionFields(_ref) {
226
190
 
227
191
  // Resets the value to initial value if the user cleared and blurred the input field.
228
192
  var valueToUpdate = isOnBlur ? editingOptionDetailsRef.current.value : value;
229
- onChange(ramda.assocPath([index, "label"], valueToUpdate, options));
193
+ var nextOptions = ramda.assocPath([index, "label"], valueToUpdate, options);
194
+ setValue(nextOptions);
195
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextOptions);
230
196
  };
231
- var _generateLabel = function generateLabel(opts, count) {
232
- var labelCount = count || opts.length + 1;
233
- var tempLabel = "".concat(itemLabel, " ").concat(labelCount);
234
- var isDuplicateLabel = ramda.pluck("label", opts).includes(tempLabel);
235
- return isDuplicateLabel ? _generateLabel(opts, labelCount + 1) : tempLabel;
236
- };
237
- var handleDelete = function handleDelete(_, id) {
197
+ var handleDelete = function handleDelete(id, arrayHelpers) {
238
198
  var nextOptions;
239
199
  var indexToDelete = neetoCist.findIndexById(id, options);
240
200
  if (shouldDestroy) {
241
- nextOptions = ramda.assocPath([indexToDelete, "deleted"], true, options);
201
+ nextOptions = ramda.assocPath([indexToDelete, destroyFlagName], true, options);
202
+ setValue(nextOptions);
242
203
  } else {
204
+ arrayHelpers.remove(indexToDelete);
243
205
  nextOptions = attachPosition(ramda.remove(indexToDelete, 1, options));
244
206
  }
245
- onChange(nextOptions);
207
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextOptions);
246
208
  };
247
209
  var handleDragEnd = function handleDragEnd(_ref2) {
248
210
  var source = _ref2.source,
249
211
  destination = _ref2.destination;
250
212
  // When dragged outside of draggable
251
213
  if (destination === null) return;
252
- var deletedOptions = options.filter(ramda.prop("deleted"));
253
- var filteredOptions = filterDeletedRecords(options);
214
+ var deletedOptions = options.filter(ramda.prop(destroyFlagName));
215
+ var filteredOptions = filterDeletedRecords(options, destroyFlagName);
254
216
  var nextOptions = ramda.move(source.index, destination.index, filteredOptions);
255
217
  var finalOptions = attachPosition(nextOptions);
256
- onChange([].concat(_toConsumableArray(deletedOptions), _toConsumableArray(finalOptions)));
218
+ setValue([].concat(_toConsumableArray(deletedOptions), _toConsumableArray(finalOptions)));
219
+ onChange === null || onChange === void 0 ? void 0 : onChange([].concat(_toConsumableArray(deletedOptions), _toConsumableArray(finalOptions)));
257
220
  };
258
221
  var handleAddOption = function handleAddOption() {
259
222
  var id = randomId();
260
223
  var newOption = {
261
224
  id: "draft-".concat(id),
262
225
  altId: "alt-".concat(id),
263
- label: _generateLabel(options, null),
226
+ label: isNewItemsPrefilled ? _generateLabel(itemLabel, options) : "",
264
227
  position: options.length
265
228
  };
266
229
  setShouldFocus(true);
267
- onChange(ramda.append(newOption, options));
230
+ var nextOptions = ramda.append(newOption, options);
231
+ setValue(nextOptions);
232
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextOptions);
268
233
  };
269
234
  var handleBulkAddOption = function handleBulkAddOption(optionsString) {
270
235
  setShouldFocus(true);
271
- var position = filterDeletedRecords(options).length;
236
+ var position = options.length;
272
237
  var newOptions = optionsString.trim().split(/\r?\n|,/).filter(neetoCist.isNotEmpty).map(function (option, index) {
273
238
  return {
274
239
  id: "draft-".concat(randomId()),
@@ -277,23 +242,23 @@ var useOptionFields = function useOptionFields(_ref) {
277
242
  position: position + index
278
243
  };
279
244
  });
280
- onChange([].concat(_toConsumableArray(options), _toConsumableArray(newOptions)));
245
+ var nextOptions = [].concat(_toConsumableArray(options), _toConsumableArray(newOptions));
246
+ setValue(nextOptions);
247
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextOptions);
281
248
  };
282
- var handleKeyDown = function handleKeyDown() {
283
- return function (event) {
284
- if (event.key !== "Enter") return;
285
- var form = event.target.form;
286
- var inputs = Array.from(form.querySelectorAll("input"));
287
- var currentInput = inputs.indexOf(event.target);
288
- if (currentInput >= inputs.length - 1) {
289
- handleAddOption();
290
- } else {
291
- var _inputs;
292
- (_inputs = inputs[currentInput + 1]) === null || _inputs === void 0 ? void 0 : _inputs.focus();
293
- event.preventDefault();
294
- }
295
- event.stopPropagation();
296
- };
249
+ var handleKeyDown = function handleKeyDown(event) {
250
+ if (event.key !== "Enter") return;
251
+ var form = event.target.form;
252
+ var inputs = Array.from(form.querySelectorAll("input"));
253
+ var currentInput = inputs.indexOf(event.target);
254
+ if (currentInput >= inputs.length - 1) {
255
+ handleAddOption();
256
+ } else {
257
+ var _inputs;
258
+ (_inputs = inputs[currentInput + 1]) === null || _inputs === void 0 ? void 0 : _inputs.focus();
259
+ event.preventDefault();
260
+ }
261
+ event.stopPropagation();
297
262
  };
298
263
  return {
299
264
  shouldFocus: shouldFocus,
@@ -306,6 +271,89 @@ var useOptionFields = function useOptionFields(_ref) {
306
271
  };
307
272
  };
308
273
 
274
+ 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; }
275
+ 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(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; }
276
+ var DragHandle = function DragHandle(props) {
277
+ return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread$3(_objectSpread$3({
278
+ className: "neeto-ui-text-gray-500 flex h-8 flex-shrink-0 cursor-grab items-center",
279
+ "data-cy": "drag-handle",
280
+ "data-testid": "drag-handle"
281
+ }, props), {}, {
282
+ children: /*#__PURE__*/jsxRuntime.jsx(Drag, {
283
+ size: 16,
284
+ strokeWidth: 2
285
+ })
286
+ }));
287
+ };
288
+
289
+ 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; }
290
+ 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(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; }
291
+ var BlockOption = reactUtils.withT(function (_ref) {
292
+ var t = _ref.t,
293
+ innerRef = _ref.innerRef,
294
+ _ref$hideDeleteOption = _ref.hideDeleteOption,
295
+ hideDeleteOption = _ref$hideDeleteOption === void 0 ? false : _ref$hideDeleteOption,
296
+ draggableProps = _ref.draggableProps,
297
+ dragHandleProps = _ref.dragHandleProps,
298
+ label = _ref.label,
299
+ onEdit = _ref.onEdit,
300
+ handleDeleteClick = _ref.handleDeleteClick,
301
+ id = _ref.id,
302
+ isDraggable = _ref.isDraggable,
303
+ optionIndex = _ref.optionIndex,
304
+ arrayHelpers = _ref.arrayHelpers;
305
+ return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread$2(_objectSpread$2(_objectSpread$2({
306
+ ref: innerRef
307
+ }, draggableProps), dragHandleProps), {}, {
308
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
309
+ className: "neeto-ui-border-gray-400 hover:neeto-ui-bg-gray-200 neeto-ui-rounded-sm shadow-xs group relative mb-2 flex h-10 cursor-pointer items-center gap-2 border p-3 transition-colors duration-300 ease-in-out",
310
+ "data-cy": "address-field-block",
311
+ children: [isDraggable && /*#__PURE__*/jsxRuntime.jsx(DragHandle, _objectSpread$2(_objectSpread$2({}, dragHandleProps), {}, {
312
+ "data-testid": "drag-handle-".concat(optionIndex)
313
+ })), /*#__PURE__*/jsxRuntime.jsx(Typography, {
314
+ className: "flex-grow leading-4",
315
+ "data-cy": "address-text-field",
316
+ "data-testid": "address-text-field",
317
+ style: "body2",
318
+ children: label
319
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
320
+ className: "flex items-center justify-end gap-2 opacity-0 group-hover:opacity-100",
321
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button, {
322
+ className: "neeto-ui-rounded hover:neeto-ui-bg-gray-400 p-1",
323
+ "data-cy": "address-field-edit-button",
324
+ "data-testid": "address-field-edit-button",
325
+ icon: Edit,
326
+ size: "small",
327
+ style: "text",
328
+ tooltipProps: {
329
+ content: t("neetoMolecules.common.actions.edit"),
330
+ position: "top",
331
+ touch: ["hold", 500]
332
+ },
333
+ onClick: function onClick() {
334
+ return onEdit(id);
335
+ }
336
+ }), !hideDeleteOption && /*#__PURE__*/jsxRuntime.jsx(Button, {
337
+ className: "neeto-ui-rounded hover:neeto-ui-bg-gray-400 p-1",
338
+ "data-cy": "address-field-delete-button",
339
+ "data-testid": "delete-option-button-".concat(optionIndex),
340
+ icon: Delete,
341
+ size: "small",
342
+ style: "text",
343
+ tooltipProps: {
344
+ content: t("neetoMolecules.common.actions.delete"),
345
+ position: "top",
346
+ touch: ["hold", 500]
347
+ },
348
+ onClick: function onClick() {
349
+ return handleDeleteClick(id, arrayHelpers);
350
+ }
351
+ })]
352
+ })]
353
+ })
354
+ }));
355
+ });
356
+
309
357
  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; }
310
358
  function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
311
359
  var InputOption = function InputOption(_ref) {
@@ -319,22 +367,31 @@ var InputOption = function InputOption(_ref) {
319
367
  onKeyDown = _ref.onKeyDown,
320
368
  onDelete = _ref.onDelete,
321
369
  _onChange = _ref.onChange,
322
- label = _ref.label,
323
- index = _ref.index,
370
+ optionIndex = _ref.optionIndex,
324
371
  disabled = _ref.disabled,
325
372
  isTextArea = _ref.isTextArea,
326
- id = _ref.id;
373
+ id = _ref.id,
374
+ isDraggable = _ref.isDraggable,
375
+ name = _ref.name,
376
+ placeholder = _ref.placeholder,
377
+ _onBlur = _ref.onBlur,
378
+ arrayHelpers = _ref.arrayHelpers;
327
379
  var _useTranslation = reactI18next.useTranslation(),
328
380
  t = _useTranslation.t;
329
- var Component = isTextArea ? Textarea : Input;
381
+ var Component = isTextArea ? Textarea$1 : Input;
382
+ var _useField = formik.useField(name),
383
+ _useField2 = _slicedToArray(_useField, 1),
384
+ field = _useField2[0];
330
385
  return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread$1(_objectSpread$1({
331
386
  ref: innerRef
332
387
  }, _objectSpread$1(_objectSpread$1({}, draggableProps), dragHandleProps)), {}, {
333
388
  "data-cy": "form-block-options",
334
389
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
335
390
  className: "nf-input-options group relative mb-2 flex items-start gap-1",
336
- children: [/*#__PURE__*/jsxRuntime.jsx(DragHandle, _objectSpread$1({}, dragHandleProps)), isPictureChoice && /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
337
- children: index === 0 ? /*#__PURE__*/jsxRuntime.jsx("img", {
391
+ children: [isDraggable && /*#__PURE__*/jsxRuntime.jsx(DragHandle, _objectSpread$1(_objectSpread$1({}, dragHandleProps), {}, {
392
+ "data-testid": "drag-handle-".concat(optionIndex)
393
+ })), isPictureChoice && /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
394
+ children: optionIndex === 0 ? /*#__PURE__*/jsxRuntime.jsx("img", {
338
395
  className: "neeto-ui-rounded-sm h-8 w-8 cursor-pointer overflow-hidden object-cover",
339
396
  "data-testid": "picture-choice-option",
340
397
  src: "https://i.pravatar.cc/300"
@@ -346,16 +403,17 @@ var InputOption = function InputOption(_ref) {
346
403
  })
347
404
  }), /*#__PURE__*/jsxRuntime.jsx(Component, {
348
405
  disabled: disabled,
406
+ name: name,
407
+ onKeyDown: onKeyDown,
408
+ placeholder: placeholder,
349
409
  autoFocus: shouldFocus,
350
- "data-cy": "option-input-".concat(index),
351
- "data-testid": isTextArea ? "textarea-option" : "input-option",
352
- placeholder: t("neetoMolecules.optionFields.optionName"),
353
- value: label,
410
+ "data-cy": "option-input-".concat(optionIndex),
411
+ "data-testid": "".concat(isTextArea ? "textarea-option" : "input-option", "-").concat(optionIndex),
354
412
  suffix: !hideDeleteOption && /*#__PURE__*/jsxRuntime.jsx(Button, {
355
413
  disabled: disabled,
356
414
  className: "p-0.5",
357
- "data-cy": "delete-option-button-".concat(index),
358
- "data-testid": "delete-option-button",
415
+ "data-cy": "delete-option-button-".concat(optionIndex),
416
+ "data-testid": "delete-option-button-".concat(optionIndex),
359
417
  icon: Delete,
360
418
  size: "small",
361
419
  style: "text",
@@ -365,39 +423,97 @@ var InputOption = function InputOption(_ref) {
365
423
  touch: ["hold", 500]
366
424
  },
367
425
  onClick: function onClick() {
368
- return onDelete({
369
- index: index,
370
- id: id
371
- });
426
+ return onDelete(id, arrayHelpers);
372
427
  }
373
428
  }),
374
- onBlur: function onBlur(_ref2) {
429
+ onChange: function onChange(_ref2) {
375
430
  var target = _ref2.target;
376
- return _onChange(id, target.value, true);
377
- },
378
- onChange: function onChange(_ref3) {
379
- var target = _ref3.target;
380
431
  return _onChange(id, target.value);
381
432
  },
382
- onFocus: function onFocus(_ref4) {
383
- var target = _ref4.target;
433
+ onFocus: function onFocus(_ref3) {
434
+ var target = _ref3.target;
384
435
  return target.select();
385
436
  },
386
- onKeyDown: onKeyDown(index)
437
+ onBlur: function onBlur(event) {
438
+ _onChange(id, event.target.value, true);
439
+ _onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(id, event.target.value);
440
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
441
+ args[_key - 1] = arguments[_key];
442
+ }
443
+ field.onBlur.apply(field, [event].concat(args));
444
+ }
387
445
  })]
388
446
  })
389
447
  }));
390
448
  };
391
449
 
450
+ var OptionField = function OptionField(_ref) {
451
+ var option = _ref.option,
452
+ editable = _ref.editable,
453
+ dragHandleProps = _ref.dragHandleProps,
454
+ draggableProps = _ref.draggableProps,
455
+ handleDeleteClick = _ref.handleDeleteClick,
456
+ hideDeleteOption = _ref.hideDeleteOption,
457
+ innerRef = _ref.innerRef,
458
+ onEdit = _ref.onEdit,
459
+ draggable = _ref.draggable,
460
+ disabled = _ref.disabled,
461
+ isPictureChoice = _ref.isPictureChoice,
462
+ isTextArea = _ref.isTextArea,
463
+ shouldFocus = _ref.shouldFocus,
464
+ isEditable = _ref.isEditable,
465
+ itemLabel = _ref.itemLabel,
466
+ handleChange = _ref.handleChange,
467
+ handleKeyDown = _ref.handleKeyDown,
468
+ name = _ref.name,
469
+ optionIndex = _ref.optionIndex,
470
+ onBlur = _ref.onBlur,
471
+ arrayHelpers = _ref.arrayHelpers;
472
+ if (!editable) {
473
+ return /*#__PURE__*/jsxRuntime.jsx(BlockOption, {
474
+ arrayHelpers: arrayHelpers,
475
+ dragHandleProps: dragHandleProps,
476
+ draggableProps: draggableProps,
477
+ handleDeleteClick: handleDeleteClick,
478
+ hideDeleteOption: hideDeleteOption,
479
+ innerRef: innerRef,
480
+ onEdit: onEdit,
481
+ optionIndex: optionIndex,
482
+ id: option.id,
483
+ isDraggable: draggable && !disabled,
484
+ label: option.label
485
+ });
486
+ }
487
+ return /*#__PURE__*/jsxRuntime.jsx(InputOption, {
488
+ arrayHelpers: arrayHelpers,
489
+ dragHandleProps: dragHandleProps,
490
+ draggableProps: draggableProps,
491
+ hideDeleteOption: hideDeleteOption,
492
+ innerRef: innerRef,
493
+ isPictureChoice: isPictureChoice,
494
+ isTextArea: isTextArea,
495
+ name: name,
496
+ onBlur: onBlur,
497
+ optionIndex: optionIndex,
498
+ shouldFocus: shouldFocus,
499
+ disabled: !isEditable || disabled,
500
+ id: option.id,
501
+ isDraggable: draggable && !disabled,
502
+ placeholder: generatePlaceholder(itemLabel, optionIndex),
503
+ onChange: handleChange,
504
+ onDelete: handleDeleteClick,
505
+ onKeyDown: handleKeyDown
506
+ });
507
+ };
508
+
392
509
  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; }
393
510
  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(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; }
394
511
  var OptionFields = function OptionFields(_ref) {
395
- var options = _ref.options,
512
+ var name = _ref.name,
396
513
  error = _ref.error,
397
- onChange = _ref.onChange,
398
- name = _ref.name,
399
514
  onDelete = _ref.onDelete,
400
- itemLabel = _ref.itemLabel,
515
+ onChange = _ref.onChange,
516
+ onBlur = _ref.onBlur,
401
517
  _ref$onEdit = _ref.onEdit,
402
518
  onEdit = _ref$onEdit === void 0 ? neetoCist.noop : _ref$onEdit,
403
519
  _ref$buttonProps = _ref.buttonProps,
@@ -408,12 +524,26 @@ var OptionFields = function OptionFields(_ref) {
408
524
  draggable = _ref$draggable === void 0 ? false : _ref$draggable,
409
525
  _ref$editable = _ref.editable,
410
526
  editable = _ref$editable === void 0 ? true : _ref$editable,
527
+ _ref$disabled = _ref.disabled,
528
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
529
+ _ref$isAddOptionEnabl = _ref.isAddOptionEnabled,
530
+ isAddOptionEnabled = _ref$isAddOptionEnabl === void 0 ? true : _ref$isAddOptionEnabl,
531
+ _ref$isDeleteOptionEn = _ref.isDeleteOptionEnabled,
532
+ isDeleteOptionEnabled = _ref$isDeleteOptionEn === void 0 ? true : _ref$isDeleteOptionEn,
411
533
  _ref$isPictureChoice = _ref.isPictureChoice,
412
534
  isPictureChoice = _ref$isPictureChoice === void 0 ? false : _ref$isPictureChoice,
413
535
  _ref$isTextArea = _ref.isTextArea,
414
536
  isTextArea = _ref$isTextArea === void 0 ? false : _ref$isTextArea,
415
537
  _ref$shouldDestroy = _ref.shouldDestroy,
416
538
  shouldDestroy = _ref$shouldDestroy === void 0 ? false : _ref$shouldDestroy,
539
+ _ref$destroyFlagName = _ref.destroyFlagName,
540
+ destroyFlagName = _ref$destroyFlagName === void 0 ? "deleted" : _ref$destroyFlagName,
541
+ _ref$shouldResetEmpty = _ref.shouldResetEmptyOptionOnBlur,
542
+ shouldResetEmptyOptionOnBlur = _ref$shouldResetEmpty === void 0 ? true : _ref$shouldResetEmpty,
543
+ _ref$isNewItemsPrefil = _ref.isNewItemsPrefilled,
544
+ isNewItemsPrefilled = _ref$isNewItemsPrefil === void 0 ? true : _ref$isNewItemsPrefil,
545
+ _ref$itemLabel = _ref.itemLabel,
546
+ itemLabel = _ref$itemLabel === void 0 ? DEFAULT_OPTION_LABEL : _ref$itemLabel,
417
547
  _ref$bulkActionProps = _ref.bulkActionProps,
418
548
  bulkActionProps = _ref$bulkActionProps === void 0 ? {
419
549
  enabled: false,
@@ -425,11 +555,21 @@ var OptionFields = function OptionFields(_ref) {
425
555
  _useState2 = _slicedToArray(_useState, 2),
426
556
  isBulkOptionModalOpen = _useState2[0],
427
557
  setIsBulkOptionModalOpen = _useState2[1];
558
+ var _useField = formik.useField(name),
559
+ _useField2 = _slicedToArray(_useField, 2),
560
+ field = _useField2[0],
561
+ meta = _useField2[1];
562
+ var fieldError = meta.touched ? meta.error : null;
563
+ var options = field.value;
428
564
  var _useOptionFields = useOptionFields({
429
565
  options: options,
430
566
  onChange: onChange,
431
567
  shouldDestroy: shouldDestroy,
432
- itemLabel: itemLabel
568
+ itemLabel: itemLabel,
569
+ shouldResetEmptyOptionOnBlur: shouldResetEmptyOptionOnBlur,
570
+ destroyFlagName: destroyFlagName,
571
+ name: name,
572
+ isNewItemsPrefilled: isNewItemsPrefilled
433
573
  }),
434
574
  shouldFocus = _useOptionFields.shouldFocus,
435
575
  handleAddOption = _useOptionFields.handleAddOption,
@@ -442,20 +582,49 @@ var OptionFields = function OptionFields(_ref) {
442
582
  // Temporarily disables the modifications to options when changed are getting saved to server
443
583
  // This condition only needed for server id generated types
444
584
  var isEditable = true;
445
- if (shouldDestroy) {
446
- isEditable = options.every(ramda.prop("id") || error) && !options.some(ramda.prop("_destroy"));
447
- }
448
- var handleDeleteClick = function handleDeleteClick(_ref2) {
449
- var index = _ref2.index,
450
- id = _ref2.id;
451
- var deleteFunction = onDelete !== null && onDelete !== void 0 ? onDelete : handleDelete;
452
- deleteFunction(index, id);
585
+ if (shouldDestroy) isEditable = options.every(ramda.prop("id") || error);
586
+ var orderedOptions = getOrderedOptions(options, destroyFlagName);
587
+ var filteredOptions = orderedOptions.filter(function (_ref2) {
588
+ var deleted = _ref2[destroyFlagName];
589
+ return !deleted;
590
+ });
591
+ var hideDeleteOption = filteredOptions.length <= minOptions || disabled || !isDeleteOptionEnabled;
592
+ var optionFieldProps = {
593
+ disabled: disabled,
594
+ draggable: draggable,
595
+ editable: editable,
596
+ handleChange: handleChange,
597
+ handleDeleteClick: onDelete !== null && onDelete !== void 0 ? onDelete : handleDelete,
598
+ handleKeyDown: handleKeyDown,
599
+ hideDeleteOption: hideDeleteOption,
600
+ isEditable: isEditable,
601
+ isPictureChoice: isPictureChoice,
602
+ isTextArea: isTextArea,
603
+ itemLabel: itemLabel,
604
+ onEdit: onEdit,
605
+ onBlur: onBlur,
606
+ shouldFocus: shouldFocus
453
607
  };
454
- var orderedVisibleOptions = getOrderedVisibleOptions(options);
455
- var hideDeleteOption = orderedVisibleOptions.length <= minOptions;
456
- var getUniqueOptionId = function getUniqueOptionId(option) {
457
- var _option$id, _option$position;
458
- return option.altId || ((_option$id = option.id) === null || _option$id === void 0 ? void 0 : _option$id.toString()) || ((_option$position = option.position) === null || _option$position === void 0 ? void 0 : _option$position.toString()) || neetoCist.slugify(option.label);
608
+
609
+ // To fix the element positioned incorrectly while dragging when in a pane or modal.
610
+ // https://github.com/hello-pangea/dnd/issues/560#issuecomment-1679201455
611
+ var renderDragClone = function renderDragClone(provided, _, rubric) {
612
+ var draggingIndex = rubric["source"].index;
613
+ var option = filteredOptions[draggingIndex];
614
+ var formikIndex = neetoCist.findIndexById(option.id, options);
615
+ return /*#__PURE__*/jsxRuntime.jsx(OptionField, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, optionFieldProps), {}, {
616
+ option: option
617
+ })), {}, {
618
+ dragHandleProps: provided.dragHandleProps,
619
+ innerRef: null,
620
+ name: "".concat(name, ".").concat(formikIndex, ".label"),
621
+ optionIndex: draggingIndex,
622
+ draggableProps: _objectSpread(_objectSpread({}, provided.draggableProps), {}, {
623
+ style: _objectSpread(_objectSpread({}, provided.draggableProps.style), {}, {
624
+ zIndex: 999999
625
+ })
626
+ })
627
+ }));
459
628
  };
460
629
  return /*#__PURE__*/jsxRuntime.jsxs("form", {
461
630
  onSubmit: function onSubmit(e) {
@@ -466,6 +635,7 @@ var OptionFields = function OptionFields(_ref) {
466
635
  children: [/*#__PURE__*/jsxRuntime.jsx(dnd.Droppable, {
467
636
  droppableId: "neeto-molecules-option-fields-".concat(name),
468
637
  isDropDisabled: !draggable,
638
+ renderClone: renderDragClone,
469
639
  children: function children(_ref3) {
470
640
  var innerRef = _ref3.innerRef,
471
641
  droppableProps = _ref3.droppableProps,
@@ -473,56 +643,44 @@ var OptionFields = function OptionFields(_ref) {
473
643
  return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
474
644
  ref: innerRef
475
645
  }, droppableProps), {}, {
476
- children: [orderedVisibleOptions.map(function (option, index) {
477
- return /*#__PURE__*/React.createElement(dnd.Draggable, {
478
- index: index,
479
- dataKey: getUniqueOptionId(option),
480
- draggableId: getUniqueOptionId(option),
481
- isDragDisabled: !draggable,
482
- key: getUniqueOptionId(option)
483
- }, function (_ref4) {
484
- var innerRef = _ref4.innerRef,
485
- draggableProps = _ref4.draggableProps,
486
- dragHandleProps = _ref4.dragHandleProps;
487
- return editable ? /*#__PURE__*/jsxRuntime.jsx(InputOption, {
488
- dragHandleProps: dragHandleProps,
489
- draggableProps: draggableProps,
490
- hideDeleteOption: hideDeleteOption,
491
- index: index,
492
- innerRef: innerRef,
493
- isPictureChoice: isPictureChoice,
494
- isTextArea: isTextArea,
495
- name: name,
496
- shouldFocus: shouldFocus,
497
- disabled: !isEditable,
498
- id: option.id,
499
- label: option.label,
500
- onChange: handleChange,
501
- onDelete: handleDeleteClick,
502
- onKeyDown: handleKeyDown
503
- }) : /*#__PURE__*/jsxRuntime.jsx(BlockOption, {
504
- dragHandleProps: dragHandleProps,
505
- draggableProps: draggableProps,
506
- handleDeleteClick: handleDeleteClick,
507
- hideDeleteOption: hideDeleteOption,
508
- index: index,
509
- innerRef: innerRef,
510
- onEdit: onEdit,
511
- id: option.id,
512
- label: option.label
646
+ children: [/*#__PURE__*/jsxRuntime.jsx(formik.FieldArray, {
647
+ name: name,
648
+ children: function children(arrayHelpers) {
649
+ var options = resolveFormikValue(name, arrayHelpers.form.values);
650
+ return options === null || options === void 0 ? void 0 : options.map(function (option, index) {
651
+ if (option !== null && option !== void 0 && option[destroyFlagName]) return null;
652
+ var optionIndex = neetoCist.findIndexById(option.id, filteredOptions);
653
+ return /*#__PURE__*/jsxRuntime.jsx(dnd.Draggable, {
654
+ dataKey: getUniqueOptionId(option),
655
+ draggableId: getUniqueOptionId(option),
656
+ index: optionIndex,
657
+ isDragDisabled: !draggable,
658
+ children: function children(_ref4) {
659
+ var innerRef = _ref4.innerRef,
660
+ draggableProps = _ref4.draggableProps,
661
+ dragHandleProps = _ref4.dragHandleProps;
662
+ return /*#__PURE__*/jsxRuntime.jsx(OptionField, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, optionFieldProps), {}, {
663
+ arrayHelpers: arrayHelpers,
664
+ dragHandleProps: dragHandleProps,
665
+ draggableProps: draggableProps,
666
+ innerRef: innerRef,
667
+ option: option,
668
+ optionIndex: optionIndex
669
+ })), {}, {
670
+ name: "".concat(name, ".").concat(index, ".label")
671
+ }));
672
+ }
673
+ }, getUniqueOptionId(option));
513
674
  });
514
- });
515
- }), error && /*#__PURE__*/jsxRuntime.jsx(Typography, {
516
- className: "neeto-ui-input__error",
517
- "data-testid": "validation-error-container",
518
- style: "body3",
519
- children: error
520
- }), placeholder]
675
+ }
676
+ }), placeholder, /*#__PURE__*/jsxRuntime.jsx(FormError, {
677
+ error: error !== null && error !== void 0 ? error : fieldError
678
+ })]
521
679
  }));
522
680
  }
523
681
  }), /*#__PURE__*/jsxRuntime.jsxs("div", {
524
682
  className: "mt-4 flex items-center justify-between",
525
- children: [/*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread({
683
+ children: [isAddOptionEnabled && /*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread({
526
684
  "data-cy": "add-option-link",
527
685
  "data-testid": "add-option-link",
528
686
  disabled: !isEditable,