powr-sdk-web 5.6.8 → 5.6.9
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.
- package/dist/forms/admin.js +93 -57
- package/package.json +1 -1
package/dist/forms/admin.js
CHANGED
|
@@ -52,39 +52,43 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
|
|
|
52
52
|
_useState0 = _slicedToArray(_useState9, 2),
|
|
53
53
|
isSaving = _useState0[0],
|
|
54
54
|
setIsSaving = _useState0[1];
|
|
55
|
-
var _useState1 = (0, _react.useState)(
|
|
55
|
+
var _useState1 = (0, _react.useState)(''),
|
|
56
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
57
|
+
createFeedback = _useState10[0],
|
|
58
|
+
setCreateFeedback = _useState10[1];
|
|
59
|
+
var _useState11 = (0, _react.useState)({
|
|
56
60
|
formTitle: '',
|
|
57
61
|
formName: '',
|
|
58
62
|
formId: '',
|
|
59
63
|
fields: []
|
|
60
64
|
}),
|
|
61
|
-
_useState10 = _slicedToArray(_useState1, 2),
|
|
62
|
-
formDraft = _useState10[0],
|
|
63
|
-
setFormDraft = _useState10[1];
|
|
64
|
-
var _useState11 = (0, _react.useState)(null),
|
|
65
65
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
var _useState13 = (0, _react.useState)(
|
|
66
|
+
formDraft = _useState12[0],
|
|
67
|
+
setFormDraft = _useState12[1];
|
|
68
|
+
var _useState13 = (0, _react.useState)(null),
|
|
69
69
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
var _useState15 = (0, _react.useState)(
|
|
70
|
+
selectedForm = _useState14[0],
|
|
71
|
+
setSelectedForm = _useState14[1];
|
|
72
|
+
var _useState15 = (0, _react.useState)(false),
|
|
73
73
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
var _useState17 = (0, _react.useState)(
|
|
74
|
+
showDetailModal = _useState16[0],
|
|
75
|
+
setShowDetailModal = _useState16[1];
|
|
76
|
+
var _useState17 = (0, _react.useState)('responses'),
|
|
77
77
|
_useState18 = _slicedToArray(_useState17, 2),
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
var _useState19 = (0, _react.useState)(
|
|
78
|
+
activeTab = _useState18[0],
|
|
79
|
+
setActiveTab = _useState18[1];
|
|
80
|
+
var _useState19 = (0, _react.useState)([]),
|
|
81
81
|
_useState20 = _slicedToArray(_useState19, 2),
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
var _useState21 = (0, _react.useState)(
|
|
82
|
+
formResponses = _useState20[0],
|
|
83
|
+
setFormResponses = _useState20[1];
|
|
84
|
+
var _useState21 = (0, _react.useState)(0),
|
|
85
85
|
_useState22 = _slicedToArray(_useState21, 2),
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
responseCount = _useState22[0],
|
|
87
|
+
setResponseCount = _useState22[1];
|
|
88
|
+
var _useState23 = (0, _react.useState)(false),
|
|
89
|
+
_useState24 = _slicedToArray(_useState23, 2),
|
|
90
|
+
loadingResponses = _useState24[0],
|
|
91
|
+
setLoadingResponses = _useState24[1];
|
|
88
92
|
var fetchForms = /*#__PURE__*/function () {
|
|
89
93
|
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
90
94
|
var _yield$apiCall, data, ok, _t;
|
|
@@ -190,6 +194,12 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
|
|
|
190
194
|
return _ref3.apply(this, arguments);
|
|
191
195
|
};
|
|
192
196
|
}();
|
|
197
|
+
var notify = function notify(type, message) {
|
|
198
|
+
setCreateFeedback(message);
|
|
199
|
+
if (onFormAction) {
|
|
200
|
+
onFormAction(type, message);
|
|
201
|
+
}
|
|
202
|
+
};
|
|
193
203
|
var resetFormDraft = function resetFormDraft() {
|
|
194
204
|
setFormDraft({
|
|
195
205
|
formTitle: '',
|
|
@@ -201,6 +211,19 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
|
|
|
201
211
|
var slugify = function slugify(value) {
|
|
202
212
|
return value.toLowerCase().trim().replace(/[^a-z0-9]+/g, '').slice(0, 32);
|
|
203
213
|
};
|
|
214
|
+
var uniqueFieldName = function uniqueFieldName(label, index, fields) {
|
|
215
|
+
var taken = fields.map(function (field) {
|
|
216
|
+
return field.name;
|
|
217
|
+
}).filter(Boolean);
|
|
218
|
+
var base = slugify(label) || "field".concat(index + 1);
|
|
219
|
+
var candidate = base;
|
|
220
|
+
var suffix = 2;
|
|
221
|
+
while (taken.includes(candidate)) {
|
|
222
|
+
candidate = "".concat(base).concat(suffix);
|
|
223
|
+
suffix += 1;
|
|
224
|
+
}
|
|
225
|
+
return candidate;
|
|
226
|
+
};
|
|
204
227
|
var addField = function addField(type) {
|
|
205
228
|
var index = formDraft.fields.length + 1;
|
|
206
229
|
setFormDraft(function (prev) {
|
|
@@ -236,17 +259,16 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
|
|
|
236
259
|
};
|
|
237
260
|
var createForm = /*#__PURE__*/function () {
|
|
238
261
|
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
239
|
-
var trimmedTitle, trimmedName, trimmedId, hasInvalidField, payload, _yield$apiCall3, result, ok, errorMessage, _t3;
|
|
262
|
+
var trimmedTitle, trimmedName, trimmedId, hasInvalidField, fieldNames, duplicateNames, payload, _yield$apiCall3, result, ok, errorMessage, _t3;
|
|
240
263
|
return _regenerator().w(function (_context3) {
|
|
241
264
|
while (1) switch (_context3.p = _context3.n) {
|
|
242
265
|
case 0:
|
|
266
|
+
setCreateFeedback('');
|
|
243
267
|
if (projectId) {
|
|
244
268
|
_context3.n = 1;
|
|
245
269
|
break;
|
|
246
270
|
}
|
|
247
|
-
|
|
248
|
-
onFormAction('error', 'Project ID is required');
|
|
249
|
-
}
|
|
271
|
+
notify('error', 'Project ID is required');
|
|
250
272
|
return _context3.a(2);
|
|
251
273
|
case 1:
|
|
252
274
|
trimmedTitle = formDraft.formTitle.trim();
|
|
@@ -256,18 +278,14 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
|
|
|
256
278
|
_context3.n = 2;
|
|
257
279
|
break;
|
|
258
280
|
}
|
|
259
|
-
|
|
260
|
-
onFormAction('error', 'Form title, name, and ID are required');
|
|
261
|
-
}
|
|
281
|
+
notify('error', 'Form title, name, and ID are required');
|
|
262
282
|
return _context3.a(2);
|
|
263
283
|
case 2:
|
|
264
284
|
if (!(formDraft.fields.length === 0)) {
|
|
265
285
|
_context3.n = 3;
|
|
266
286
|
break;
|
|
267
287
|
}
|
|
268
|
-
|
|
269
|
-
onFormAction('error', 'Add at least one field');
|
|
270
|
-
}
|
|
288
|
+
notify('error', 'Add at least one field');
|
|
271
289
|
return _context3.a(2);
|
|
272
290
|
case 3:
|
|
273
291
|
hasInvalidField = formDraft.fields.some(function (field) {
|
|
@@ -278,13 +296,24 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
|
|
|
278
296
|
_context3.n = 4;
|
|
279
297
|
break;
|
|
280
298
|
}
|
|
281
|
-
|
|
282
|
-
onFormAction('error', 'Each field needs a name and label');
|
|
283
|
-
}
|
|
299
|
+
notify('error', 'Each field needs a name and label');
|
|
284
300
|
return _context3.a(2);
|
|
285
301
|
case 4:
|
|
302
|
+
fieldNames = formDraft.fields.map(function (field) {
|
|
303
|
+
return field.name.trim();
|
|
304
|
+
});
|
|
305
|
+
duplicateNames = fieldNames.filter(function (name, index) {
|
|
306
|
+
return fieldNames.indexOf(name) !== index;
|
|
307
|
+
});
|
|
308
|
+
if (!(duplicateNames.length > 0)) {
|
|
309
|
+
_context3.n = 5;
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
notify('error', "Each field needs a unique name. Duplicate: ".concat(_toConsumableArray(new Set(duplicateNames)).join(', ')));
|
|
313
|
+
return _context3.a(2);
|
|
314
|
+
case 5:
|
|
286
315
|
setIsSaving(true);
|
|
287
|
-
_context3.p =
|
|
316
|
+
_context3.p = 6;
|
|
288
317
|
payload = {
|
|
289
318
|
formTitle: trimmedTitle,
|
|
290
319
|
formName: trimmedName,
|
|
@@ -300,48 +329,45 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
|
|
|
300
329
|
} : {});
|
|
301
330
|
})
|
|
302
331
|
};
|
|
303
|
-
_context3.n =
|
|
332
|
+
_context3.n = 7;
|
|
304
333
|
return (0, _auth.apiCall)(apiUrl, "/forms/create-form", projectId, {
|
|
305
334
|
method: 'POST',
|
|
306
335
|
body: payload
|
|
307
336
|
});
|
|
308
|
-
case
|
|
337
|
+
case 7:
|
|
309
338
|
_yield$apiCall3 = _context3.v;
|
|
310
339
|
result = _yield$apiCall3.data;
|
|
311
340
|
ok = _yield$apiCall3.ok;
|
|
312
341
|
if (ok) {
|
|
313
|
-
_context3.n =
|
|
342
|
+
_context3.n = 8;
|
|
314
343
|
break;
|
|
315
344
|
}
|
|
316
345
|
throw new Error(result.message || 'Failed to create form');
|
|
317
|
-
case
|
|
318
|
-
|
|
319
|
-
onFormAction('success', result.message || 'Form created successfully!');
|
|
320
|
-
}
|
|
346
|
+
case 8:
|
|
347
|
+
notify('success', result.message || 'Form created successfully!');
|
|
321
348
|
resetFormDraft();
|
|
349
|
+
setCreateFeedback('');
|
|
322
350
|
setShowCreateModal(false);
|
|
323
351
|
fetchForms();
|
|
324
352
|
if (onRefresh) {
|
|
325
353
|
onRefresh();
|
|
326
354
|
}
|
|
327
|
-
_context3.n =
|
|
355
|
+
_context3.n = 10;
|
|
328
356
|
break;
|
|
329
|
-
case
|
|
330
|
-
_context3.p =
|
|
357
|
+
case 9:
|
|
358
|
+
_context3.p = 9;
|
|
331
359
|
_t3 = _context3.v;
|
|
332
360
|
console.error('Error creating form:', _t3);
|
|
333
361
|
errorMessage = _t3 instanceof Error ? _t3.message : 'Failed to create form';
|
|
334
|
-
|
|
335
|
-
onFormAction('error', errorMessage);
|
|
336
|
-
}
|
|
337
|
-
case 9:
|
|
338
|
-
_context3.p = 9;
|
|
339
|
-
setIsSaving(false);
|
|
340
|
-
return _context3.f(9);
|
|
362
|
+
notify('error', errorMessage);
|
|
341
363
|
case 10:
|
|
364
|
+
_context3.p = 10;
|
|
365
|
+
setIsSaving(false);
|
|
366
|
+
return _context3.f(10);
|
|
367
|
+
case 11:
|
|
342
368
|
return _context3.a(2);
|
|
343
369
|
}
|
|
344
|
-
}, _callee3, null, [[
|
|
370
|
+
}, _callee3, null, [[6, 9, 10, 11]]);
|
|
345
371
|
}));
|
|
346
372
|
return function createForm() {
|
|
347
373
|
return _ref4.apply(this, arguments);
|
|
@@ -379,6 +405,7 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
|
|
|
379
405
|
}, "Create and manage your dynamic forms")), /*#__PURE__*/_react["default"].createElement("button", {
|
|
380
406
|
onClick: function onClick() {
|
|
381
407
|
resetFormDraft();
|
|
408
|
+
setCreateFeedback('');
|
|
382
409
|
setShowCreateModal(true);
|
|
383
410
|
},
|
|
384
411
|
className: "bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-lg flex items-center gap-2"
|
|
@@ -442,7 +469,9 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
|
|
|
442
469
|
className: "bg-white rounded-2xl shadow-xl p-8 w-full max-w-3xl max-h-[90vh] overflow-y-auto"
|
|
443
470
|
}, /*#__PURE__*/_react["default"].createElement("h2", {
|
|
444
471
|
className: "text-xl font-bold text-gray-800 mb-6"
|
|
445
|
-
}, "Create New Form"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
472
|
+
}, "Create New Form"), createFeedback && /*#__PURE__*/_react["default"].createElement("div", {
|
|
473
|
+
className: "mb-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700"
|
|
474
|
+
}, createFeedback), /*#__PURE__*/_react["default"].createElement("div", {
|
|
446
475
|
className: "space-y-6"
|
|
447
476
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
448
477
|
className: "grid grid-cols-1 md:grid-cols-2 gap-4"
|
|
@@ -539,8 +568,12 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
|
|
|
539
568
|
type: "text",
|
|
540
569
|
value: field.label,
|
|
541
570
|
onChange: function onChange(e) {
|
|
542
|
-
|
|
543
|
-
|
|
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
|
+
}))
|
|
544
577
|
});
|
|
545
578
|
},
|
|
546
579
|
placeholder: "Label",
|
|
@@ -581,12 +614,15 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
|
|
|
581
614
|
})))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
582
615
|
className: "flex justify-end gap-4 mt-6"
|
|
583
616
|
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
617
|
+
type: "button",
|
|
584
618
|
onClick: function onClick() {
|
|
585
619
|
resetFormDraft();
|
|
620
|
+
setCreateFeedback('');
|
|
586
621
|
setShowCreateModal(false);
|
|
587
622
|
},
|
|
588
623
|
className: "bg-gray-300 text-gray-700 hover:bg-gray-400 px-4 py-2 rounded-md"
|
|
589
624
|
}, "Cancel"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
625
|
+
type: "button",
|
|
590
626
|
onClick: createForm,
|
|
591
627
|
disabled: isSaving,
|
|
592
628
|
className: "bg-blue-600 text-white hover:bg-blue-700 px-4 py-2 rounded-md disabled:opacity-50"
|