@payloadcms/plugin-form-builder 1.0.13 → 1.0.14

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 (47) hide show
  1. package/README.md +40 -14
  2. package/package.json +23 -3
  3. package/dist/collections/FormSubmissions/hooks/createCharge.d.ts +0 -3
  4. package/dist/collections/FormSubmissions/hooks/createCharge.js +0 -58
  5. package/dist/collections/FormSubmissions/hooks/createCharge.js.map +0 -1
  6. package/dist/collections/FormSubmissions/hooks/sendEmail.d.ts +0 -3
  7. package/dist/collections/FormSubmissions/hooks/sendEmail.js +0 -153
  8. package/dist/collections/FormSubmissions/hooks/sendEmail.js.map +0 -1
  9. package/dist/collections/FormSubmissions/index.d.ts +0 -3
  10. package/dist/collections/FormSubmissions/index.js +0 -139
  11. package/dist/collections/FormSubmissions/index.js.map +0 -1
  12. package/dist/collections/Forms/DynamicFieldSelector.d.ts +0 -3
  13. package/dist/collections/Forms/DynamicFieldSelector.js +0 -66
  14. package/dist/collections/Forms/DynamicFieldSelector.js.map +0 -1
  15. package/dist/collections/Forms/DynamicPriceSelector.d.ts +0 -3
  16. package/dist/collections/Forms/DynamicPriceSelector.js +0 -86
  17. package/dist/collections/Forms/DynamicPriceSelector.js.map +0 -1
  18. package/dist/collections/Forms/fields.d.ts +0 -6
  19. package/dist/collections/Forms/fields.js +0 -500
  20. package/dist/collections/Forms/fields.js.map +0 -1
  21. package/dist/collections/Forms/index.d.ts +0 -3
  22. package/dist/collections/Forms/index.js +0 -231
  23. package/dist/collections/Forms/index.js.map +0 -1
  24. package/dist/index.d.ts +0 -5
  25. package/dist/index.js +0 -52
  26. package/dist/index.js.map +0 -1
  27. package/dist/mocks/serverModule.d.ts +0 -2
  28. package/dist/mocks/serverModule.js +0 -4
  29. package/dist/mocks/serverModule.js.map +0 -1
  30. package/dist/types.d.ts +0 -174
  31. package/dist/types.js +0 -11
  32. package/dist/types.js.map +0 -1
  33. package/dist/utilities/calculatePaymentTotal.d.ts +0 -4
  34. package/dist/utilities/calculatePaymentTotal.js +0 -47
  35. package/dist/utilities/calculatePaymentTotal.js.map +0 -1
  36. package/dist/utilities/deepMerge.d.ts +0 -2
  37. package/dist/utilities/deepMerge.js +0 -44
  38. package/dist/utilities/deepMerge.js.map +0 -1
  39. package/dist/utilities/getPaymentTotal.d.ts +0 -4
  40. package/dist/utilities/getPaymentTotal.js +0 -44
  41. package/dist/utilities/getPaymentTotal.js.map +0 -1
  42. package/dist/utilities/replaceDoubleCurlys.d.ts +0 -7
  43. package/dist/utilities/replaceDoubleCurlys.js +0 -20
  44. package/dist/utilities/replaceDoubleCurlys.js.map +0 -1
  45. package/dist/utilities/serializeRichText.d.ts +0 -10
  46. package/dist/utilities/serializeRichText.js +0 -49
  47. package/dist/utilities/serializeRichText.js.map +0 -1
package/README.md CHANGED
@@ -65,8 +65,6 @@ export default config;
65
65
  }
66
66
  ```
67
67
 
68
- You can also provide your own custom field definitions by passing a new [Payload Block](https://payloadcms.com/docs/fields/blocks#block-configs) object into `fields`.
69
-
70
68
  - `redirectRelationships`
71
69
 
72
70
  An array of collection slugs that, when enabled, are populated as options in form redirect fields.
@@ -115,6 +113,10 @@ export default config;
115
113
  ```ts
