@payloadcms/plugin-seo 1.0.6 → 1.0.7

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 (50) hide show
  1. package/README.md +11 -0
  2. package/dist/collections/FormSubmissions/hooks/createCharge.d.ts +3 -0
  3. package/dist/collections/FormSubmissions/hooks/createCharge.js +53 -0
  4. package/dist/collections/FormSubmissions/hooks/createCharge.js.map +1 -0
  5. package/dist/collections/FormSubmissions/hooks/sendEmail.d.ts +3 -0
  6. package/dist/collections/FormSubmissions/hooks/sendEmail.js +151 -0
  7. package/dist/collections/FormSubmissions/hooks/sendEmail.js.map +1 -0
  8. package/dist/collections/FormSubmissions/index.d.ts +3 -0
  9. package/dist/collections/FormSubmissions/index.js +137 -0
  10. package/dist/collections/FormSubmissions/index.js.map +1 -0
  11. package/dist/collections/Forms/DynamicFieldSelector.d.ts +3 -0
  12. package/dist/collections/Forms/DynamicFieldSelector.js +62 -0
  13. package/dist/collections/Forms/DynamicFieldSelector.js.map +1 -0
  14. package/dist/collections/Forms/DynamicPriceSelector.d.ts +3 -0
  15. package/dist/collections/Forms/DynamicPriceSelector.js +76 -0
  16. package/dist/collections/Forms/DynamicPriceSelector.js.map +1 -0
  17. package/dist/collections/Forms/fields.d.ts +6 -0
  18. package/dist/collections/Forms/fields.js +481 -0
  19. package/dist/collections/Forms/fields.js.map +1 -0
  20. package/dist/collections/Forms/index.d.ts +3 -0
  21. package/dist/collections/Forms/index.js +194 -0
  22. package/dist/collections/Forms/index.js.map +1 -0
  23. package/dist/index.js +9 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/mocks/serverModule.d.ts +2 -0
  26. package/dist/mocks/serverModule.js +4 -0
  27. package/dist/mocks/serverModule.js.map +1 -0
  28. package/dist/types.d.ts +1 -0
  29. package/dist/utilities/deepMerge.d.ts +2 -0
  30. package/dist/utilities/deepMerge.js +44 -0
  31. package/dist/utilities/deepMerge.js.map +1 -0
  32. package/dist/utilities/generateMetaDescription.d.ts +2 -0
  33. package/dist/utilities/generateMetaDescription.js +57 -0
  34. package/dist/utilities/generateMetaDescription.js.map +1 -0
  35. package/dist/utilities/generateMetaImage.d.ts +2 -0
  36. package/dist/utilities/generateMetaImage.js +14 -0
  37. package/dist/utilities/generateMetaImage.js.map +1 -0
  38. package/dist/utilities/generateMetaTitle.d.ts +2 -0
  39. package/dist/utilities/generateMetaTitle.js +74 -0
  40. package/dist/utilities/generateMetaTitle.js.map +1 -0
  41. package/dist/utilities/replaceDoubleCurlys.d.ts +7 -0
  42. package/dist/utilities/replaceDoubleCurlys.js +20 -0
  43. package/dist/utilities/replaceDoubleCurlys.js.map +1 -0
  44. package/dist/utilities/serializeRichText.d.ts +10 -0
  45. package/dist/utilities/serializeRichText.js +49 -0
  46. package/dist/utilities/serializeRichText.js.map +1 -0
  47. package/dist/utilities/stringifyRichText.d.ts +3 -0
  48. package/dist/utilities/stringifyRichText.js +16 -0
  49. package/dist/utilities/stringifyRichText.js.map +1 -0
  50. package/package.json +3 -3
package/README.md CHANGED
@@ -90,6 +90,17 @@ export default config;
90
90
  })
