powr-sdk-web 6.8.0 → 6.9.0
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 +20 -2
- package/dist/forms/index.js +74 -46
- package/package.json +1 -1
package/dist/forms/admin.js
CHANGED
|
@@ -672,7 +672,7 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
|
|
|
672
672
|
className: "text-sm font-semibold text-gray-900"
|
|
673
673
|
}, "Fields"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
674
674
|
className: "flex flex-wrap gap-2"
|
|
675
|
-
}, ['text', 'email', 'mobile', 'textarea', 'radio', 'fileUploader'].map(function (type) {
|
|
675
|
+
}, ['text', 'email', 'mobile', 'textarea', 'radio', 'photo', 'fileUploader'].map(function (type) {
|
|
676
676
|
return /*#__PURE__*/_react["default"].createElement("button", {
|
|
677
677
|
key: type,
|
|
678
678
|
type: "button",
|
|
@@ -1137,7 +1137,25 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
|
|
|
1137
1137
|
className: "text-sm font-medium text-gray-700"
|
|
1138
1138
|
}, "Message"), /*#__PURE__*/_react["default"].createElement("p", {
|
|
1139
1139
|
className: "text-gray-900 bg-gray-50 p-3 rounded whitespace-pre-wrap"
|
|
1140
|
-
}, response.message)),
|
|
1140
|
+
}, response.message)), (selectedForm.fields || []).filter(function (field) {
|
|
1141
|
+
return field.type === 'photo' && response[field.name];
|
|
1142
|
+
}).map(function (field) {
|
|
1143
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
1144
|
+
key: field.name,
|
|
1145
|
+
className: "space-y-1"
|
|
1146
|
+
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
1147
|
+
className: "text-sm font-medium text-gray-700"
|
|
1148
|
+
}, field.label), /*#__PURE__*/_react["default"].createElement("a", {
|
|
1149
|
+
href: response[field.name],
|
|
1150
|
+
target: "_blank",
|
|
1151
|
+
rel: "noopener noreferrer",
|
|
1152
|
+
className: "block"
|
|
1153
|
+
}, /*#__PURE__*/_react["default"].createElement("img", {
|
|
1154
|
+
src: response[field.name],
|
|
1155
|
+
alt: field.label,
|
|
1156
|
+
className: "max-h-40 rounded border border-gray-200 bg-gray-50"
|
|
1157
|
+
})));
|
|
1158
|
+
}), response.paymentProofUrls && response.paymentProofUrls.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
1141
1159
|
className: "space-y-1 md:col-span-2"
|
|
1142
1160
|
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
1143
1161
|
className: "text-sm font-medium text-gray-700"
|
package/dist/forms/index.js
CHANGED
|
@@ -8,6 +8,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
8
8
|
var _reactHookForm = require("react-hook-form");
|
|
9
9
|
var _axios = _interopRequireDefault(require("axios"));
|
|
10
10
|
var _config = require("../config");
|
|
11
|
+
var _uploader = _interopRequireDefault(require("../uploader"));
|
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
12
13
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t3 in e) "default" !== _t3 && {}.hasOwnProperty.call(e, _t3) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t3)) && (i.get || i.set) ? o(f, _t3, i) : f[_t3] = e[_t3]); return f; })(e, t); }
|
|
13
14
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
@@ -27,6 +28,7 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
|
|
|
27
28
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
28
29
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
29
30
|
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
31
|
+
var UPLOAD_FIELD_TYPES = ["photo", "fileUploader"];
|
|
30
32
|
var PowrForm = function PowrForm(_ref) {
|
|
31
33
|
var formName = _ref.formName,
|
|
32
34
|
projectId = _ref.projectId,
|
|
@@ -57,34 +59,30 @@ var PowrForm = function PowrForm(_ref) {
|
|
|
57
59
|
_ref$loginMessage = _ref.loginMessage,
|
|
58
60
|
loginMessage = _ref$loginMessage === void 0 ? "Sign in to send this. Fill the questions first if you want." : _ref$loginMessage,
|
|
59
61
|
authenticatedLabel = _ref.authenticatedLabel;
|
|
60
|
-
var _useState = (0, _react.useState)(
|
|
62
|
+
var _useState = (0, _react.useState)({}),
|
|
61
63
|
_useState2 = _slicedToArray(_useState, 2),
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
var _useState3 = (0, _react.useState)(
|
|
64
|
+
uploads = _useState2[0],
|
|
65
|
+
setUploads = _useState2[1];
|
|
66
|
+
var _useState3 = (0, _react.useState)(null),
|
|
65
67
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
var _useState5 = (0, _react.useState)(
|
|
68
|
+
formSchema = _useState4[0],
|
|
69
|
+
setFormSchema = _useState4[1];
|
|
70
|
+
var _useState5 = (0, _react.useState)(true),
|
|
69
71
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
var _useState7 = (0, _react.useState)(
|
|
72
|
+
isLoading = _useState6[0],
|
|
73
|
+
setIsLoading = _useState6[1];
|
|
74
|
+
var _useState7 = (0, _react.useState)(null),
|
|
73
75
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
error = _useState8[0],
|
|
77
|
+
setError = _useState8[1];
|
|
76
78
|
var _useState9 = (0, _react.useState)(null),
|
|
77
79
|
_useState0 = _slicedToArray(_useState9, 2),
|
|
78
|
-
|
|
79
|
-
|
|
80
|
+
successMessage = _useState0[0],
|
|
81
|
+
setSuccessMessage = _useState0[1];
|
|
80
82
|
var _useState1 = (0, _react.useState)(null),
|
|
81
83
|
_useState10 = _slicedToArray(_useState1, 2),
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
var _useState11 = (0, _react.useState)(null),
|
|
85
|
-
_useState12 = _slicedToArray(_useState11, 2),
|
|
86
|
-
submitError = _useState12[0],
|
|
87
|
-
setSubmitError = _useState12[1];
|
|
84
|
+
submitError = _useState10[0],
|
|
85
|
+
setSubmitError = _useState10[1];
|
|
88
86
|
var submissionId = Math.random().toString(36).substring(2, 10);
|
|
89
87
|
(0, _react.useEffect)(function () {
|
|
90
88
|
var fetchFormSchema = /*#__PURE__*/function () {
|
|
@@ -135,11 +133,26 @@ var PowrForm = function PowrForm(_ref) {
|
|
|
135
133
|
}),
|
|
136
134
|
register = _useForm.register,
|
|
137
135
|
handleSubmit = _useForm.handleSubmit,
|
|
136
|
+
setValue = _useForm.setValue,
|
|
138
137
|
errors = _useForm.formState.errors;
|
|
139
|
-
|
|
138
|
+
|
|
139
|
+
// /files needs a Powr token, so a form with an upload field is login-only.
|
|
140
|
+
var hasUploadField = ((formSchema === null || formSchema === void 0 ? void 0 : formSchema.fields) || []).some(function (f) {
|
|
141
|
+
return UPLOAD_FIELD_TYPES.includes(f.type);
|
|
142
|
+
});
|
|
143
|
+
var needsLogin = Boolean(requireLogin || (formSchema === null || formSchema === void 0 ? void 0 : formSchema.requireLogin) || hasUploadField) && !isAuthenticated;
|
|
144
|
+
var setUploadedUrl = function setUploadedUrl(field, files) {
|
|
145
|
+
var url = files !== null && files !== void 0 && files.length ? files[files.length - 1].url : "";
|
|
146
|
+
setUploads(function (prev) {
|
|
147
|
+
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, field.name, url));
|
|
148
|
+
});
|
|
149
|
+
setValue(field.name, url, {
|
|
150
|
+
shouldValidate: true
|
|
151
|
+
});
|
|
152
|
+
};
|
|
140
153
|
var onSubmit = /*#__PURE__*/function () {
|
|
141
154
|
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(data) {
|
|
142
|
-
var finalData, response, resData, errorMsg, _errorMsg, _error$response, _errorMsg2, _t2;
|
|
155
|
+
var paymentProofUrls, finalData, response, resData, errorMsg, _errorMsg, _error$response, _errorMsg2, _t2;
|
|
143
156
|
return _regenerator().w(function (_context2) {
|
|
144
157
|
while (1) switch (_context2.p = _context2.n) {
|
|
145
158
|
case 0:
|
|
@@ -150,11 +163,15 @@ var PowrForm = function PowrForm(_ref) {
|
|
|
150
163
|
if (onNeedLogin) onNeedLogin();
|
|
151
164
|
return _context2.a(2);
|
|
152
165
|
case 1:
|
|
153
|
-
setHasSubmitted(true);
|
|
154
166
|
setSubmitError(null);
|
|
155
167
|
setSuccessMessage(null);
|
|
168
|
+
paymentProofUrls = ((formSchema === null || formSchema === void 0 ? void 0 : formSchema.fields) || []).filter(function (f) {
|
|
169
|
+
return f.type === "fileUploader" && uploads[f.name];
|
|
170
|
+
}).map(function (f) {
|
|
171
|
+
return uploads[f.name];
|
|
172
|
+
});
|
|
156
173
|
finalData = _objectSpread(_objectSpread(_objectSpread({}, data), extraFields && _typeof(extraFields) === "object" ? extraFields : {}), {}, {
|
|
157
|
-
paymentProofUrls:
|
|
174
|
+
paymentProofUrls: paymentProofUrls,
|
|
158
175
|
id: submissionId,
|
|
159
176
|
formTitle: formSchema === null || formSchema === void 0 ? void 0 : formSchema.formTitle,
|
|
160
177
|
formName: formSchema === null || formSchema === void 0 ? void 0 : formSchema.formName
|
|
@@ -291,30 +308,41 @@ var PowrForm = function PowrForm(_ref) {
|
|
|
291
308
|
})));
|
|
292
309
|
}
|
|
293
310
|
return null;
|
|
311
|
+
case "photo":
|
|
294
312
|
case "fileUploader":
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
313
|
+
{
|
|
314
|
+
var isPhoto = field.type === "photo";
|
|
315
|
+
return /*#__PURE__*/_react["default"].createElement(InputField, {
|
|
316
|
+
key: field.name,
|
|
317
|
+
label: field.label,
|
|
318
|
+
required: field.required,
|
|
319
|
+
error: errors[field.name] && {
|
|
320
|
+
message: isPhoto ? "Please add a photo." : "Please upload a file."
|
|
321
|
+
},
|
|
322
|
+
description: field.description,
|
|
323
|
+
theme: theme
|
|
324
|
+
}, /*#__PURE__*/_react["default"].createElement("input", _extends({
|
|
325
|
+
type: "hidden"
|
|
326
|
+
}, register(field.name, {
|
|
327
|
+
required: field.required
|
|
328
|
+
}))), isAuthenticated ? /*#__PURE__*/_react["default"].createElement(_uploader["default"], {
|
|
329
|
+
apiUrl: apiUrl,
|
|
330
|
+
projectId: projectId,
|
|
331
|
+
maxFiles: 1,
|
|
332
|
+
acceptedFileTypes: isPhoto ? "image/*" : "image/*,application/pdf",
|
|
333
|
+
onUploadComplete: function onUploadComplete(files) {
|
|
334
|
+
return setUploadedUrl(field, files);
|
|
335
|
+
},
|
|
336
|
+
onRemove: function onRemove(files) {
|
|
337
|
+
return setUploadedUrl(field, files);
|
|
338
|
+
},
|
|
339
|
+
onUploadError: function onUploadError() {
|
|
340
|
+
return setSubmitError("Upload failed. Please try again.");
|
|
312
341
|
}
|
|
313
|
-
},
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
}, "Payment proof is required."));
|
|
342
|
+
}) : /*#__PURE__*/_react["default"].createElement("p", {
|
|
343
|
+
className: "text-sm text-gray-500"
|
|
344
|
+
}, "Sign in to add ", isPhoto ? "a photo" : "a file", "."));
|
|
345
|
+
}
|
|
318
346
|
default:
|
|
319
347
|
return null;
|
|
320
348
|
}
|