116
114
  formOverrides: {
117
115
  slug: "contact-forms",
116
+ access: {
117
+ read: () => true,
118
+ update: () => false,
119
+ },
118
120
  fields: [
119
121
  {
120
122
  name: "custom-field",
@@ -132,66 +134,68 @@ export default config;
132
134
 
133
135
  ```js
134
136
  formSubmissionOverrides: {
135
- slug: "leads";
137
+ slug: "leads",
136
138
  }
137
139
  ```
138
140
 
139
141
  ## Fields
140
142
 
141
- Each field represents a form input. To override default settings pass either a boolean value or a partial [Payload Block](https://payloadcms.com/docs/fields/blocks) keyed to the block's slug.
143
+ Each field represents a form input. To override default settings pass either a boolean value or a partial [Payload Block](https://payloadcms.com/docs/fields/blocks) _keyed to the block's slug_. See [Field Overrides](#field-overrides) for more details on how to do this.
142
144
 
143
- - Text
145
+ > NOTE: "fields" here are in reference to the _fields to build forms with_, not to be confused with the _fields of a collection_ which are set via `formOverrides.fields`.
146
+
147
+ - `text`
144
148
  - `name`: string
145
149
  - `label`: string
146
150
  - `defaultValue`: string
147
151
  - `width`: string
148
152
  - `required`: checkbox
149
- - Textarea
153
+ - `textarea`
150
154
  - `name`: string
151
155
  - `label`: string
152
156
  - `defaultValue`: string
153
157
  - `width`: string
154
158
  - `required`: checkbox
155
- - Select
159
+ - `select`
156
160
  - `name`: string
157
161
  - `label`: string
158
162
  - `defaultValue`: string
159
163
  - `width`: string
160
164
  - `options`: array
161
165
  - `required`: checkbox
162
- - Email
166
+ - `email`
163
167
  - `name`: string
164
168
  - `label`: string
165
169
  - `defaultValue`: string
166
170
  - `width`: string
167
171
  - `required`: checkbox
168
- - State
172
+ - `state`
169
173
  - `name`: string
170
174
  - `label`: string
171
175
  - `defaultValue`: string
172
176
  - `width`: string
173
177
  - `required`: checkbox
174
- - Country
178
+ - `country`
175
179
  - `name`: string
176
180
  - `label`: string
177
181
  - `defaultValue`: string
178
182
  - `width`: string
179
183
  - `required`: checkbox
180
- - Checkbox
184
+ - `checkbox`
181
185
  - `name`: string
182
186
  - `label`: string
183
187
  - `defaultValue`: checkbox
184
188
  - `width`: string
185
189
  - `required`: checkbox
186
- - Number
190
+ - `number`
187
191
  - `name`: string
188
192
  - `label`: string
189
193
  - `defaultValue`: number
190
194
  - `width`: string
191
195
  - `required`: checkbox
192
- - Message
196
+ - `message`
193
197
  - `message`: richText
194
- - Payment
198
+ - `payment`
195
199
  - `name`: string
196
200
  - `label`: string
197
201
  - `defaultValue`: number
@@ -205,6 +209,28 @@ Each field represents a form input. To override default settings pass either a b
205
209
  - `valueType`: string - `static`, `valueOfField`
206
210
  - `value`: string - only if `valueType` is `static`
207
211
 
212
+ ### Field Overrides
213
+
214
+ You can also provide your own custom field definitions by passing a new [Payload Block](https://payloadcms.com/docs/fields/blocks#block-configs) object into `fields`. You can override or extend any existing fields by first importing the `fields` from the plugin:
215
+
216
+ ```ts
217
+ import { fields } from "@payloadcms/plugin-form-builder";
218
+ ```
219
+
220
+ Then merging it into your own custom field:
221
+
222
+ ```ts
223
+ fields: {
224
+ text: {
225
+ ...fields.text,
226
+ labels: {
227
+ singular: "Custom Text Field",
228
+ plural: "Custom Text Fields",
229
+ }
230
+ }
231
+ }
232
+ ```
233
+
208
234
  ## Email
209
235
 
210
236
  This plugin relies on the [email configuration](https://payloadcms.com/docs/email/overview) defined in your `payload.init()`. It will read from your config and attempt to send your emails using the credentials provided.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/plugin-form-builder",
3
- "version": "1.0.13",
3
+ "version": "1.0.14",
4
4
  "homepage:": "https://payloadcms.com",
5
5
  "repository": "git@github.com:payloadcms/plugin-form-builder.git",
6
6
  "description": "Form builder plugin for Payload CMS",
@@ -8,7 +8,9 @@
8
8
  "types": "dist/index.d.ts",
9
9
  "scripts": {
10
10
  "build": "tsc",
11
- "test": "echo \"Error: no test specified\" && exit 1"
11
+ "test": "echo \"Error: no test specified\" && exit 1",
12
+ "lint": "eslint src",
13
+ "lint:fix": "eslint --fix --ext .ts,.tsx src"
12
14
  },
13
15
  "keywords": [
14
16
  "payload",
@@ -29,9 +31,27 @@
29
31
  },
30
32
  "devDependencies": {
31
33
  "@types/escape-html": "^1.0.1",
34
+ "@payloadcms/eslint-config": "^0.0.1",
35
+ "@types/express": "^4.17.9",
36
+ "@types/node": "18.11.3",
37
+ "@types/react": "18.0.21",
38
+ "@typescript-eslint/eslint-plugin": "^5.51.0",
39
+ "@typescript-eslint/parser": "^5.51.0",
40
+ "copyfiles": "^2.4.1",
41
+ "cross-env": "^7.0.3",
42
+ "eslint": "^8.19.0",
43
+ "eslint-config-prettier": "^8.5.0",
44
+ "eslint-plugin-filenames": "^1.3.2",
45
+ "eslint-plugin-import": "2.25.4",
46
+ "eslint-plugin-prettier": "^4.0.0",
47
+ "eslint-plugin-react-hooks": "^4.6.0",
48
+ "eslint-plugin-simple-import-sort": "^10.0.0",
49
+ "nodemon": "^2.0.6",
32
50
  "payload": "^1.3.0",
51
+ "prettier": "^2.7.1",
33
52
  "react": "^18.0.0",
34
- "typescript": "^4.5.5"
53
+ "ts-node": "^9.1.1",
54
+ "typescript": "^4.8.4"
35
55
  },
36
56
  "files": [
37
57
  "dist",
@@ -1,3 +0,0 @@
1
- import { PluginConfig } from "../../../types";
2
- declare const createCharge: (beforeChangeData: any, formConfig: PluginConfig) => Promise<any>;
3
- export default createCharge;
@@ -1,58 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- var createCharge = function (beforeChangeData, formConfig) { return __awaiter(void 0, void 0, void 0, function () {
40
- var operation, data, dataWithPaymentDetails, handlePayment;
41
- return __generator(this, function (_a) {
42
- switch (_a.label) {
43
- case 0:
44
- operation = beforeChangeData.operation, data = beforeChangeData.data;
45
- dataWithPaymentDetails = data;
46
- if (!(operation === 'create')) return [3 /*break*/, 2];
47
- handlePayment = (formConfig || {}).handlePayment;
48
- if (!(typeof handlePayment === 'function')) return [3 /*break*/, 2];
49
- return [4 /*yield*/, handlePayment(beforeChangeData)];
50
- case 1:
51
- dataWithPaymentDetails = _a.sent();
52
- _a.label = 2;
53
- case 2: return [2 /*return*/, dataWithPaymentDetails];
54
- }
55
- });
56
- }); };
57
- exports.default = createCharge;
58
- //# sourceMappingURL=createCharge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createCharge.js","sourceRoot":"","sources":["../../../../src/collections/FormSubmissions/hooks/createCharge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAM,YAAY,GAAG,UAAO,gBAAqB,EAAE,UAAwB;;;;;gBAEvE,SAAS,GAEP,gBAAgB,UAFT,EACT,IAAI,GACF,gBAAgB,KADd,CACe;gBAEjB,sBAAsB,GAAG,IAAI,CAAC;qBAE9B,CAAA,SAAS,KAAK,QAAQ,CAAA,EAAtB,wBAAsB;gBAEtB,aAAa,GACX,CAAA,UAAU,IAAI,EAAE,CAAA,cADL,CACM;qBAEjB,CAAA,OAAO,aAAa,KAAK,UAAU,CAAA,EAAnC,wBAAmC;gBACZ,qBAAM,aAAa,CAAC,gBAAgB,CAAC,EAAA;;gBAA9D,sBAAsB,GAAG,SAAqC,CAAC;;oBAInE,sBAAO,sBAAsB,EAAC;;;KAC/B,CAAC;AAEF,kBAAe,YAAY,CAAA"}
@@ -1,3 +0,0 @@
1
- import { PluginConfig } from '../../../types';
2
- declare const sendEmail: (beforeChangeData: any, formConfig: PluginConfig) => Promise<any>;
3
- export default sendEmail;
@@ -1,153 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- var __rest = (this && this.__rest) || function (s, e) {
50
- var t = {};
51
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
52
- t[p] = s[p];
53
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
54
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
55
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
56
- t[p[i]] = s[p[i]];
57
- }
58
- return t;
59
- };
60
- Object.defineProperty(exports, "__esModule", { value: true });
61
- var serializeRichText_1 = require("../../../utilities/serializeRichText");
62
- var replaceDoubleCurlys_1 = require("../../../utilities/replaceDoubleCurlys");
63
- var sendEmail = function (beforeChangeData, formConfig) { return __awaiter(void 0, void 0, void 0, function () {
64
- var operation, data, formSubmissionID, payload_1, _a, formID, submissionData_1, _b, beforeEmail, formOverrides, form, emails, formattedEmails, emailsToSend, log, err_1;
65
- return __generator(this, function (_c) {
66
- switch (_c.label) {
67
- case 0:
68
- operation = beforeChangeData.operation, data = beforeChangeData.data;
69
- if (!(operation === 'create')) return [3 /*break*/, 10];
70
- formSubmissionID = beforeChangeData.data.id, payload_1 = beforeChangeData.req.payload;
71
- _a = data || {}, formID = _a.form, submissionData_1 = _a.submissionData;
72
- _b = formConfig || {}, beforeEmail = _b.beforeEmail, formOverrides = _b.formOverrides;
73
- _c.label = 1;
74
- case 1:
75
- _c.trys.push([1, 9, , 10]);
76
- return [4 /*yield*/, payload_1.findByID({
77
- id: formID,
78
- collection: (formOverrides === null || formOverrides === void 0 ? void 0 : formOverrides.slug) || 'forms',
79
- })];
80
- case 2:
81
- form = _c.sent();
82
- if (!form) return [3 /*break*/, 7];
83
- emails = form.emails;
84
- if (!emails) return [3 /*break*/, 6];
85
- formattedEmails = emails.map(function (email) {
86
- var message = email.message, subject = email.subject, emailTo = email.emailTo, emailCC = email.cc, emailBCC = email.bcc, emailFrom = email.emailFrom, emailReplyTo = email.replyTo;
87
- var to = (0, replaceDoubleCurlys_1.replaceDoubleCurlys)(emailTo, submissionData_1);
88
- var cc = emailCC ? (0, replaceDoubleCurlys_1.replaceDoubleCurlys)(emailCC, submissionData_1) : '';
89
- var bcc = emailBCC ? (0, replaceDoubleCurlys_1.replaceDoubleCurlys)(emailBCC, submissionData_1) : '';
90
- var from = (0, replaceDoubleCurlys_1.replaceDoubleCurlys)(emailFrom, submissionData_1);
91
- var replyTo = (0, replaceDoubleCurlys_1.replaceDoubleCurlys)(emailReplyTo || emailFrom, submissionData_1);
92
- return ({
93
- to: to,
94
- from: from,
95
- cc: cc,
96
- bcc: bcc,
97
- replyTo: replyTo,
98
- subject: (0, replaceDoubleCurlys_1.replaceDoubleCurlys)(subject, submissionData_1),
99
- html: "<div>".concat((0, serializeRichText_1.serialize)(message, submissionData_1), "</div>")
100
- });
101
- });
102
- emailsToSend = formattedEmails;
103
- if (!(typeof beforeEmail === 'function')) return [3 /*break*/, 4];
104
- return [4 /*yield*/, beforeEmail(formattedEmails)];
105
- case 3:
106
- emailsToSend = _c.sent();
107
- _c.label = 4;
108
- case 4:
109
- log = emailsToSend.map(function (_a) {
110
- var html = _a.html, rest = __rest(_a, ["html"]);
111
- return (__assign({}, rest));
112
- });
113
- return [4 /*yield*/, Promise.all(emailsToSend.map(function (email) { return __awaiter(void 0, void 0, void 0, function () {
114
- var to, emailPromise, err_2;
115
- return __generator(this, function (_a) {
116
- switch (_a.label) {
117
- case 0:
118
- to = email.to;
119
- _a.label = 1;
120
- case 1:
121
- _a.trys.push([1, 3, , 4]);
122
- return [4 /*yield*/, payload_1.sendEmail(email)];
123
- case 2:
124
- emailPromise = _a.sent();
125
- return [2 /*return*/, emailPromise];
126
- case 3:
127
- err_2 = _a.sent();
128
- console.error("Error while sending email to address: ".concat(to, ". Email not sent."));
129
- console.error(err_2);
130
- return [3 /*break*/, 4];
131
- case 4: return [2 /*return*/];
132
- }
133
- });
134
- }); }))];
135
- case 5:
136
- _c.sent();
137
- _c.label = 6;
138
- case 6: return [3 /*break*/, 8];
139
- case 7:
140
- console.log('No emails to send.');
141
- _c.label = 8;
142
- case 8: return [3 /*break*/, 10];
143
- case 9:
144
- err_1 = _c.sent();
145
- console.error("Error while sending one or more emails in form submission id: ".concat(formSubmissionID, "."));
146
- console.error(err_1);
147
- return [3 /*break*/, 10];
148
- case 10: return [2 /*return*/, data];
149
- }
150
- });
151
- }); };
152
- exports.default = sendEmail;
153
- //# sourceMappingURL=sendEmail.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sendEmail.js","sourceRoot":"","sources":["../../../../src/collections/FormSubmissions/hooks/sendEmail.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { CollectionConfig } from 'payload/types';
2
- import { PluginConfig } from '../../types';
3
- export declare const generateSubmissionCollection: (formConfig: PluginConfig) => CollectionConfig;
@@ -1,139 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
- if (ar || !(i in from)) {
16
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
- ar[i] = from[i];
18
- }
19
- }
20
- return to.concat(ar || Array.prototype.slice.call(from));
21
- };
22
- var __importDefault = (this && this.__importDefault) || function (mod) {
23
- return (mod && mod.__esModule) ? mod : { "default": mod };
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.generateSubmissionCollection = void 0;
27
- var sendEmail_1 = __importDefault(require("./hooks/sendEmail"));
28
- var createCharge_1 = __importDefault(require("./hooks/createCharge"));
29
- // all settings can be overridden by the config
30
- var generateSubmissionCollection = function (formConfig) {
31
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
32
- var newConfig = __assign(__assign({}, (formConfig === null || formConfig === void 0 ? void 0 : formConfig.formSubmissionOverrides) || {}), { slug: ((_a = formConfig === null || formConfig === void 0 ? void 0 : formConfig.formSubmissionOverrides) === null || _a === void 0 ? void 0 : _a.slug) || 'form-submissions', access: __assign({ create: function () { return true; }, update: function () { return false; }, read: function (_a) {
33
- var user = _a.req.user;
34
- return !!user;
35
- } }, ((_b = formConfig === null || formConfig === void 0 ? void 0 : formConfig.formSubmissionOverrides) === null || _b === void 0 ? void 0 : _b.access) || {}), admin: __assign(__assign({}, ((_c = formConfig === null || formConfig === void 0 ? void 0 : formConfig.formSubmissionOverrides) === null || _c === void 0 ? void 0 : _c.admin) || {}), { enableRichTextRelationship: false }), hooks: __assign({ beforeChange: __spreadArray([
36
- function (data) { return (0, createCharge_1.default)(data, formConfig); },
37
- function (data) { return (0, sendEmail_1.default)(data, formConfig); }
38
- ], ((_e = (_d = formConfig === null || formConfig === void 0 ? void 0 : formConfig.formSubmissionOverrides) === null || _d === void 0 ? void 0 : _d.hooks) === null || _e === void 0 ? void 0 : _e.beforeChange) || [], true) }, ((_f = formConfig === null || formConfig === void 0 ? void 0 : formConfig.formSubmissionOverrides) === null || _f === void 0 ? void 0 : _f.hooks) || {}), fields: __spreadArray([
39
- {
40
- name: 'form',
41
- type: 'relationship',
42
- relationTo: ((_g = formConfig === null || formConfig === void 0 ? void 0 : formConfig.formOverrides) === null || _g === void 0 ? void 0 : _g.slug) || 'forms',
43
- required: true,
44
- admin: {
45
- readOnly: true
46
- },
47
- },
48
- {
49
- name: 'submissionData',
50
- type: 'array',
51
- admin: {
52
- readOnly: true
53
- },
54
- fields: [
55
- {
56
- name: 'field',
57
- type: 'text',
58
- required: true,
59
- },
60
- {
61
- name: 'value',
62
- type: 'text',
63
- required: true,
64
- validate: function (value) {
65
- // TODO:
66
- // create a validation function that dynamically
67
- // relies on the field type and its options as configured.
68
- // How to access sibling data from this field?
69
- // Need the `name` of the field in order to validate it.
70
- // Might not be possible to use this validation function.
71
- // Instead, might need to do all validation in a `beforeValidate` collection hook.
72
- if (typeof value !== 'undefined') {
73
- return true;
74
- }
75
- return 'This field is required.';
76
- },
77
- },
78
- ],
79
- }
80
- ], ((_h = formConfig === null || formConfig === void 0 ? void 0 : formConfig.formSubmissionOverrides) === null || _h === void 0 ? void 0 : _h.fields) || [], true) });
81
- var paymentFieldConfig = (_j = formConfig === null || formConfig === void 0 ? void 0 : formConfig.fields) === null || _j === void 0 ? void 0 : _j.payment;
82
- if (paymentFieldConfig) {
83
- newConfig.fields.push({
84
- name: 'payment',
85
- type: 'group',
86
- admin: {
87
- readOnly: true
88
- },
89
- fields: [
90
- {
91
- name: 'field',
92
- label: 'Field',
93
- type: 'text'
94
- },
95
- {
96
- name: 'status',
97
- label: 'Status',
98
- type: 'text'
99
- },
100
- {
101
- name: 'amount',
102
- type: 'number',
103
- admin: {
104
- description: 'Amount in cents'
105
- }
106
- },
107
- {
108
- name: 'paymentProcessor',
109
- type: 'text',
110
- },
111
- {
112
- name: 'creditCard',
113
- label: 'Credit Card',
114
- type: 'group',
115
- fields: [
116
- {
117
- name: 'token',
118
- label: 'token',
119
- type: 'text'
120
- },
121
- {
122
- name: 'brand',
123
- label: 'Brand',
124
- type: 'text'
125
- },
126
- {
127
- name: 'number',
128
- label: 'Number',
129
- type: 'text'
130
- }
131
- ]
132
- }
133
- ]
134
- });
135
- }
136
- return newConfig;
137
- };
138
- exports.generateSubmissionCollection = generateSubmissionCollection;
139
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/collections/FormSubmissions/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- import { TextField } from 'payload/dist/fields/config/types';
3
- export declare const DynamicFieldSelector: React.FC<TextField>;
@@ -1,66 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- var desc = Object.getOwnPropertyDescriptor(m, k);
16
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
- desc = { enumerable: true, get: function() { return m[k]; } };
18
- }
19
- Object.defineProperty(o, k2, desc);
20
- }) : (function(o, m, k, k2) {
21
- if (k2 === undefined) k2 = k;
22
- o[k2] = m[k];
23
- }));
24
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
- Object.defineProperty(o, "default", { enumerable: true, value: v });
26
- }) : function(o, v) {
27
- o["default"] = v;
28
- });
29
- var __importStar = (this && this.__importStar) || function (mod) {
30
- if (mod && mod.__esModule) return mod;
31
- var result = {};
32
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
- __setModuleDefault(result, mod);
34
- return result;
35
- };
36
- Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.DynamicFieldSelector = void 0;
38
- var react_1 = __importStar(require("react"));
39
- var forms_1 = require("payload/components/forms");
40
- var DynamicFieldSelector = function (props) {
41
- var _a = (0, forms_1.useForm)(), fields = _a.fields, getDataByPath = _a.getDataByPath;
42
- var _b = (0, react_1.useState)([]), options = _b[0], setOptions = _b[1];
43
- (0, react_1.useEffect)(function () {
44
- // @ts-ignore
45
- var fields = getDataByPath('fields');
46
- if (fields) {
47
- var allNonPaymentFields = fields.map(function (block) {
48
- var name = block.name, label = block.label, blockType = block.blockType;
49
- if (blockType !== 'payment') {
50
- return ({
51
- label: label,
52
- value: name
53
- });
54
- }
55
- return null;
56
- }).filter(Boolean);
57
- setOptions(allNonPaymentFields);
58
- }
59
- }, [
60
- fields,
61
- getDataByPath
62
- ]);
63
- return (react_1.default.createElement(forms_1.Select, __assign({}, props, { options: options })));
64
- };
65
- exports.DynamicFieldSelector = DynamicFieldSelector;
66
- //# sourceMappingURL=DynamicFieldSelector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DynamicFieldSelector.js","sourceRoot":"","sources":["../../../src/collections/Forms/DynamicFieldSelector.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAmD;AACnD,kDAA2D;AAIpD,IAAM,oBAAoB,GAAwB,UAAC,KAAK;IACvD,IAAA,KAGF,IAAA,eAAO,GAAE,EAFX,MAAM,YAAA,EACN,aAAa,mBACF,CAAC;IAER,IAAA,KAAwB,IAAA,gBAAQ,EAAsB,EAAE,CAAC,EAAxD,OAAO,QAAA,EAAE,UAAU,QAAqC,CAAC;IAEhE,IAAA,iBAAS,EAAC;QACR,aAAa;QACb,IAAM,MAAM,GAAU,aAAa,CAAC,QAAQ,CAAC,CAAA;QAE7C,IAAI,MAAM,EAAE;YACV,IAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,UAAC,KAAK;gBAEzC,IAAA,IAAI,GAGF,KAAK,KAHH,EACJ,KAAK,GAEH,KAAK,MAFF,EACL,SAAS,GACP,KAAK,UADE,CACD;gBAEV,IAAI,SAAS,KAAK,SAAS,EAAE;oBAC3B,OAAO,CAAC;wBACN,KAAK,OAAA;wBACL,KAAK,EAAE,IAAI;qBACZ,CAAC,CAAA;iBACH;gBAED,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAwB,CAAC;YAC1C,UAAU,CAAC,mBAAmB,CAAC,CAAC;SACjC;IACH,CAAC,EAAE;QACD,MAAM;QACN,aAAa;KACd,CAAC,CAAC;IAEH,OAAO,CACL,8BAAC,cAAM,eACD,KAAK,IACT,OAAO,EAAE,OAAO,IAChB,CACH,CAAC;AACJ,CAAC,CAAC;AA1CW,QAAA,oBAAoB,wBA0C/B"}
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- import { Props as TextFieldType } from 'payload/dist/admin/components/forms/field-types/Text/types';
3
- export declare const DynamicPriceSelector: React.FC<TextFieldType>;