91
91
  ```
92
92
 
93
+ - `generateImage`
94
+
95
+ A function that allows you to return any meta image, including from document's content.
96
+
97
+ ```js
98
+ seo({
99
+ ...
100
+ generateImage: ({ doc, locale }) => doc?.featuredImage?.value
101
+ })
102
+ ```
103
+
93
104
  - `generateURL`
94
105
 
95
106
  A function called by the search preview component to display the actual URL of your page.
@@ -0,0 +1,3 @@
1
+ import { FormConfig } from "../../../types";
2
+ declare const createCharge: (beforeChangeData: any, formConfig: FormConfig) => Promise<any>;
3
+ export default createCharge;
@@ -0,0 +1,53 @@
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 (_) 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, handlePayment;
41
+ return __generator(this, function (_a) {
42
+ operation = beforeChangeData.operation;
43
+ if (operation === 'create') {
44
+ handlePayment = (formConfig || {}).handlePayment;
45
+ if (typeof handlePayment === 'function') {
46
+ handlePayment(beforeChangeData);
47
+ }
48
+ }
49
+ return [2 /*return*/, beforeChangeData];
50
+ });
51
+ }); };
52
+ exports.default = createCharge;
53
+ //# sourceMappingURL=createCharge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCharge.js","sourceRoot":"","sources":["../../../../src/collections/FormSubmissions/hooks/createCharge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAM,YAAY,GAAG,UAAO,gBAAqB,EAAE,UAAsB;;;QAErE,SAAS,GACP,gBAAgB,UADT,CACU;QAErB,IAAI,SAAS,KAAK,QAAQ,EAAE;YAExB,aAAa,GACX,CAAA,UAAU,IAAI,EAAE,CAAA,cADL,CACM;YAErB,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE;gBACvC,aAAa,CAAC,gBAAgB,CAAC,CAAC;aACjC;SACF;QAED,sBAAO,gBAAgB,EAAC;;KACzB,CAAC;AAEF,kBAAe,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { FormConfig } from '../../../types';
2
+ declare const sendEmail: (beforeChangeData: any, formConfig: FormConfig) => Promise<any>;
3
+ export default sendEmail;
@@ -0,0 +1,151 @@
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 (_) 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;
69
+ if (!(operation === 'create')) return [3 /*break*/, 11];
70
+ data = beforeChangeData.data, 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, emailFrom = email.emailFrom;
87
+ var to = (0, replaceDoubleCurlys_1.replaceDoubleCurlys)(emailTo, submissionData_1);
88
+ var from = (0, replaceDoubleCurlys_1.replaceDoubleCurlys)(emailFrom, submissionData_1);
89
+ if (to && from) {
90
+ return ({
91
+ to: to,
92
+ from: from,
93
+ subject: (0, replaceDoubleCurlys_1.replaceDoubleCurlys)(subject, submissionData_1),
94
+ html: "<div>".concat((0, serializeRichText_1.serialize)(message, submissionData_1))
95
+ });
96
+ }
97
+ return null;
98
+ }).filter(Boolean);
99
+ emailsToSend = formattedEmails;
100
+ if (!(typeof beforeEmail === 'function')) return [3 /*break*/, 4];
101
+ return [4 /*yield*/, beforeEmail(formattedEmails)];
102
+ case 3:
103
+ emailsToSend = _c.sent();
104
+ _c.label = 4;
105
+ case 4:
106
+ log = emailsToSend.map(function (_a) {
107
+ var html = _a.html, rest = __rest(_a, ["html"]);
108
+ return (__assign({}, rest));
109
+ });
110
+ return [4 /*yield*/, Promise.all(emailsToSend.map(function (email) { return __awaiter(void 0, void 0, void 0, function () {
111
+ var to, emailPromise, err_2;
112
+ return __generator(this, function (_a) {
113
+ switch (_a.label) {
114
+ case 0:
115
+ to = email.to;
116
+ _a.label = 1;
117
+ case 1:
118
+ _a.trys.push([1, 3, , 4]);
119
+ return [4 /*yield*/, payload_1.sendEmail(email)];
120
+ case 2:
121
+ emailPromise = _a.sent();
122
+ return [2 /*return*/, emailPromise];
123
+ case 3:
124
+ err_2 = _a.sent();
125
+ console.error("Error while sending email to address: ".concat(to, ". Email not sent."));
126
+ console.error(err_2);
127
+ return [3 /*break*/, 4];
128
+ case 4: return [2 /*return*/];
129
+ }
130
+ });
131
+ }); }))];
132
+ case 5:
133
+ _c.sent();
134
+ _c.label = 6;
135
+ case 6: return [3 /*break*/, 8];
136
+ case 7:
137
+ console.log('No emails to send.');
138
+ _c.label = 8;
139
+ case 8: return [3 /*break*/, 10];
140
+ case 9:
141
+ err_1 = _c.sent();
142
+ console.error("Error while sending one or more emails in form submission id: ".concat(formSubmissionID, "."));
143
+ console.error(err_1);
144
+ return [3 /*break*/, 10];
145
+ case 10: return [2 /*return*/, data];
146
+ case 11: return [2 /*return*/, beforeChangeData];
147
+ }
148
+ });
149
+ }); };
150
+ exports.default = sendEmail;
151
+ //# sourceMappingURL=sendEmail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendEmail.js","sourceRoot":"","sources":["../../../../src/collections/FormSubmissions/hooks/sendEmail.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0EAAiE;AAEjE,8EAA6E;AAE7E,IAAM,SAAS,GAAG,UAAO,gBAAqB,EAAE,UAAsB;;;;;gBAElE,SAAS,GACP,gBAAgB,UADT,CACU;qBAEjB,CAAA,SAAS,KAAK,QAAQ,CAAA,EAAtB,yBAAsB;gBAEtB,IAAI,GAOF,gBAAgB,KAPd,EAEE,gBAAgB,GAKpB,gBAAgB,QALI,EAGpB,YAEA,gBAAgB,YAFT,CAEU;gBAEf,KAGF,IAAI,IAAI,EAAE,EAFN,MAAM,UAAA,EACZ,oCAAc,CACD;gBAET,KAGF,UAAU,IAAI,EAAE,EAFlB,WAAW,iBAAA,EACX,aAAa,mBAAA,CACM;;;;gBAGN,qBAAM,SAAO,CAAC,QAAQ,CAAC;wBAClC,EAAE,EAAE,MAAM;wBACV,UAAU,EAAE,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,KAAI,OAAO;qBAC3C,CAAC,EAAA;;gBAHI,IAAI,GAAG,SAGX;qBAEE,IAAI,EAAJ,wBAAI;gBAEJ,MAAM,GACJ,IAAI,OADA,CACC;qBAEL,MAAM,EAAN,wBAAM;gBACF,eAAe,GAAqB,MAAM,CAAC,GAAG,CAAC,UAAC,KAAY;oBAE9D,IAAA,OAAO,GAIL,KAAK,QAJA,EACP,OAAO,GAGL,KAAK,QAHA,EACP,OAAO,GAEL,KAAK,QAFA,EACP,SAAS,GACP,KAAK,UADE,CACD;oBAEV,IAAM,EAAE,GAAG,IAAA,yCAAmB,EAAC,OAAO,EAAE,gBAAc,CAAC,CAAC;oBACxD,IAAM,IAAI,GAAG,IAAA,yCAAmB,EAAC,SAAS,EAAE,gBAAc,CAAC,CAAC;oBAE5D,IAAI,EAAE,IAAI,IAAI,EAAE;wBACd,OAAO,CAAC;4BACN,EAAE,IAAA;4BACF,IAAI,MAAA;4BACJ,OAAO,EAAE,IAAA,yCAAmB,EAAC,OAAO,EAAE,gBAAc,CAAC;4BACrD,IAAI,EAAE,eAAQ,IAAA,6BAAS,EAAC,OAAO,EAAE,gBAAc,CAAC,CAAE;yBACnD,CAAC,CAAC;qBACJ;oBACD,OAAO,IAAI,CAAA;gBACb,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAEf,YAAY,GAAG,eAAe,CAAA;qBAE9B,CAAA,OAAO,WAAW,KAAK,UAAU,CAAA,EAAjC,wBAAiC;gBACpB,qBAAM,WAAW,CAAC,eAAe,CAAC,EAAA;;gBAAjD,YAAY,GAAG,SAAkC,CAAC;;;gBAG9C,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,UAAC,EAAiB;oBAAf,IAAA,IAAI,UAAA,EAAK,IAAI,cAAf,QAAiB,CAAF;oBAAO,OAAA,cAAM,IAAI,EAAG,CAAA;iBAAA,CAAC,CAAA;gBAElE,qBAAM,OAAO,CAAC,GAAG,CACf,YAAY,CAAC,GAAG,CAAC,UAAO,KAAK;;;;;oCACnB,EAAE,GAAK,KAAK,GAAV,CAAW;;;;oCAEE,qBAAM,SAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAA;;oCAA7C,YAAY,GAAG,SAA8B;oCACnD,sBAAO,YAAY,EAAC;;;oCAEpB,OAAO,CAAC,KAAK,CAAC,gDAAyC,EAAE,sBAAmB,CAAC,CAAC;oCAC9E,OAAO,CAAC,KAAK,CAAC,KAAG,CAAC,CAAC;;;;;yBAEtB,CAAC,CACH,EAAA;;gBAXD,SAWC,CAAC;;;;gBAGJ,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;;;;;gBAGnC,OAAO,CAAC,KAAK,CAAC,wEAAiE,gBAAgB,MAAG,CAAC,CAAC;gBACpG,OAAO,CAAC,KAAK,CAAC,KAAG,CAAC,CAAC;;qBAGrB,sBAAO,IAAI,EAAA;qBAGb,sBAAO,gBAAgB,EAAC;;;KACzB,CAAC;AAEF,kBAAe,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { CollectionConfig } from 'payload/types';
2
+ import { FormConfig } from '../../types';
3
+ export declare const generateSubmissionCollection: (formConfig: FormConfig) => CollectionConfig;
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateSubmissionCollection = void 0;
7
+ var deepMerge_1 = __importDefault(require("../../utilities/deepMerge"));
8
+ var sendEmail_1 = __importDefault(require("./hooks/sendEmail"));
9
+ var createCharge_1 = __importDefault(require("./hooks/createCharge"));
10
+ // all settings can be overridden by the config
11
+ var generateSubmissionCollection = function (formConfig) {
12
+ var _a;
13
+ return (0, deepMerge_1.default)({
14
+ slug: ((_a = formConfig === null || formConfig === void 0 ? void 0 : formConfig.formSubmissionOverrides) === null || _a === void 0 ? void 0 : _a.slug) || 'formSubmissions',
15
+ access: {
16
+ create: function () { return true; },
17
+ update: function () { return false; },
18
+ read: function (_a) {
19
+ var user = _a.req.user;
20
+ return !!user;
21
+ } // logged-in users
22
+ },
23
+ admin: {
24
+ enableRichTextRelationship: false
25
+ },
26
+ hooks: {
27
+ beforeChange: [
28
+ function (data) { return (0, createCharge_1.default)(data, formConfig); },
29
+ function (data) { return (0, sendEmail_1.default)(data, formConfig); },
30
+ ],
31
+ },
32
+ fields: [
33
+ {
34
+ name: 'form',
35
+ type: 'relationship',
36
+ relationTo: 'forms',
37
+ required: true,
38
+ admin: {
39
+ readOnly: true
40
+ },
41
+ },
42
+ {
43
+ name: 'submissionData',
44
+ type: 'array',
45
+ admin: {
46
+ readOnly: true
47
+ },
48
+ fields: [
49
+ {
50
+ name: 'field',
51
+ type: 'text',
52
+ required: true,
53
+ },
54
+ {
55
+ name: 'value',
56
+ type: 'text',
57
+ required: true,
58
+ validate: function (value) {
59
+ // TODO:
60
+ // create a validation function that dynamically
61
+ // relies on the field type and its options as configured.
62
+ // How to access sibling data from this field?
63
+ // Need the `name` of the field in order to validate it.
64
+ // Might not be possible to use this validation function.
65
+ // Instead, might need to do all validation in a `beforeValidate` collection hook.
66
+ if (typeof value !== 'undefined') {
67
+ return true;
68
+ }
69
+ return 'This field is required.';
70
+ },
71
+ },
72
+ ],
73
+ },
74
+ {
75
+ name: 'payments',
76
+ type: 'array',
77
+ admin: {
78
+ readOnly: true
79
+ },
80
+ fields: [
81
+ {
82
+ name: 'field',
83
+ label: 'Field',
84
+ type: 'text'
85
+ },
86
+ {
87
+ name: 'status',
88
+ label: 'Status',
89
+ type: 'text'
90
+ },
91
+ {
92
+ name: 'amount',
93
+ type: 'number'
94
+ },
95
+ {
96
+ name: 'amount',
97
+ type: 'number'
98
+ },
99
+ {
100
+ name: 'paymentProcessor',
101
+ type: 'select',
102
+ options: [
103
+ {
104
+ label: 'Stripe',
105
+ value: 'stripe'
106
+ }
107
+ ]
108
+ },
109
+ {
110
+ name: 'creditCard',
111
+ label: 'Credit Card',
112
+ type: 'group',
113
+ fields: [
114
+ {
115
+ name: 'token',
116
+ label: 'token',
117
+ type: 'text'
118
+ },
119
+ {
120
+ name: 'brand',
121
+ label: 'Brand',
122
+ type: 'text'
123
+ },
124
+ {
125
+ name: 'number',
126
+ label: 'Number',
127
+ type: 'text'
128
+ }
129
+ ]
130
+ }
131
+ ]
132
+ }
133
+ ],
134
+ }, formConfig.formSubmissionOverrides || {});
135
+ };
136
+ exports.generateSubmissionCollection = generateSubmissionCollection;
137
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/collections/FormSubmissions/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { TextField } from 'payload/dist/fields/config/types';
3
+ export declare const DynamicFieldSelector: React.FC<TextField>;
@@ -0,0 +1,62 @@
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
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.DynamicFieldSelector = void 0;
34
+ var react_1 = __importStar(require("react"));
35
+ var forms_1 = require("payload/components/forms");
36
+ var DynamicFieldSelector = function (props) {
37
+ var _a = (0, forms_1.useForm)(), fields = _a.fields, getDataByPath = _a.getDataByPath;
38
+ var _b = (0, react_1.useState)([]), options = _b[0], setOptions = _b[1];
39
+ (0, react_1.useEffect)(function () {
40
+ // @ts-ignore
41
+ var fields = getDataByPath('fields');
42
+ if (fields) {
43
+ var allNonPaymentFields = fields.map(function (block) {
44
+ var name = block.name, id = block.id, blockType = block.blockType;
45
+ if (blockType !== 'payment') {
46
+ return ({
47
+ label: name,
48
+ value: id
49
+ });
50
+ }
51
+ return null;
52
+ }).filter(Boolean);
53
+ setOptions(allNonPaymentFields);
54
+ }
55
+ }, [
56
+ fields,
57
+ getDataByPath
58
+ ]);
59
+ return (react_1.default.createElement(forms_1.Select, __assign({}, props, { options: options })));
60
+ };
61
+ exports.DynamicFieldSelector = DynamicFieldSelector;
62
+ //# sourceMappingURL=DynamicFieldSelector.js.map
@@ -0,0 +1 @@
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,EAAE,GAEA,KAAK,GAFL,EACF,SAAS,GACP,KAAK,UADE,CACD;gBAEV,IAAI,SAAS,KAAK,SAAS,EAAE;oBAC3B,OAAO,CAAC;wBACN,KAAK,EAAE,IAAI;wBACX,KAAK,EAAE,EAAE;qBACV,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"}
@@ -0,0 +1,3 @@
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>;
@@ -0,0 +1,76 @@
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
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.DynamicPriceSelector = void 0;
34
+ var react_1 = __importStar(require("react"));
35
+ var forms_1 = require("payload/components/forms");
36
+ var DynamicPriceSelector = function (props) {
37
+ var path = props.path, label = props.label;
38
+ var _a = (0, forms_1.useForm)(), fields = _a.fields, getDataByPath = _a.getDataByPath, getData = _a.getData;
39
+ var _b = (0, react_1.useState)(), isNumberField = _b[0], setIsNumberField = _b[1];
40
+ var _c = (0, react_1.useState)(), valueType = _c[0], setValueType = _c[1];
41
+ // only number fields can set 'valueType' to 'valueOfField`
42
+ (0, react_1.useEffect)(function () {
43
+ if (path) {
44
+ var parentPath = path.split('.').slice(0, -1).join('.');
45
+ var paymentFieldData = getDataByPath(parentPath);
46
+ if (paymentFieldData) {
47
+ var fieldToUse_1 = paymentFieldData.fieldToUse, valueType_1 = paymentFieldData.valueType;
48
+ setValueType(valueType_1);
49
+ var allFields = getData().fields;
50
+ var field = allFields.find(function (field) { return field.id === fieldToUse_1; });
51
+ if (field) {
52
+ var blockType = field.blockType;
53
+ setIsNumberField(blockType === 'number');
54
+ }
55
+ }
56
+ }
57
+ }, [
58
+ fields,
59
+ path,
60
+ getDataByPath,
61
+ getData
62
+ ]);
63
+ if (valueType === 'static') {
64
+ return (react_1.default.createElement(forms_1.Text, __assign({}, props)));
65
+ }
66
+ if (valueType === 'dynamic' && !isNumberField) {
67
+ return (react_1.default.createElement("div", null,
68
+ react_1.default.createElement("div", null, label),
69
+ react_1.default.createElement("div", { style: {
70
+ color: '#9A9A9A',
71
+ } }, "The selected field must be of type number to be dynamic.")));
72
+ }
73
+ return null;
74
+ };
75
+ exports.DynamicPriceSelector = DynamicPriceSelector;
76
+ //# sourceMappingURL=DynamicPriceSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicPriceSelector.js","sourceRoot":"","sources":["../../../src/collections/Forms/DynamicPriceSelector.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAmD;AACnD,kDAAyD;AAMlD,IAAM,oBAAoB,GAA4B,UAAC,KAAK;IAE/D,IAAA,IAAI,GAEF,KAAK,KAFH,EACJ,KAAK,GACH,KAAK,MADF,CACG;IAEJ,IAAA,KAIF,IAAA,eAAO,GAAE,EAHX,MAAM,YAAA,EACN,aAAa,mBAAA,EACb,OAAO,aACI,CAAC;IAER,IAAA,KAAoC,IAAA,gBAAQ,GAAW,EAAtD,aAAa,QAAA,EAAE,gBAAgB,QAAuB,CAAC;IACxD,IAAA,KAA4B,IAAA,gBAAQ,GAAU,EAA7C,SAAS,QAAA,EAAE,YAAY,QAAsB,CAAC;IAErD,2DAA2D;IAC3D,IAAA,iBAAS,EAAC;QACR,IAAI,IAAI,EAAE;YACR,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACzD,IAAM,gBAAgB,GAAQ,aAAa,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,gBAAgB,EAAE;gBAElB,IAAA,YAAU,GAER,gBAAgB,WAFR,EACV,WAAS,GACP,gBAAgB,UADT,CACU;gBAErB,YAAY,CAAC,WAAS,CAAC,CAAC;gBAEhB,IAAQ,SAAS,GAAW,OAAO,EAAE,OAApB,CAAqB;gBAC9C,IAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,UAAC,KAAkB,IAAK,OAAA,KAAK,CAAC,EAAE,KAAK,YAAU,EAAvB,CAAuB,CAAC,CAAC;gBAE9E,IAAI,KAAK,EAAE;oBACD,IAAA,SAAS,GAAK,KAAK,UAAV,CAAW;oBAC5B,gBAAgB,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC;iBAC1C;aACF;SACF;IACH,CAAC,EAAE;QACD,MAAM;QACN,IAAI;QACJ,aAAa;QACb,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,SAAS,KAAK,QAAQ,EAAE;QAC1B,OAAO,CACL,8BAAC,YAAI,eAAK,KAAK,EAAI,CACpB,CAAA;KACF;IAED,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,aAAa,EAAE;QAC7C,OAAO,CACL;YACE,2CACG,KAAK,CACF;YACN,uCACE,KAAK,EAAE;oBACL,KAAK,EAAE,SAAS;iBACjB,+DAGG,CACF,CACP,CAAA;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAC;AApEW,QAAA,oBAAoB,wBAoE/B"}
@@ -0,0 +1,6 @@
1
+ import { Block } from 'payload/types';
2
+ import { FieldConfig } from '../../types';
3
+ declare const _default: {
4
+ [key: string]: Block | ((fieldConfig: FieldConfig) => Block);
5
+ };
6
+ export default _default;