powr-sdk-web 6.7.0 → 6.8.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.
Files changed (2) hide show
  1. package/dist/forms/index.js +77 -20
  2. package/package.json +1 -1
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
@@ -12,6 +11,7 @@ var _config = require("../config");
12
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
13
12
  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); }
14
13
  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); }
14
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
15
15
  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; }
16
16
  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; }
17
17
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -37,7 +37,26 @@ var PowrForm = function PowrForm(_ref) {
37
37
  _ref$className = _ref.className,
38
38
  className = _ref$className === void 0 ? "" : _ref$className,
39
39
  _ref$theme = _ref.theme,
40
- theme = _ref$theme === void 0 ? "purple" : _ref$theme;
40
+ theme = _ref$theme === void 0 ? "purple" : _ref$theme,
41
+ _ref$embed = _ref.embed,
42
+ embed = _ref$embed === void 0 ? false : _ref$embed,
43
+ _ref$showHeader = _ref.showHeader,
44
+ showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader,
45
+ bannerUrl = _ref.bannerUrl,
46
+ title = _ref.title,
47
+ description = _ref.description,
48
+ _ref$requireLogin = _ref.requireLogin,
49
+ requireLogin = _ref$requireLogin === void 0 ? false : _ref$requireLogin,
50
+ _ref$isAuthenticated = _ref.isAuthenticated,
51
+ isAuthenticated = _ref$isAuthenticated === void 0 ? false : _ref$isAuthenticated,
52
+ onNeedLogin = _ref.onNeedLogin,
53
+ extraFields = _ref.extraFields,
54
+ submitLabel = _ref.submitLabel,
55
+ _ref$loginLabel = _ref.loginLabel,
56
+ loginLabel = _ref$loginLabel === void 0 ? "Sign in" : _ref$loginLabel,
57
+ _ref$loginMessage = _ref.loginMessage,
58
+ loginMessage = _ref$loginMessage === void 0 ? "Sign in to send this. Fill the questions first if you want." : _ref$loginMessage,
59
+ authenticatedLabel = _ref.authenticatedLabel;
41
60
  var _useState = (0, _react.useState)(null),
42
61
  _useState2 = _slicedToArray(_useState, 2),
43
62
  uploadedFileUrl = _useState2[0],
@@ -117,25 +136,33 @@ var PowrForm = function PowrForm(_ref) {
117
136
  register = _useForm.register,
118
137
  handleSubmit = _useForm.handleSubmit,
119
138
  errors = _useForm.formState.errors;
139
+ var needsLogin = Boolean(requireLogin || (formSchema === null || formSchema === void 0 ? void 0 : formSchema.requireLogin)) && !isAuthenticated;
120
140
  var onSubmit = /*#__PURE__*/function () {
121
141
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(data) {
122
142
  var finalData, response, resData, errorMsg, _errorMsg, _error$response, _errorMsg2, _t2;
123
143
  return _regenerator().w(function (_context2) {
124
144
  while (1) switch (_context2.p = _context2.n) {
125
145
  case 0:
146
+ if (!needsLogin) {
147
+ _context2.n = 1;
148
+ break;
149
+ }
150
+ if (onNeedLogin) onNeedLogin();
151
+ return _context2.a(2);
152
+ case 1:
126
153
  setHasSubmitted(true);
127
154
  setSubmitError(null);
128
155
  setSuccessMessage(null);
129
- finalData = _objectSpread(_objectSpread({}, data), {}, {
156
+ finalData = _objectSpread(_objectSpread(_objectSpread({}, data), extraFields && _typeof(extraFields) === "object" ? extraFields : {}), {}, {
130
157
  paymentProofUrls: uploadedFileUrl ? [uploadedFileUrl] : [],
131
158
  id: submissionId,
132
159
  formTitle: formSchema === null || formSchema === void 0 ? void 0 : formSchema.formTitle,
133
160
  formName: formSchema === null || formSchema === void 0 ? void 0 : formSchema.formName
134
161
  });
135
- _context2.p = 1;
136
- _context2.n = 2;
162
+ _context2.p = 2;
163
+ _context2.n = 3;
137
164
  return _axios["default"].post("".concat(apiUrl, "/forms/studentform?projectId=").concat(projectId), finalData);
138
- case 2:
165
+ case 3:
139
166
  response = _context2.v;
140
167
  resData = response.data;
141
168
  if (resData && resData.existingFormId) {
@@ -150,18 +177,18 @@ var PowrForm = function PowrForm(_ref) {
150
177
  setSubmitError(_errorMsg);
151
178
  if (onSubmitError) onSubmitError(_errorMsg);
152
179
  }
153
- _context2.n = 4;
180
+ _context2.n = 5;
154
181
  break;
155
- case 3:
156
- _context2.p = 3;
182
+ case 4:
183
+ _context2.p = 4;
157
184
  _t2 = _context2.v;
158
185
  _errorMsg2 = (_t2 === null || _t2 === void 0 || (_error$response = _t2.response) === null || _error$response === void 0 || (_error$response = _error$response.data) === null || _error$response === void 0 ? void 0 : _error$response.message) || "Submission failed. Please try again.";
159
186
  setSubmitError(_errorMsg2);
160
187
  if (onSubmitError) onSubmitError(_errorMsg2);
161
- case 4:
188
+ case 5:
162
189
  return _context2.a(2);
163
190
  }
164
- }, _callee2, null, [[1, 3]]);
191
+ }, _callee2, null, [[2, 4]]);
165
192
  }));
166
193
  return function onSubmit(_x) {
167
194
  return _ref3.apply(this, arguments);
@@ -292,41 +319,71 @@ var PowrForm = function PowrForm(_ref) {
292
319
  return null;
293
320
  }
294
321
  };
322
+ var shellClass = embed ? "w-full ".concat(className) : "min-h-screen ".concat(theme === "purple" ? "bg-[#f3eaff]" : "bg-".concat(theme, "-50"), " flex justify-center items-start py-12 px-4 ").concat(className);
323
+ var cardClass = embed ? "bg-white w-full" : "bg-white w-full max-w-3xl rounded-lg shadow-lg p-10";
295
324
  if (isLoading) {
296
325
  return /*#__PURE__*/_react["default"].createElement("div", {
297
- className: "min-h-screen bg-gray-50 flex justify-center items-center"
326
+ className: embed ? "py-8 text-center text-gray-600" : "min-h-screen bg-gray-50 flex justify-center items-center"
298
327
  }, /*#__PURE__*/_react["default"].createElement("div", {
299
328
  className: "text-xl text-gray-600"
300
329
  }, "Loading form..."));
301
330
  }
302
331
  if (error) {
303
332
  return /*#__PURE__*/_react["default"].createElement("div", {
304
- className: "min-h-screen bg-gray-50 flex justify-center items-center"
333
+ className: embed ? "py-8 text-center text-red-600" : "min-h-screen bg-gray-50 flex justify-center items-center"
305
334
  }, /*#__PURE__*/_react["default"].createElement("div", {
306
335
  className: "text-xl text-red-600"
307
336
  }, "Error: ", error));
308
337
  }
309
338
  if (!formSchema) {
310
339
  return /*#__PURE__*/_react["default"].createElement("div", {
311
- className: "min-h-screen bg-gray-50 flex justify-center items-center"
340
+ className: embed ? "py-8 text-center text-red-600" : "min-h-screen bg-gray-50 flex justify-center items-center"
312
341
  }, /*#__PURE__*/_react["default"].createElement("div", {
313
342
  className: "text-xl text-red-600"
314
343
  }, "No form schema found"));
315
344
  }
316
- var bgColor = theme === "purple" ? "bg-[#f3eaff]" : "bg-".concat(theme, "-50");
317
345
  var borderColor = theme === "purple" ? "border-purple-600" : "border-".concat(theme, "-600");
318
346
  var buttonColor = theme === "purple" ? "bg-purple-600 hover:bg-purple-700" : "bg-".concat(theme, "-600 hover:bg-").concat(theme, "-700");
347
+ var heading = title || formSchema.formTitle;
348
+ var blurb = description || formSchema.description;
349
+ var banner = bannerUrl || formSchema.imageUrl;
350
+ var buttonText = submitLabel || (needsLogin ? "Sign in to submit" : "Submit");
319
351
  return /*#__PURE__*/_react["default"].createElement("div", {
320
- className: "min-h-screen ".concat(bgColor, " flex justify-center items-start py-12 px-4 ").concat(className)
352
+ className: shellClass
321
353
  }, /*#__PURE__*/_react["default"].createElement("div", {
322
- className: "bg-white w-full max-w-3xl rounded-lg shadow-lg p-10"
354
+ className: cardClass
355
+ }, showHeader && banner ? /*#__PURE__*/_react["default"].createElement("div", {
356
+ className: "relative mb-8 overflow-hidden rounded-xl bg-slate-900 text-white"
323
357
  }, /*#__PURE__*/_react["default"].createElement("div", {
358
+ className: "absolute inset-0 bg-cover bg-center opacity-40",
359
+ style: {
360
+ backgroundImage: "url('".concat(banner, "')")
361
+ }
362
+ }), /*#__PURE__*/_react["default"].createElement("div", {
363
+ className: "absolute inset-0 bg-gradient-to-t from-slate-900 via-slate-900/70 to-slate-900/30"
364
+ }), /*#__PURE__*/_react["default"].createElement("div", {
365
+ className: "relative px-5 py-8"
366
+ }, /*#__PURE__*/_react["default"].createElement("h1", {
367
+ className: "text-2xl font-extrabold md:text-3xl"
368
+ }, heading), blurb ? /*#__PURE__*/_react["default"].createElement("p", {
369
+ className: "mt-2 max-w-xl text-sm text-slate-200"
370
+ }, blurb) : null)) : null, showHeader && !banner ? /*#__PURE__*/_react["default"].createElement("div", {
324
371
  className: "border-b-4 ".concat(borderColor, " pb-6 mb-8")
325
372
  }, /*#__PURE__*/_react["default"].createElement("h1", {
326
373
  className: "text-3xl font-bold text-gray-800"
327
- }, formSchema.formTitle), formSchema.description && /*#__PURE__*/_react["default"].createElement("p", {
374
+ }, heading), blurb && /*#__PURE__*/_react["default"].createElement("p", {
328
375
  className: "text-gray-600 mt-3 text-base leading-relaxed"
329
- }, formSchema.description)), successMessage && /*#__PURE__*/_react["default"].createElement("div", {
376
+ }, blurb)) : null, needsLogin ? /*#__PURE__*/_react["default"].createElement("div", {
377
+ className: "mb-6 flex flex-col gap-3 rounded-xl border-2 border-yellow-400 bg-[#fff8d6] px-4 py-3 sm:flex-row sm:items-center sm:justify-between"
378
+ }, /*#__PURE__*/_react["default"].createElement("p", {
379
+ className: "text-sm font-semibold text-slate-900"
380
+ }, loginMessage), onNeedLogin ? /*#__PURE__*/_react["default"].createElement("button", {
381
+ type: "button",
382
+ onClick: onNeedLogin,
383
+ className: "shrink-0 rounded-md bg-slate-900 px-4 py-2 text-sm font-medium text-white hover:bg-slate-800"
384
+ }, loginLabel) : null) : null, isAuthenticated && authenticatedLabel ? /*#__PURE__*/_react["default"].createElement("p", {
385
+ className: "mb-6 text-sm text-slate-600"
386
+ }, authenticatedLabel) : null, successMessage && /*#__PURE__*/_react["default"].createElement("div", {
330
387
  className: "mb-8 flex flex-col items-center justify-center p-6 bg-green-50 border border-green-300 rounded-lg shadow animate-fade-in"
331
388
  }, /*#__PURE__*/_react["default"].createElement("div", {
332
389
  className: "mb-2"
@@ -368,7 +425,7 @@ var PowrForm = function PowrForm(_ref) {
368
425
  }, "No form fields found or invalid form structure"), /*#__PURE__*/_react["default"].createElement("button", {
369
426
  type: "submit",
370
427
  className: "w-full ".concat(buttonColor, " text-white py-3 px-4 rounded-md transition-colors")
371
- }, "Submit"))));
428
+ }, buttonText))));
372
429
  };
373
430
 
374
431
  // Input field wrapper component
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powr-sdk-web",
3
- "version": "6.7.0",
3
+ "version": "6.8.0",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist"