@payloadcms/plugin-seo 1.0.8 → 1.0.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/README.md +108 -51
- package/dist/fields/MetaDescription.d.ts +4 -4
- package/dist/fields/MetaDescription.js +5 -5
- package/dist/fields/MetaDescription.js.map +1 -1
- package/dist/fields/MetaImage.d.ts +3 -3
- package/dist/fields/MetaImage.js +5 -5
- package/dist/fields/MetaImage.js.map +1 -1
- package/dist/fields/MetaTitle.d.ts +3 -3
- package/dist/fields/MetaTitle.js +5 -5
- package/dist/fields/MetaTitle.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +45 -27
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/ui/Overview.js +2 -2
- package/dist/ui/Overview.js.map +1 -1
- package/dist/ui/Preview.d.ts +3 -3
- package/dist/ui/Preview.js +2 -2
- package/dist/ui/Preview.js.map +1 -1
- package/package.json +1 -3
package/README.md
CHANGED
|
@@ -5,12 +5,13 @@
|
|
|
5
5
|
A plugin for [Payload CMS](https://github.com/payloadcms/payload) to auto-generate SEO meta data based on the content of your documents.
|
|
6
6
|
|
|
7
7
|
Core features:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
|
|
9
|
+
- Adds a `meta` field to every SEO-enabled collection or global. It:
|
|
10
|
+
- includes title, description, and image subfields
|
|
11
|
+
- auto-generates meta data from your document's content
|
|
12
|
+
- displays hints and indicators to help content editors
|
|
13
|
+
- renders a snippet of what a search engine might display
|
|
14
|
+
- soon will support variable injection
|
|
14
15
|
|
|
15
16
|
## Installation
|
|
16
17
|
|
|
@@ -61,78 +62,134 @@ export default config;
|
|
|
61
62
|
|
|
62
63
|
- `collections` : string[] | optional
|
|
63
64
|
|
|
64
|
-
|
|
65
|
+
An array of collections slugs to enable SEO. Enabled collections receive a `meta` field which is an object of title, description, and image subfields.
|
|
65
66
|
|
|
66
67
|
- `globals` : string[] | optional
|
|
67
68
|
|
|
68
|
-
|
|
69
|
+
An array of global slugs to enable SEO. Enabled globals receive a `meta` field which is an object of title, description, and image subfields.
|
|
69
70
|
|
|
70
71
|
- `uploadsCollection` : string | optional
|
|
71
72
|
|
|
72
|
-
|
|
73
|
+
An upload-enabled collection slug, for the meta image to access.
|
|
73
74
|
|
|
74
75
|
- `tabbedUI` : boolean | optional
|
|
75
76
|
|
|
76
|
-
|
|
77
|
+
Displays meta fields as tabs using Payload's [Tabs Field](https://payloadcms.com/docs/fields/tabs). Defaults to `false`.
|
|
77
78
|
|
|
78
79
|
- `generateTitle` : method | optional
|
|
79
80
|
|
|
80
|
-
|
|
81
|
+
A function that allows you to return any meta title, including from document's content.
|
|
81
82
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
83
|
+
```js
|
|
84
|
+
seo({
|
|
85
|
+
...
|
|
86
|
+
generateTitle: ({ doc, locale }) => `Website.com — ${doc?.title?.value}`,
|
|
87
|
+
})
|
|
88
|
+
```
|
|
88
89
|
|
|
89
90
|
- `generateDescription` : method | optional
|
|
90
91
|
|
|
91
|
-
|
|
92
|
+
A function that allows you to return any meta description, including from document's content.
|
|
92
93
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
94
|
+
```js
|
|
95
|
+
seo({
|
|
96
|
+
...
|
|
97
|
+
generateDescription: ({ doc, locale }) => doc?.excerpt?.value
|
|
98
|
+
})
|
|
99
|
+
```
|
|
99
100
|
|
|
100
101
|
- `generateImage` : method | optional
|
|
101
102
|
|
|
102
|
-
|
|
103
|
+
A function that allows you to return any meta image, including from document's content.
|
|
103
104
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
105
|
+
```js
|
|
106
|
+
seo({
|
|
107
|
+
...
|
|
108
|
+
generateImage: ({ doc, locale }) => doc?.featuredImage?.value
|
|
109
|
+
})
|
|
110
|
+
```
|
|
110
111
|
|
|
111
112
|
- `generateURL` : method | optional
|
|
112
113
|
|
|
113
|
-
|
|
114
|
+
A function called by the search preview component to display the actual URL of your page.
|
|
114
115
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
116
|
+
```js
|
|
117
|
+
seo({
|
|
118
|
+
...
|
|
119
|
+
generateURL: ({ doc, locale }) => `https://yoursite.com/${doc?.slug?.value}`
|
|
120
|
+
})
|
|
121
|
+
```
|
|
121
122
|
|
|
122
|
-
|
|
123
|
+
## TypeScript
|
|
123
124
|
|
|
124
|
-
|
|
125
|
+
All types can be directly imported:
|
|
125
126
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
127
|
+
```js
|
|
128
|
+
import {
|
|
129
|
+
PluginConfig,
|
|
130
|
+
GenerateTitle,
|
|
131
|
+
GenerateDescription
|
|
132
|
+
GenerateURL
|
|
133
|
+
} from '@payloadcms/plugin-seo/dist/types';
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Development
|
|
137
|
+
|
|
138
|
+
To actively develop or debug this plugin you can either work directly within the demo directory of this repo, or link your own project.
|
|
139
|
+
|
|
140
|
+
1. #### Internal Demo
|
|
141
|
+
|
|
142
|
+
This repo includes a fully working, self-seeding instance of Payload that installs the plugin directly from the source code. This is the easiest way to get started. To spin up this demo, follow these steps:
|
|
143
|
+
|
|
144
|
+
1. First clone the repo
|
|
145
|
+
1. Then, `cd YOUR_PLUGIN_REPO && yarn && cd demo && yarn && yarn dev`
|
|
146
|
+
1. Now open `http://localhost:3000/admin` in your browser
|
|
147
|
+
1. Enter username `dev@payloadcms.com` and password `test`
|
|
148
|
+
|
|
149
|
+
That's it! Changes made in `./src` will be reflected in your demo. Keep in mind that the demo database is automatically seeded on every startup, any changes you make to the data get destroyed each time you reboot the app.
|
|
150
|
+
|
|
151
|
+
1. #### Linked Project
|
|
152
|
+
|
|
153
|
+
You can alternatively link your own project to the source code:
|
|
154
|
+
|
|
155
|
+
1. First clone the repo
|
|
156
|
+
1. Then, `cd YOUR_PLUGIN_REPO && yarn && cd demo && cp env.example .env && yarn && yarn dev`
|
|
157
|
+
1. Now `cd` back into your own project and run, `yarn link @payloadcms/plugin-seo`
|
|
158
|
+
1. If this plugin using React in any way, continue to the next step. Otherwise skip to step 7.
|
|
159
|
+
1. From your own project, `cd node_modules/react && yarn link && cd ../react-dom && yarn link && cd ../../`
|
|
160
|
+
1. Then, `cd YOUR_PLUGIN_REPO && yarn link react react-dom`
|
|
161
|
+
|
|
162
|
+
All set! You can now boot up your own project as normal, and your local copy of the plugin source code will be used. Keep in mind that changes to the source code require a rebuild, `yarn build`.
|
|
163
|
+
|
|
164
|
+
You might also need to alias these modules in your Webpack config. To do this, open your project's Payload config and add the following:
|
|
165
|
+
|
|
166
|
+
```js
|
|
167
|
+
import { buildConfig } from "payload/config";
|
|
168
|
+
|
|
169
|
+
export default buildConfig({
|
|
170
|
+
admin: {
|
|
171
|
+
webpack: (config) => ({
|
|
172
|
+
...config,
|
|
173
|
+
resolve: {
|
|
174
|
+
...config.resolve,
|
|
175
|
+
alias: {
|
|
176
|
+
...config.resolve.alias,
|
|
177
|
+
react: path.join(__dirname, "../node_modules/react"),
|
|
178
|
+
"react-dom": path.join(__dirname, "../node_modules/react-dom"),
|
|
179
|
+
payload: path.join(__dirname, "../node_modules/payload"),
|
|
180
|
+
"@payloadcms/plugin-seo": path.join(
|
|
181
|
+
__dirname,
|
|
182
|
+
"../../payload/plugin-seo/src"
|
|
183
|
+
),
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
}),
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Screenshots
|
|
134
192
|
|
|
135
|
-
|
|
136
|
-

|
|
193
|
+

|
|
137
194
|
|
|
138
|
-
|
|
195
|
+
<!--  -->
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { TextareaField } from 'payload/dist/fields/config/types';
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import { PluginConfig } from '../types';
|
|
4
|
+
type TextareaFieldWithProps = TextareaField & {
|
|
5
5
|
path: string;
|
|
6
|
-
|
|
6
|
+
pluginConfig: PluginConfig;
|
|
7
7
|
};
|
|
8
8
|
export declare const MetaDescription: React.FC<(TextareaFieldWithProps | {}) & {
|
|
9
|
-
|
|
9
|
+
pluginConfig: PluginConfig;
|
|
10
10
|
}>;
|
|
11
11
|
export declare const getMetaDescriptionField: (props: any) => JSX.Element;
|
|
12
12
|
export {};
|
|
@@ -48,7 +48,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
48
48
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
49
49
|
function step(op) {
|
|
50
50
|
if (f) throw new TypeError("Generator is already executing.");
|
|
51
|
-
while (_) try {
|
|
51
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
52
52
|
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;
|
|
53
53
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
54
54
|
switch (op[0]) {
|
|
@@ -82,9 +82,9 @@ var defaults_1 = require("../defaults");
|
|
|
82
82
|
var Input_1 = __importDefault(require("payload/dist/admin/components/forms/field-types/Textarea/Input"));
|
|
83
83
|
var _a = defaults_1.defaults.description, minLength = _a.minLength, maxLength = _a.maxLength;
|
|
84
84
|
var MetaDescription = function (props) {
|
|
85
|
-
var _a = props || {}, path = _a.path, label = _a.label, name = _a.name,
|
|
85
|
+
var _a = props || {}, path = _a.path, label = _a.label, name = _a.name, pluginConfig = _a.pluginConfig; // TODO: this typing is temporary until payload types are updated for custom field props
|
|
86
86
|
var locale = (0, utilities_1.useLocale)();
|
|
87
|
-
var fields = (0, forms_1.
|
|
87
|
+
var fields = (0, forms_1.useAllFormFields)()[0];
|
|
88
88
|
var field = (0, forms_1.useField)({
|
|
89
89
|
label: label,
|
|
90
90
|
name: name,
|
|
@@ -92,7 +92,7 @@ var MetaDescription = function (props) {
|
|
|
92
92
|
});
|
|
93
93
|
var value = field.value, setValue = field.setValue, showError = field.showError;
|
|
94
94
|
var regenerateDescription = (0, react_1.useCallback)(function () {
|
|
95
|
-
var generateDescription =
|
|
95
|
+
var generateDescription = pluginConfig.generateDescription;
|
|
96
96
|
var getDescription = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
97
97
|
var generatedDescription;
|
|
98
98
|
return __generator(this, function (_a) {
|
|
@@ -113,7 +113,7 @@ var MetaDescription = function (props) {
|
|
|
113
113
|
}, [
|
|
114
114
|
fields,
|
|
115
115
|
setValue,
|
|
116
|
-
|
|
116
|
+
pluginConfig,
|
|
117
117
|
locale
|
|
118
118
|
]);
|
|
119
119
|
return (react_1.default.createElement("div", { style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetaDescription.js","sourceRoot":"","sources":["../../src/fields/MetaDescription.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"MetaDescription.js","sourceRoot":"","sources":["../../src/fields/MetaDescription.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Props as UploadFieldType } from 'payload/dist/admin/components/forms/field-types/Upload/types';
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import { PluginConfig } from '../types';
|
|
4
|
+
type UploadFieldWithProps = UploadFieldType & {
|
|
5
5
|
path: string;
|
|
6
|
-
|
|
6
|
+
pluginConfig: PluginConfig;
|
|
7
7
|
};
|
|
8
8
|
export declare const MetaImage: React.FC<UploadFieldWithProps | {}>;
|
|
9
9
|
export declare const getMetaImageField: (props: any) => JSX.Element;
|
package/dist/fields/MetaImage.js
CHANGED
|
@@ -48,7 +48,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
48
48
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
49
49
|
function step(op) {
|
|
50
50
|
if (f) throw new TypeError("Generator is already executing.");
|
|
51
|
-
while (_) try {
|
|
51
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
52
52
|
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;
|
|
53
53
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
54
54
|
switch (op[0]) {
|
|
@@ -80,13 +80,13 @@ var Input_1 = __importDefault(require("payload/dist/admin/components/forms/field
|
|
|
80
80
|
var forms_1 = require("payload/components/forms");
|
|
81
81
|
var Pill_1 = require("../ui/Pill");
|
|
82
82
|
var MetaImage = function (props) {
|
|
83
|
-
var _a = props || {}, label = _a.label, relationTo = _a.relationTo, fieldTypes = _a.fieldTypes, name = _a.name,
|
|
83
|
+
var _a = props || {}, label = _a.label, relationTo = _a.relationTo, fieldTypes = _a.fieldTypes, name = _a.name, pluginConfig = _a.pluginConfig; // TODO: this typing is temporary until payload types are updated for custom field props
|
|
84
84
|
var field = (0, forms_1.useField)(props);
|
|
85
|
-
var fields = (0, forms_1.
|
|
85
|
+
var fields = (0, forms_1.useAllFormFields)()[0];
|
|
86
86
|
var locale = (0, utilities_1.useLocale)();
|
|
87
87
|
var value = field.value, setValue = field.setValue, showError = field.showError;
|
|
88
88
|
var regenerateImage = (0, react_1.useCallback)(function () {
|
|
89
|
-
var generateImage =
|
|
89
|
+
var generateImage = pluginConfig.generateImage;
|
|
90
90
|
var getDescription = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
91
91
|
var generatedImage;
|
|
92
92
|
return __generator(this, function (_a) {
|
|
@@ -107,7 +107,7 @@ var MetaImage = function (props) {
|
|
|
107
107
|
}, [
|
|
108
108
|
fields,
|
|
109
109
|
setValue,
|
|
110
|
-
|
|
110
|
+
pluginConfig,
|
|
111
111
|
locale,
|
|
112
112
|
]);
|
|
113
113
|
var hasImage = Boolean(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetaImage.js","sourceRoot":"","sources":["../../src/fields/MetaImage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA2C;AAC3C,0DAAoE;AAEpE,uGAAuF;AACvF,
|
|
1
|
+
{"version":3,"file":"MetaImage.js","sourceRoot":"","sources":["../../src/fields/MetaImage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Props as TextFieldType } from 'payload/dist/admin/components/forms/field-types/Text/types';
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import { PluginConfig } from '../types';
|
|
4
|
+
type TextFieldWithProps = TextFieldType & {
|
|
5
5
|
path: string;
|
|
6
|
-
|
|
6
|
+
pluginConfig: PluginConfig;
|
|
7
7
|
};
|
|
8
8
|
export declare const MetaTitle: React.FC<TextFieldWithProps | {}>;
|
|
9
9
|
export declare const getMetaTitleField: (props: any) => JSX.Element;
|
package/dist/fields/MetaTitle.js
CHANGED
|
@@ -48,7 +48,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
48
48
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
49
49
|
function step(op) {
|
|
50
50
|
if (f) throw new TypeError("Generator is already executing.");
|
|
51
|
-
while (_) try {
|
|
51
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
52
52
|
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;
|
|
53
53
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
54
54
|
switch (op[0]) {
|
|
@@ -82,17 +82,17 @@ var LengthIndicator_1 = require("../ui/LengthIndicator");
|
|
|
82
82
|
var defaults_1 = require("../defaults");
|
|
83
83
|
var _a = defaults_1.defaults.title, minLength = _a.minLength, maxLength = _a.maxLength;
|
|
84
84
|
var MetaTitle = function (props) {
|
|
85
|
-
var _a = props || {}, label = _a.label, name = _a.name, path = _a.path,
|
|
85
|
+
var _a = props || {}, label = _a.label, name = _a.name, path = _a.path, pluginConfig = _a.pluginConfig; // TODO: this typing is temporary until payload types are updated for custom field props
|
|
86
86
|
var field = (0, forms_1.useField)({
|
|
87
87
|
label: label,
|
|
88
88
|
name: name,
|
|
89
89
|
path: path
|
|
90
90
|
});
|
|
91
91
|
var locale = (0, utilities_1.useLocale)();
|
|
92
|
-
var fields = (0, forms_1.
|
|
92
|
+
var fields = (0, forms_1.useAllFormFields)()[0];
|
|
93
93
|
var value = field.value, setValue = field.setValue, showError = field.showError;
|
|
94
94
|
var regenerateTitle = (0, react_1.useCallback)(function () {
|
|
95
|
-
var generateTitle =
|
|
95
|
+
var generateTitle = pluginConfig.generateTitle;
|
|
96
96
|
var getTitle = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
97
97
|
var generatedTitle;
|
|
98
98
|
return __generator(this, function (_a) {
|
|
@@ -113,7 +113,7 @@ var MetaTitle = function (props) {
|
|
|
113
113
|
}, [
|
|
114
114
|
fields,
|
|
115
115
|
setValue,
|
|
116
|
-
|
|
116
|
+
pluginConfig,
|
|
117
117
|
locale,
|
|
118
118
|
]);
|
|
119
119
|
return (react_1.default.createElement("div", { style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetaTitle.js","sourceRoot":"","sources":["../../src/fields/MetaTitle.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA2C;AAE3C,0DAAyD;AACzD,qGAAwF;AACxF,
|
|
1
|
+
{"version":3,"file":"MetaTitle.js","sourceRoot":"","sources":["../../src/fields/MetaTitle.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Config } from 'payload/config';
|
|
2
|
-
import {
|
|
3
|
-
declare const seo: (
|
|
2
|
+
import { PluginConfig } from './types';
|
|
3
|
+
declare const seo: (pluginConfig: PluginConfig) => (config: Config) => Config;
|
|
4
4
|
export default seo;
|
package/dist/index.js
CHANGED
|
@@ -25,7 +25,7 @@ var Overview_1 = require("./ui/Overview");
|
|
|
25
25
|
var MetaTitle_1 = require("./fields/MetaTitle");
|
|
26
26
|
var Preview_1 = require("./ui/Preview");
|
|
27
27
|
var MetaImage_1 = require("./fields/MetaImage");
|
|
28
|
-
var seo = function (
|
|
28
|
+
var seo = function (pluginConfig) { return function (config) {
|
|
29
29
|
var _a, _b;
|
|
30
30
|
var seoFields = [
|
|
31
31
|
{
|
|
@@ -49,7 +49,7 @@ var seo = function (seoConfig) { return function (config) {
|
|
|
49
49
|
localized: true,
|
|
50
50
|
admin: {
|
|
51
51
|
components: {
|
|
52
|
-
Field: function (props) { return (0, MetaTitle_1.getMetaTitleField)(__assign(__assign({}, props), {
|
|
52
|
+
Field: function (props) { return (0, MetaTitle_1.getMetaTitleField)(__assign(__assign({}, props), { pluginConfig: pluginConfig })); },
|
|
53
53
|
},
|
|
54
54
|
},
|
|
55
55
|
},
|
|
@@ -59,20 +59,20 @@ var seo = function (seoConfig) { return function (config) {
|
|
|
59
59
|
localized: true,
|
|
60
60
|
admin: {
|
|
61
61
|
components: {
|
|
62
|
-
Field: function (props) { return (0, MetaDescription_1.getMetaDescriptionField)(__assign(__assign({}, props), {
|
|
62
|
+
Field: function (props) { return (0, MetaDescription_1.getMetaDescriptionField)(__assign(__assign({}, props), { pluginConfig: pluginConfig })); },
|
|
63
63
|
},
|
|
64
64
|
},
|
|
65
65
|
}
|
|
66
|
-
], (
|
|
66
|
+
], (pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.uploadsCollection) ? [{
|
|
67
67
|
name: 'image',
|
|
68
68
|
label: 'Meta Image',
|
|
69
69
|
type: 'upload',
|
|
70
70
|
localized: true,
|
|
71
|
-
relationTo:
|
|
71
|
+
relationTo: pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.uploadsCollection,
|
|
72
72
|
admin: {
|
|
73
73
|
description: 'Maximum upload file size: 12MB. Recommended file size for images is <500KB.',
|
|
74
74
|
components: {
|
|
75
|
-
Field: function (props) { return (0, MetaImage_1.getMetaImageField)(__assign(__assign({}, props), {
|
|
75
|
+
Field: function (props) { return (0, MetaImage_1.getMetaImageField)(__assign(__assign({}, props), { pluginConfig: pluginConfig })); },
|
|
76
76
|
},
|
|
77
77
|
},
|
|
78
78
|
}] : [], true), [
|
|
@@ -82,7 +82,7 @@ var seo = function (seoConfig) { return function (config) {
|
|
|
82
82
|
type: 'ui',
|
|
83
83
|
admin: {
|
|
84
84
|
components: {
|
|
85
|
-
Field: function (props) { return (0, Preview_1.getPreviewField)(__assign(__assign({}, props), {
|
|
85
|
+
Field: function (props) { return (0, Preview_1.getPreviewField)(__assign(__assign({}, props), { pluginConfig: pluginConfig })); },
|
|
86
86
|
},
|
|
87
87
|
},
|
|
88
88
|
},
|
|
@@ -90,33 +90,51 @@ var seo = function (seoConfig) { return function (config) {
|
|
|
90
90
|
}
|
|
91
91
|
];
|
|
92
92
|
return (__assign(__assign({}, config), { collections: ((_a = config.collections) === null || _a === void 0 ? void 0 : _a.map(function (collection) {
|
|
93
|
-
var _a, _b;
|
|
93
|
+
var _a, _b, _c, _d, _e;
|
|
94
94
|
var slug = collection.slug;
|
|
95
|
-
var isEnabled = (_a =
|
|
95
|
+
var isEnabled = (_a = pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.collections) === null || _a === void 0 ? void 0 : _a.includes(slug);
|
|
96
96
|
if (isEnabled) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
type: 'tabs',
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
97
|
+
if (pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.tabbedUI) {
|
|
98
|
+
var seoFieldsAsTabs = [{
|
|
99
|
+
type: 'tabs',
|
|
100
|
+
tabs: __spreadArray(__spreadArray([], ((_b = collection === null || collection === void 0 ? void 0 : collection.fields) === null || _b === void 0 ? void 0 : _b[0].type) === 'tabs'
|
|
101
|
+
? (_d = (_c = collection === null || collection === void 0 ? void 0 : collection.fields) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.tabs : [{
|
|
102
|
+
label: ((_e = collection === null || collection === void 0 ? void 0 : collection.labels) === null || _e === void 0 ? void 0 : _e.singular) || 'Content',
|
|
103
|
+
fields: __spreadArray([], ((collection === null || collection === void 0 ? void 0 : collection.fields) || []), true)
|
|
104
|
+
}], true), [
|
|
105
|
+
{
|
|
106
|
+
label: 'SEO',
|
|
107
|
+
fields: seoFields,
|
|
108
|
+
}
|
|
109
|
+
], false)
|
|
110
|
+
}];
|
|
111
|
+
return (__assign(__assign({}, collection), { fields: seoFieldsAsTabs }));
|
|
112
|
+
}
|
|
113
|
+
return (__assign(__assign({}, collection), { fields: __spreadArray(__spreadArray([], (collection === null || collection === void 0 ? void 0 : collection.fields) || [], true), seoFields, true) }));
|
|
105
114
|
}
|
|
106
115
|
return collection;
|
|
107
116
|
})) || [], globals: ((_b = config.globals) === null || _b === void 0 ? void 0 : _b.map(function (global) {
|
|
108
|
-
var _a;
|
|
117
|
+
var _a, _b, _c, _d;
|
|
109
118
|
var slug = global.slug;
|
|
110
|
-
var isEnabled = (_a =
|
|
119
|
+
var isEnabled = (_a = pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.globals) === null || _a === void 0 ? void 0 : _a.includes(slug);
|
|
111
120
|
if (isEnabled) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
type: 'tabs',
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
121
|
+
if (pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.tabbedUI) {
|
|
122
|
+
var seoFieldsAsTabs = [{
|
|
123
|
+
type: 'tabs',
|
|
124
|
+
tabs: __spreadArray(__spreadArray([], ((_b = global === null || global === void 0 ? void 0 : global.fields) === null || _b === void 0 ? void 0 : _b[0].type) === 'tabs'
|
|
125
|
+
? (_d = (_c = global === null || global === void 0 ? void 0 : global.fields) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.tabs : [{
|
|
126
|
+
label: (global === null || global === void 0 ? void 0 : global.label) || 'Content',
|
|
127
|
+
fields: __spreadArray([], ((global === null || global === void 0 ? void 0 : global.fields) || []), true)
|
|
128
|
+
}], true), [
|
|
129
|
+
{
|
|
130
|
+
label: 'SEO',
|
|
131
|
+
fields: seoFields,
|
|
132
|
+
}
|
|
133
|
+
], false)
|
|
134
|
+
}];
|
|
135
|
+
return (__assign(__assign({}, global), { fields: seoFieldsAsTabs }));
|
|
136
|
+
}
|
|
137
|
+
return (__assign(__assign({}, global), { fields: __spreadArray(__spreadArray([], (global === null || global === void 0 ? void 0 : global.fields) || [], true), seoFields, true) }));
|
|
120
138
|
}
|
|
121
139
|
return global;
|
|
122
140
|
})) || [] }));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,4DAAmE;AACnE,0CAAyC;AACzC,gDAAuD;AACvD,wCAA+C;AAC/C,gDAAuD;AAIvD,IAAM,GAAG,GAAG,UAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Field } from "payload/dist/fields/config/types";
|
|
2
|
-
export
|
|
2
|
+
export type PluginConfig = {
|
|
3
3
|
collections?: string[];
|
|
4
4
|
globals?: string[];
|
|
5
5
|
uploadsCollection?: string;
|
|
@@ -22,7 +22,7 @@ export declare type SEOConfig = {
|
|
|
22
22
|
locale?: string;
|
|
23
23
|
}) => string | Promise<string>;
|
|
24
24
|
};
|
|
25
|
-
export
|
|
25
|
+
export type Meta = {
|
|
26
26
|
title?: string;
|
|
27
27
|
description?: string;
|
|
28
28
|
keywords?: string;
|
package/dist/ui/Overview.js
CHANGED
|
@@ -31,7 +31,7 @@ var defaults_1 = require("../defaults");
|
|
|
31
31
|
var _a = defaults_1.defaults.title, minTitle = _a.minLength, maxTitle = _a.maxLength, _b = defaults_1.defaults.description, minDesc = _b.minLength, maxDesc = _b.maxLength;
|
|
32
32
|
var Overview = function () {
|
|
33
33
|
var _a = (0, forms_1.useForm)(), dispatchFields = _a.dispatchFields, getFields = _a.getFields;
|
|
34
|
-
var _b = (0, forms_1.
|
|
34
|
+
var _b = (0, forms_1.useAllFormFields)()[0], _c = _b["meta.title"], _d = _c === void 0 ? {} : _c, metaTitle = _d.value, _e = _b["meta.description"], _f = _e === void 0 ? {} : _e, metaDesc = _f.value, _g = _b["meta.image"], _h = _g === void 0 ? {} : _g, metaImage = _h.value;
|
|
35
35
|
var _j = (0, react_1.useState)(), titleIsValid = _j[0], setTitleIsValid = _j[1];
|
|
36
36
|
var _k = (0, react_1.useState)(), descIsValid = _k[0], setDescIsValid = _k[1];
|
|
37
37
|
var _l = (0, react_1.useState)(), imageIsValid = _l[0], setImageIsValid = _l[1];
|
|
@@ -41,7 +41,7 @@ var Overview = function () {
|
|
|
41
41
|
fieldsWithoutMeta['meta.title'].value = '';
|
|
42
42
|
fieldsWithoutMeta['meta.description'].value = '';
|
|
43
43
|
fieldsWithoutMeta['meta.image'].value = '';
|
|
44
|
-
dispatchFields(fieldsWithoutMeta);
|
|
44
|
+
// dispatchFields(fieldsWithoutMeta);
|
|
45
45
|
}, [
|
|
46
46
|
dispatchFields,
|
|
47
47
|
getFields,
|
package/dist/ui/Overview.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Overview.js","sourceRoot":"","sources":["../../src/ui/Overview.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"Overview.js","sourceRoot":"","sources":["../../src/ui/Overview.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA+C;AAC/C,kDAAqE;AAErE,6CAAgE;AAChE,wCAAuC;AAGrC,IAAA,KAQE,mBAAQ,MALT,EAFY,QAAQ,eAAA,EACR,QAAQ,eAAA,EAErB,KAIE,mBAAQ,YADT,EAFY,OAAO,eAAA,EACP,OAAO,eACnB,CACU;AAEN,IAAM,QAAQ,GAAa;IAC1B,IAAA,KAGF,IAAA,eAAO,GAAE,EAFX,cAAc,oBAAA,EACd,SAAS,eACE,CAAC;IAEP,IAAA,KAUF,IAAA,wBAAgB,GAAE,GAAtB,EATC,qBAEe,EAFf,qBAEI,EAAW,KAAA,EADN,SAAS,WAAA,EAElB,2BAEe,EAFf,qBAEI,EAAW,KAAA,EADN,QAAQ,WAAA,EAEjB,qBAEe,EAFf,qBAEI,EAAW,KAAA,EADN,SAAS,WAEnB,CAAuB;IAElB,IAAA,KAAkC,IAAA,gBAAQ,GAAuB,EAAhE,YAAY,QAAA,EAAE,eAAe,QAAmC,CAAC;IAClE,IAAA,KAAgC,IAAA,gBAAQ,GAAuB,EAA9D,WAAW,QAAA,EAAE,cAAc,QAAmC,CAAC;IAChE,IAAA,KAAkC,IAAA,gBAAQ,GAAuB,EAAhE,YAAY,QAAA,EAAE,eAAe,QAAmC,CAAC;IAExE,IAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC;QAC3B,IAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAM,iBAAiB,GAAG,MAAM,CAAC;QACjC,iBAAiB,CAAC,YAAY,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3C,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACjD,iBAAiB,CAAC,YAAY,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3C,qCAAqC;IACvC,CAAC,EAAE;QACD,cAAc;QACd,SAAS;KACV,CAAC,CAAC;IAEH,IAAA,iBAAS,EAAC;QACR,IAAI,OAAO,SAAS,KAAK,QAAQ;YAAE,eAAe,CAAC,SAAS,CAAC,MAAM,IAAI,QAAQ,IAAI,SAAS,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC;QACjH,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,IAAI,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC;QAC3G,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACtC,CAAC,EAAE;QACD,SAAS;QACT,QAAQ;QACR,SAAS;KACV,CAAC,CAAC;IAEH,IAAM,WAAW,GAAG;QAClB,YAAY;QACZ,WAAW;QACX,YAAY;KACb,CAAC;IAEF,IAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAE1D,OAAO,CACL,uCACE,KAAK,EAAE;YACL,YAAY,EAAE,MAAM;SACrB;QAED,2CACG,UAAG,cAAc,cAAI,WAAW,CAAC,MAAM,wBAAqB,CACzD,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AA/DW,QAAA,QAAQ,YA+DnB"}
|
package/dist/ui/Preview.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Field } from 'payload/dist/admin/components/forms/Form/types';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { PluginConfig } from '../types';
|
|
4
|
+
type PreviewFieldWithProps = Field & {
|
|
5
|
+
pluginConfig: PluginConfig;
|
|
6
6
|
};
|
|
7
7
|
export declare const Preview: React.FC<PreviewFieldWithProps | {}>;
|
|
8
8
|
export declare const getPreviewField: (props: any) => JSX.Element;
|
package/dist/ui/Preview.js
CHANGED
|
@@ -48,7 +48,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
48
48
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
49
49
|
function step(op) {
|
|
50
50
|
if (f) throw new TypeError("Generator is already executing.");
|
|
51
|
-
while (_) try {
|
|
51
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
52
52
|
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;
|
|
53
53
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
54
54
|
switch (op[0]) {
|
|
@@ -74,7 +74,7 @@ exports.getPreviewField = exports.Preview = void 0;
|
|
|
74
74
|
var forms_1 = require("payload/components/forms");
|
|
75
75
|
var react_1 = __importStar(require("react"));
|
|
76
76
|
var Preview = function (props) {
|
|
77
|
-
var generateURL = (props || {}).
|
|
77
|
+
var generateURL = (props || {}).pluginConfig.generateURL; // TODO: this typing is temporary until payload types are updated for custom field props;
|
|
78
78
|
var fields = (0, forms_1.useWatchForm)().fields;
|
|
79
79
|
var _a = fields["meta.title"], _b = _a === void 0 ? {} : _a, metaTitle = _b.value, _c = fields["meta.description"], _d = _c === void 0 ? {} : _c, metaDescription = _d.value;
|
|
80
80
|
var _e = (0, react_1.useState)(), href = _e[0], setHref = _e[1];
|
package/dist/ui/Preview.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Preview.js","sourceRoot":"","sources":["../../src/ui/Preview.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAwD;AACxD,6CAAmD;AAO5C,IAAM,OAAO,GAAyC,UAAC,KAAK;IAG7D,IAAA,WAAW,GAEX,CAAA,KAA8B,IAAI,EAAE,CAAA,
|
|
1
|
+
{"version":3,"file":"Preview.js","sourceRoot":"","sources":["../../src/ui/Preview.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAwD;AACxD,6CAAmD;AAO5C,IAAM,OAAO,GAAyC,UAAC,KAAK;IAG7D,IAAA,WAAW,GAEX,CAAA,KAA8B,IAAI,EAAE,CAAA,yBAFzB,CAE0B,CAAC,yFAAyF;IAE3H,IAAA,MAAM,GAAK,IAAA,oBAAY,GAAE,OAAnB,CAAoB;IAGhC,IAAA,KAME,MAAM,cAJO,EAFf,qBAEI,EAAW,KAAA,EADN,SAAS,WAAA,EAElB,KAGE,MAAM,oBADO,EAFf,qBAEI,EAAW,KAAA,EADN,eAAe,WACT,CACN;IAEL,IAAA,KAAkB,IAAA,gBAAQ,GAAU,EAAnC,IAAI,QAAA,EAAE,OAAO,QAAsB,CAAC;IAE3C,IAAA,iBAAS,EAAC;QACR,IAAM,OAAO,GAAG;;;;;6BACV,CAAA,OAAO,WAAW,KAAK,UAAU,IAAI,CAAC,IAAI,CAAA,EAA1C,wBAA0C;wBAC5B,qBAAM,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,QAAA,EAAE,EAAE,CAAC,EAAA;;wBAAhD,OAAO,GAAG,SAAsC;wBACtD,OAAO,CAAC,OAAO,CAAC,CAAC;;;;;aAEpB,CAAA;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE;QACD,WAAW;QACX,MAAM;KACP,CAAC,CAAC;IAEH,OAAO,CACL;QACE,qDAEM;QACN,uCACE,KAAK,EAAE;gBACL,YAAY,EAAE,KAAK;gBACnB,KAAK,EAAE,SAAS;aACjB,4EAGG;QACN,uCACE,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM;gBACf,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,iCAAiC;gBAC5C,aAAa,EAAE,MAAM;gBACrB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,MAAM;gBACb,UAAU,EAAE,2BAA2B;aACxC;YAED;gBACE,qCACE,IAAI,EAAE,IAAI,EACV,KAAK,EAAE;wBACL,cAAc,EAAE,MAAM;qBACvB,IAEA,IAAI,IAAI,aAAa,CACpB,CACA;YACN,sCACE,KAAK,EAAE;oBACL,MAAM,EAAE,CAAC;iBACV;gBAED,qCACE,IAAI,EAAC,GAAG,EACR,KAAK,EAAE;wBACL,cAAc,EAAE,MAAM;qBACvB,IAEA,SAAmB,CAClB,CACD;YACL,qCACE,KAAK,EAAE;oBACL,MAAM,EAAE,CAAC;iBACV,IAEA,eAAyB,CACxB,CACA,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AA3FW,QAAA,OAAO,WA2FlB;AAEK,IAAM,eAAe,GAAG,UAAC,KAAU,IAAK,OAAA,CAC7C,8BAAC,eAAO,eAAK,KAAK,EAAI,CACvB,EAF8C,CAE9C,CAAA;AAFY,QAAA,eAAe,mBAE3B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/plugin-seo",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"homepage:": "https://payloadcms.com",
|
|
5
5
|
"repository": "git@github.com:payloadcms/plugin-seo.git",
|
|
6
6
|
"description": "SEO plugin for Payload CMS",
|
|
@@ -26,8 +26,6 @@
|
|
|
26
26
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@types/react": "^18.0.8",
|
|
30
|
-
"@types/react-dom": "^18.0.3",
|
|
31
29
|
"payload": "^1.0.9",
|
|
32
30
|
"react": "^18.0.0",
|
|
33
31
|
"typescript": "^4.5.5"
|