powr-sdk-web 5.6.9 → 5.6.10

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.
@@ -225,12 +225,19 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
225
225
  return candidate;
226
226
  };
227
227
  var addField = function addField(type) {
228
- var index = formDraft.fields.length + 1;
229
228
  setFormDraft(function (prev) {
229
+ var index = prev.fields.length + 1;
230
+ var defaults = type === 'mobile' ? {
231
+ name: 'whatsapp',
232
+ label: 'Mobile Number'
233
+ } : {
234
+ name: "field".concat(index),
235
+ label: "Field ".concat(index)
236
+ };
230
237
  return _objectSpread(_objectSpread({}, prev), {}, {
231
- fields: [].concat(_toConsumableArray(prev.fields), [_objectSpread({
232
- name: "field".concat(index),
233
- label: "Field ".concat(index),
238
+ fields: [].concat(_toConsumableArray(prev.fields), [_objectSpread(_objectSpread({
239
+ id: "".concat(Date.now(), "-").concat(index)
240
+ }, defaults), {}, {
234
241
  type: type,
235
242
  required: false
236
243
  }, type === 'radio' ? {
@@ -259,7 +266,7 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
259
266
  };
260
267
  var createForm = /*#__PURE__*/function () {
261
268
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
262
- var trimmedTitle, trimmedName, trimmedId, hasInvalidField, fieldNames, duplicateNames, payload, _yield$apiCall3, result, ok, errorMessage, _t3;
269
+ var trimmedTitle, trimmedName, trimmedId, hasInvalidField, fieldNames, duplicateNames, usedNames, normalizedFields, payload, _yield$apiCall3, result, ok, errorMessage, _t3;
263
270
  return _regenerator().w(function (_context3) {
264
271
  while (1) switch (_context3.p = _context3.n) {
265
272
  case 0:
@@ -314,20 +321,34 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
314
321
  case 5:
315
322
  setIsSaving(true);
316
323
  _context3.p = 6;
324
+ usedNames = new Set();
325
+ normalizedFields = formDraft.fields.map(function (field, index, allFields) {
326
+ var _field$name2;
327
+ var others = allFields.filter(function (_, i) {
328
+ return i !== index;
329
+ });
330
+ var name = ((_field$name2 = field.name) === null || _field$name2 === void 0 ? void 0 : _field$name2.trim()) || uniqueFieldName(field.label, index, others);
331
+ var candidate = name;
332
+ var suffix = 2;
333
+ while (usedNames.has(candidate)) {
334
+ candidate = "".concat(name).concat(suffix);
335
+ suffix += 1;
336
+ }
337
+ usedNames.add(candidate);
338
+ return _objectSpread({
339
+ name: candidate,
340
+ label: field.label.trim(),
341
+ type: field.type,
342
+ required: !!field.required
343
+ }, field.type === 'radio' ? {
344
+ options: field.options || []
345
+ } : {});
346
+ });
317
347
  payload = {
318
348
  formTitle: trimmedTitle,
319
349
  formName: trimmedName,
320
350
  formId: trimmedId,
321
- fields: formDraft.fields.map(function (field) {
322
- return _objectSpread({
323
- name: field.name.trim(),
324
- label: field.label.trim(),
325
- type: field.type,
326
- required: !!field.required
327
- }, field.type === 'radio' ? {
328
- options: field.options || []
329
- } : {});
330
- })
351
+ fields: normalizedFields
331
352
  };
332
353
  _context3.n = 7;
333
354
  return (0, _auth.apiCall)(apiUrl, "/forms/create-form", projectId, {
@@ -535,7 +556,7 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
535
556
  className: "text-sm font-semibold text-gray-900"
536
557
  }, "Fields"), /*#__PURE__*/_react["default"].createElement("div", {
537
558
  className: "flex flex-wrap gap-2"
538
- }, ['text', 'email', 'textarea', 'radio', 'fileUploader'].map(function (type) {
559
+ }, ['text', 'email', 'mobile', 'textarea', 'radio', 'fileUploader'].map(function (type) {
539
560
  return /*#__PURE__*/_react["default"].createElement("button", {
540
561
  key: type,
541
562
  type: "button",
@@ -550,7 +571,7 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
550
571
  className: "space-y-4"
551
572
  }, formDraft.fields.map(function (field, index) {
552
573
  return /*#__PURE__*/_react["default"].createElement("div", {
553
- key: "".concat(field.name, "-").concat(index),
574
+ key: field.id || index,
554
575
  className: "rounded-lg border border-gray-200 p-4 space-y-3"
555
576
  }, /*#__PURE__*/_react["default"].createElement("div", {
556
577
  className: "flex items-center justify-between"
@@ -568,12 +589,8 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
568
589
  type: "text",
569
590
  value: field.label,
570
591
  onChange: function onChange(e) {
571
- var label = e.target.value;
572
- updateField(index, {
573
- label: label,
574
- name: uniqueFieldName(label, index, formDraft.fields.filter(function (_, i) {
575
- return i !== index;
576
- }))
592
+ return updateField(index, {
593
+ label: e.target.value
577
594
  });
578
595
  },
579
596
  placeholder: "Label",
@@ -202,6 +202,26 @@ var PowrForm = function PowrForm(_ref) {
202
202
  }), {
203
203
  className: inputClass
204
204
  })));
205
+ case "mobile":
206
+ return /*#__PURE__*/_react["default"].createElement(InputField, {
207
+ key: field.name,
208
+ label: field.label,
209
+ required: field.required,
210
+ error: errors[field.name],
211
+ theme: theme
212
+ }, /*#__PURE__*/_react["default"].createElement("input", _extends({
213
+ type: "tel",
214
+ inputMode: "tel",
215
+ autoComplete: "tel"
216
+ }, register(field.name, {
217
+ required: field.required,
218
+ pattern: {
219
+ value: /^[0-9+\-\s()]{8,15}$/,
220
+ message: "Invalid mobile number"
221
+ }
222
+ }), {
223
+ className: inputClass
224
+ })));
205
225
  case "textarea":
206
226
  return /*#__PURE__*/_react["default"].createElement(InputField, {
207
227
  key: field.name,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powr-sdk-web",
3
- "version": "5.6.9",
3
+ "version": "5.6.10",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "build": "babel src -d dist --copy-files",