@payload-onpage/plugin 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/access.d.ts +7 -4
  2. package/dist/access.d.ts.map +1 -1
  3. package/dist/access.js +23 -20
  4. package/dist/access.js.map +1 -1
  5. package/dist/admin/OnPageAdminControls.d.ts +3 -2
  6. package/dist/admin/OnPageAdminControls.d.ts.map +1 -1
  7. package/dist/admin/OnPageAdminControls.js +12 -8
  8. package/dist/admin/OnPageAdminControls.js.map +1 -1
  9. package/dist/endpoints.d.ts +22 -6
  10. package/dist/endpoints.d.ts.map +1 -1
  11. package/dist/endpoints.js +87 -80
  12. package/dist/endpoints.js.map +1 -1
  13. package/dist/hooks.d.ts +11 -5
  14. package/dist/hooks.d.ts.map +1 -1
  15. package/dist/hooks.js +2 -2
  16. package/dist/hooks.js.map +1 -1
  17. package/dist/http.d.ts +18 -4
  18. package/dist/http.d.ts.map +1 -1
  19. package/dist/http.js +30 -16
  20. package/dist/http.js.map +1 -1
  21. package/dist/index.d.ts +2 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +61 -50
  24. package/dist/index.js.map +1 -1
  25. package/dist/options.d.ts +22 -11
  26. package/dist/options.d.ts.map +1 -1
  27. package/dist/options.js +11 -3
  28. package/dist/options.js.map +1 -1
  29. package/dist/paths.d.ts +2 -2
  30. package/dist/paths.d.ts.map +1 -1
  31. package/dist/paths.js +11 -24
  32. package/dist/paths.js.map +1 -1
  33. package/dist/schema.d.ts +6 -4
  34. package/dist/schema.d.ts.map +1 -1
  35. package/dist/schema.js +115 -62
  36. package/dist/schema.js.map +1 -1
  37. package/dist/translations.d.ts +12 -1
  38. package/dist/translations.d.ts.map +1 -1
  39. package/dist/translations.js +10 -9
  40. package/dist/translations.js.map +1 -1
  41. package/package.json +2 -2
  42. package/src/access.ts +26 -19
  43. package/src/admin/OnPageAdminControls.tsx +16 -16
  44. package/src/endpoints.ts +105 -98
  45. package/src/hooks.ts +14 -5
  46. package/src/http.ts +51 -15
  47. package/src/index.ts +77 -64
  48. package/src/options.ts +29 -17
  49. package/src/paths.ts +14 -27
  50. package/src/schema.ts +137 -79
  51. package/src/translations.ts +17 -11
package/dist/schema.d.ts CHANGED
@@ -10,17 +10,19 @@ type I18nLike = Parameters<typeof getTranslation>[1];
10
10
  type Permissions = SanitizedFieldsPermissions | undefined;
11
11
  export interface SerializeContext {
12
12
  /** Translates labels into the admin language. Without it, plain-string labels or the field name are used. */
13
- i18n?: I18nLike;
13
+ i18n?: I18nLike | undefined;
14
14
  /** Global blocks (`config.blocks`), to resolve `blockReferences`. */
15
- blocks?: Block[];
15
+ blocks?: Block[] | undefined;
16
16
  /** Field-level permissions: fields the user can't update are left out. */
17
- permissions?: Permissions;
17
+ permissions?: Permissions | undefined;
18
18
  /** Collects function defaults to evaluate for this request. */
19
19
  defaults?: {
20
20
  req: PayloadRequest;
21
21
  pending: Promise<void>[];
22
- };
22
+ } | undefined;
23
23
  }
24
+ /** A config label (string, translations or function) in the request's language, else `fallback`. */
25
+ export declare const label: (value: unknown, fallback: string, ctx: Pick<SerializeContext, "i18n">) => string;
24
26
  /**
25
27
  * Serialize Payload field configs into the editor schema. Presentational
26
28
  * containers (row, collapsible, unnamed group/tab) are flattened into their
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAe,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAA;AAsCvF,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;AAEpD,KAAK,WAAW,GAAG,0BAA0B,GAAG,SAAS,CAAA;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,6GAA6G;IAC7G,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,qEAAqE;IACrE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;IAChB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE;QAAE,GAAG,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;KAAE,CAAA;CAC7D;AAyDD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,EAC3B,GAAG,GAAE,gBAAqB,GACzB,WAAW,EAAE,CAgHf;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,IAAI,cAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,CAS5F;AAED,YAAY,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAe,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAA;AAkCvF,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;AAEpD,KAAK,WAAW,GAAG,0BAA0B,GAAG,SAAS,CAAA;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,6GAA6G;IAC7G,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC3B,qEAAqE;IACrE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,SAAS,CAAA;IAC5B,0EAA0E;IAC1E,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE;QAAE,GAAG,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;KAAE,GAAG,SAAS,CAAA;CACzE;AAED,oGAAoG;AACpG,eAAO,MAAM,KAAK,GAChB,OAAO,OAAO,EACd,UAAU,MAAM,EAChB,KAAK,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAClC,MAUF,CAAA;AA6CD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,EAC3B,GAAG,GAAE,gBAAqB,GACzB,WAAW,EAAE,CA0Kf;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,IAAI,cAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,CAQ5F;AAED,YAAY,EAAE,cAAc,EAAE,CAAA"}
package/dist/schema.js CHANGED
@@ -10,7 +10,10 @@ import { fieldAffectsData, fieldIsHiddenOrDisabled, fieldIsVirtual, tabHasName,
10
10
  const SYSTEM_FIELDS = new Set(['id', 'createdAt', 'updatedAt', '_status', 'deletedAt']);
11
11
  /** Data fields with no meaningful on-page value. */
12
12
  const SKIP_TYPES = new Set(['join', 'ui']);
13
- const label = (value, fallback, ctx) => {
13
+ /** `{ key: n }` when n is a number, else nothing (for spreading optional limits). */
14
+ const num = (key, n) => typeof n === 'number' ? { [key]: n } : {};
15
+ /** A config label (string, translations or function) in the request's language, else `fallback`. */
16
+ export const label = (value, fallback, ctx) => {
14
17
  if (value == null || value === false)
15
18
  return fallback;
16
19
  if (typeof value === 'string')
@@ -116,77 +119,127 @@ export function serializeFields(fields, ctx = {}) {
116
119
  const perms = childPermissions(ctx.permissions, f.name);
117
120
  if (perms === false)
118
121
  continue;
119
- // Field is a large union; read the optional, type-specific properties through one loose view.
120
- const anyField = f;
121
- const field = {
122
+ const common = f;
123
+ const base = {
122
124
  name: f.name,
123
- type: f.type,
124
- label: label(anyField.label, toWords(f.name), ctx),
125
+ label: label(common.label, toWords(f.name), ctx),
126
+ ...(common.localized ? { localized: true } : {}),
127
+ ...(common.required ? { required: true } : {}),
125
128
  };
126
- if (anyField.localized)
127
- field.localized = true;
128
- if (anyField.required)
129
- field.required = true;
130
- if (anyField.hasMany)
131
- field.hasMany = true;
132
- if (typeof anyField.defaultValue === 'function') {
129
+ const description = label(common.admin?.description, '', ctx);
130
+ const editor = common.admin?.custom?.onpage?.editor ?? common.custom?.onpage?.editor;
131
+ const childCtx = { ...ctx, permissions: perms };
132
+ const rows = (labels, min, max) => {
133
+ const fallback = formatLabels(f.name);
134
+ return {
135
+ labels: {
136
+ singular: label(labels?.singular, fallback.singular, ctx),
137
+ plural: label(labels?.plural, fallback.plural, ctx),
138
+ },
139
+ ...num('minRows', min),
140
+ ...num('maxRows', max),
141
+ };
142
+ };
143
+ let field;
144
+ switch (f.type) {
145
+ case 'text':
146
+ case 'textarea':
147
+ case 'email':
148
+ case 'code':
149
+ case 'json':
150
+ case 'checkbox':
151
+ case 'point':
152
+ case 'richText':
153
+ field = { ...base, type: f.type, ...('hasMany' in f && f.hasMany ? { hasMany: true } : {}) };
154
+ break;
155
+ case 'number':
156
+ field = {
157
+ ...base,
158
+ type: 'number',
159
+ ...(f.hasMany ? { hasMany: true } : {}),
160
+ ...num('min', f.min),
161
+ ...num('max', f.max),
162
+ };
163
+ break;
164
+ case 'date': {
165
+ const picker = f.admin?.date?.pickerAppearance;
166
+ field = {
167
+ ...base,
168
+ type: 'date',
169
+ ...(typeof picker === 'string' ? { pickerAppearance: picker } : {}),
170
+ };
171
+ break;
172
+ }
173
+ case 'select':
174
+ case 'radio':
175
+ field = {
176
+ ...base,
177
+ type: f.type,
178
+ options: f.options.map((o) => typeof o === 'string'
179
+ ? { label: o, value: o }
180
+ : { label: label(o.label, String(o.value), ctx), value: String(o.value) }),
181
+ ...('hasMany' in f && f.hasMany ? { hasMany: true } : {}),
182
+ };
183
+ break;
184
+ case 'relationship':
185
+ case 'upload':
186
+ field = {
187
+ ...base,
188
+ type: f.type,
189
+ relationTo: f.relationTo,
190
+ ...(f.hasMany ? { hasMany: true } : {}),
191
+ };
192
+ break;
193
+ case 'group':
194
+ field = { ...base, type: 'group', fields: serializeFields(f.fields, childCtx) };
195
+ break;
196
+ case 'array':
197
+ field = {
198
+ ...base,
199
+ type: 'array',
200
+ fields: serializeFields(f.fields, childCtx),
201
+ ...rows(f.labels, f.minRows, f.maxRows),
202
+ };
203
+ break;
204
+ case 'blocks': {
205
+ const refs = (f.blockReferences ?? [])
206
+ .map((b) => (typeof b === 'string' ? ctx.blocks?.find((x) => x.slug === b) : b))
207
+ .filter((b) => !!b);
208
+ field = {
209
+ ...base,
210
+ type: 'blocks',
211
+ blocks: [...f.blocks, ...refs].map((b) => serializeBlock(b, blockPermissions(ctx.permissions, f.name, b.slug), ctx)),
212
+ ...rows(f.labels, f.minRows, f.maxRows),
213
+ };
214
+ break;
215
+ }
216
+ default:
217
+ // join/ui are skipped above; anything newer than this plugin isn't editable on the page.
218
+ continue;
219
+ }
220
+ if (description)
221
+ field.description = description;
222
+ if (typeof editor === 'string')
223
+ field.editor = editor;
224
+ if (typeof common.defaultValue === 'function') {
133
225
  if (ctx.defaults) {
134
226
  const { req, pending } = ctx.defaults;
227
+ const target = field;
135
228
  pending.push(getDefaultValue({
136
- defaultValue: anyField.defaultValue,
229
+ defaultValue: common.defaultValue,
137
230
  locale: req.locale ?? undefined,
138
231
  req,
139
232
  user: req.user,
140
233
  })
141
234
  .then((v) => {
142
235
  if (isJsonSafe(v))
143
- field.defaultValue = v;
236
+ target.defaultValue = v;
144
237
  })
145
238
  .catch(() => undefined));
146
239
  }
147
240
  }
148
- else if (isJsonSafe(anyField.defaultValue)) {
149
- field.defaultValue = anyField.defaultValue;
150
- }
151
- const description = label(anyField.admin?.description, '', ctx);
152
- if (description)
153
- field.description = description;
154
- if (Array.isArray(anyField.options)) {
155
- field.options = anyField.options.map((o) => typeof o === 'string'
156
- ? { label: o, value: o }
157
- : {
158
- label: label(o.label, String(o.value), ctx),
159
- value: String(o.value),
160
- });
161
- }
162
- if (anyField.relationTo)
163
- field.relationTo = anyField.relationTo;
164
- for (const k of ['minRows', 'maxRows', 'min', 'max']) {
165
- const n = anyField[k];
166
- if (typeof n === 'number')
167
- field[k] = n;
168
- }
169
- const editor = anyField.admin?.custom?.onpage?.editor ?? anyField.custom?.onpage?.editor;
170
- if (typeof editor === 'string')
171
- field.editor = editor;
172
- const picker = anyField.admin?.date?.pickerAppearance;
173
- if (typeof picker === 'string')
174
- field.pickerAppearance = picker;
175
- const childCtx = { ...ctx, permissions: perms };
176
- if (f.type === 'group' || f.type === 'array')
177
- field.fields = serializeFields(f.fields, childCtx);
178
- if (f.type === 'array') {
179
- const fallback = formatLabels(f.name);
180
- field.labels = {
181
- singular: label(anyField.labels?.singular, fallback.singular, ctx),
182
- plural: label(anyField.labels?.plural, fallback.plural, ctx),
183
- };
184
- }
185
- if (f.type === 'blocks') {
186
- const refs = (f.blockReferences ?? [])
187
- .map((b) => (typeof b === 'string' ? ctx.blocks?.find((x) => x.slug === b) : b))
188
- .filter((b) => !!b);
189
- field.blocks = [...(f.blocks ?? []), ...refs].map((b) => serializeBlock(b, blockPermissions(ctx.permissions, f.name, b.slug), ctx));
241
+ else if (isJsonSafe(common.defaultValue)) {
242
+ field.defaultValue = common.defaultValue;
190
243
  }
191
244
  out.push(field);
192
245
  }
@@ -195,14 +248,14 @@ export function serializeFields(fields, ctx = {}) {
195
248
  /** Every collection a relationship or upload field in `fields` points to. */
196
249
  export function relationTargets(fields, into = new Set()) {
197
250
  for (const f of fields) {
198
- if ((f.type === 'relationship' || f.type === 'upload') && f.relationTo) {
251
+ if (f.type === 'relationship' || f.type === 'upload')
199
252
  for (const slug of Array.isArray(f.relationTo) ? f.relationTo : [f.relationTo])
200
253
  into.add(slug);
201
- }
202
- if (f.fields)
254
+ if (f.type === 'group' || f.type === 'array')
203
255
  relationTargets(f.fields, into);
204
- for (const b of f.blocks ?? [])
205
- relationTargets(b.fields, into);
256
+ if (f.type === 'blocks')
257
+ for (const b of f.blocks)
258
+ relationTargets(b.fields, into);
206
259
  }
207
260
  return into;
208
261
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,18 @@
1
+ import type { NestedKeysStripped } from '@payloadcms/translations';
1
2
  /**
2
3
  * Admin UI strings, registered with Payload's i18n under the `onpage` namespace
3
4
  * (so the admin language applies). Add or override languages with
4
5
  * `i18n.translations` in your Payload config.
5
6
  */
7
+ declare const en: {
8
+ onpage: {
9
+ editOnPage: string;
10
+ copyPreviewLink: string;
11
+ copyPreviewLinkHint: string;
12
+ linkCopied: string;
13
+ linkFailed: string;
14
+ };
15
+ };
6
16
  export declare const translations: {
7
17
  en: {
8
18
  onpage: {
@@ -41,5 +51,6 @@ export declare const translations: {
41
51
  };
42
52
  };
43
53
  };
44
- export type OnPageTranslationKey = `onpage:${keyof (typeof translations)['en']['onpage']}`;
54
+ export type OnPageTranslationKey = NestedKeysStripped<typeof en>;
55
+ export {};
45
56
  //# sourceMappingURL=translations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../src/translations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCxB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,UAAU,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAA"}
1
+ {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../src/translations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAClE;;;;GAIG;AACH,QAAA,MAAM,EAAE;;;;;;;;CAQP,CAAA;AAKD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BQ,CAAA;AAEjC,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAA"}
@@ -3,16 +3,17 @@
3
3
  * (so the admin language applies). Add or override languages with
4
4
  * `i18n.translations` in your Payload config.
5
5
  */
6
- export const translations = {
7
- en: {
8
- onpage: {
9
- editOnPage: 'Edit on page',
10
- copyPreviewLink: 'Copy preview link',
11
- copyPreviewLinkHint: 'Copy a read-only link to this draft',
12
- linkCopied: 'Preview link copied — valid until {{date}}',
13
- linkFailed: "Couldn't create a preview link: {{message}}",
14
- },
6
+ const en = {
7
+ onpage: {
8
+ editOnPage: 'Edit on page',
9
+ copyPreviewLink: 'Copy preview link',
10
+ copyPreviewLinkHint: 'Copy a read-only link to this draft',
11
+ linkCopied: 'Preview link copied — valid until {{date}}',
12
+ linkFailed: "Couldn't create a preview link: {{message}}",
15
13
  },
14
+ };
15
+ export const translations = {
16
+ en,
16
17
  es: {
17
18
  onpage: {
18
19
  editOnPage: 'Editar en la página',
@@ -1 +1 @@
1
- {"version":3,"file":"translations.js","sourceRoot":"","sources":["../src/translations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE;QACF,MAAM,EAAE;YACN,UAAU,EAAE,cAAc;YAC1B,eAAe,EAAE,mBAAmB;YACpC,mBAAmB,EAAE,qCAAqC;YAC1D,UAAU,EAAE,4CAA4C;YACxD,UAAU,EAAE,6CAA6C;SAC1D;KACF;IACD,EAAE,EAAE;QACF,MAAM,EAAE;YACN,UAAU,EAAE,qBAAqB;YACjC,eAAe,EAAE,+BAA+B;YAChD,mBAAmB,EAAE,kDAAkD;YACvE,UAAU,EAAE,uCAAuC;YACnD,UAAU,EAAE,yCAAyC;SACtD;KACF;IACD,EAAE,EAAE;QACF,MAAM,EAAE;YACN,UAAU,EAAE,sBAAsB;YAClC,eAAe,EAAE,yBAAyB;YAC1C,mBAAmB,EAAE,mDAAmD;YACxE,UAAU,EAAE,uCAAuC;YACnD,UAAU,EAAE,2CAA2C;SACxD;KACF;IACD,EAAE,EAAE;QACF,MAAM,EAAE;YACN,UAAU,EAAE,0BAA0B;YACtC,eAAe,EAAE,uBAAuB;YACxC,mBAAmB,EAAE,0DAA0D;YAC/E,UAAU,EAAE,4CAA4C;YACxD,UAAU,EAAE,wDAAwD;SACrE;KACF;CACF,CAAA"}
1
+ {"version":3,"file":"translations.js","sourceRoot":"","sources":["../src/translations.ts"],"names":[],"mappings":"AACA;;;;GAIG;AACH,MAAM,EAAE,GAAG;IACT,MAAM,EAAE;QACN,UAAU,EAAE,cAAc;QAC1B,eAAe,EAAE,mBAAmB;QACpC,mBAAmB,EAAE,qCAAqC;QAC1D,UAAU,EAAE,4CAA4C;QACxD,UAAU,EAAE,6CAA6C;KAC1D;CACF,CAAA;AAKD,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE;IACF,EAAE,EAAE;QACF,MAAM,EAAE;YACN,UAAU,EAAE,qBAAqB;YACjC,eAAe,EAAE,+BAA+B;YAChD,mBAAmB,EAAE,kDAAkD;YACvE,UAAU,EAAE,uCAAuC;YACnD,UAAU,EAAE,yCAAyC;SACtD;KACF;IACD,EAAE,EAAE;QACF,MAAM,EAAE;YACN,UAAU,EAAE,sBAAsB;YAClC,eAAe,EAAE,yBAAyB;YAC1C,mBAAmB,EAAE,mDAAmD;YACxE,UAAU,EAAE,uCAAuC;YACnD,UAAU,EAAE,2CAA2C;SACxD;KACF;IACD,EAAE,EAAE;QACF,MAAM,EAAE;YACN,UAAU,EAAE,0BAA0B;YACtC,eAAe,EAAE,uBAAuB;YACxC,mBAAmB,EAAE,0DAA0D;YAC/E,UAAU,EAAE,4CAA4C;YACxD,UAAU,EAAE,wDAAwD;SACrE;KACF;CAC8B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payload-onpage/plugin",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "payload-onpage for Payload CMS: on-page editing endpoints, auto-mapping, preview links and admin controls.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -53,7 +53,7 @@
53
53
  "provenance": true
54
54
  },
55
55
  "dependencies": {
56
- "@payload-onpage/core": "0.1.0"
56
+ "@payload-onpage/core": "0.3.0"
57
57
  },
58
58
  "peerDependencies": {
59
59
  "payload": "^3.90.2",
package/src/access.ts CHANGED
@@ -12,6 +12,7 @@ import {
12
12
  type SanitizedCollectionPermission,
13
13
  type SanitizedGlobalPermission,
14
14
  } from 'payload'
15
+ import { entityConfig } from './http.ts'
15
16
  import type { OnPageOptions } from './options.ts'
16
17
 
17
18
  /** Signed in as an admin user (or allowed by the `access` option). */
@@ -24,22 +25,34 @@ export async function canUseOnPage(req: PayloadRequest, options: OnPageOptions):
24
25
  /** Payload's sanitized permissions for one document (or the collection, without an id). */
25
26
  export async function documentPermissions(
26
27
  req: PayloadRequest,
27
- ref: DocRef | { kind: 'collection'; slug: string; id?: undefined },
28
+ ref: { kind: DocRef['kind']; slug: string; id?: string | number | undefined },
28
29
  ): Promise<SanitizedCollectionPermission | SanitizedGlobalPermission | null> {
29
30
  try {
30
31
  if (ref.kind === 'global') {
31
- const globalConfig = req.payload.globals.config.find((g) => g.slug === ref.slug)
32
+ const globalConfig = entityConfig(req, 'global', ref.slug)
32
33
  return globalConfig ? await docAccessOperationGlobal({ globalConfig, req }) : null
33
34
  }
34
35
  const collection = req.payload.collections[ref.slug]
35
36
  if (!collection) return null
36
- return await docAccessOperation({ collection, id: ref.id, req })
37
- } catch {
37
+ return await docAccessOperation({
38
+ collection,
39
+ ...(ref.id !== undefined ? { id: ref.id } : {}),
40
+ req,
41
+ })
42
+ } catch (err) {
43
+ // An access function that throws denies, as in Payload, but shouldn't fail silently.
44
+ req.payload.logger.error({
45
+ err,
46
+ msg: `payload-onpage: access check failed for ${ref.kind} "${ref.slug}"`,
47
+ })
38
48
  return null
39
49
  }
40
50
  }
41
51
 
42
- /** May this user edit this document on the page? */
52
+ /**
53
+ * May this user edit this document on the page? With an id, Payload evaluates a
54
+ * row-level rule (a `where`) against that document itself, so its answer is final.
55
+ */
43
56
  export async function canEditDocument(
44
57
  req: PayloadRequest,
45
58
  ref: DocRef,
@@ -48,18 +61,12 @@ export async function canEditDocument(
48
61
  if (!req.user) return false
49
62
  if (options.access) return Boolean(await options.access({ req, ref }))
50
63
  if (!(await canUseOnPage(req, options))) return false
51
- const perms = await documentPermissions(req, ref)
52
- const update = perms?.update as
53
- true | { permission?: boolean; where?: Record<string, unknown> } | undefined
54
- if (update === true) return true
55
- if (!update?.permission) return false
56
- // A row-level rule comes back as a query: check that this document matches it.
57
- if (!update.where || ref.kind !== 'collection') return !update.where
58
- const { totalDocs } = await req.payload.count({
59
- collection: ref.slug as never,
60
- where: { and: [{ id: { equals: ref.id } }, update.where] } as never,
61
- overrideAccess: true,
62
- req,
63
- })
64
- return totalDocs > 0
64
+ const update: unknown = (await documentPermissions(req, ref))?.update
65
+ return (
66
+ update === true ||
67
+ (typeof update === 'object' &&
68
+ update !== null &&
69
+ 'permission' in update &&
70
+ update.permission === true)
71
+ )
65
72
  }
@@ -14,14 +14,16 @@ import {
14
14
  useLocale,
15
15
  useTranslation,
16
16
  } from '@payloadcms/ui'
17
- import type { OnPageTranslationKey } from '../translations.ts'
17
+ import { errorText, ROUTES, type DocRef } from '@payload-onpage/core'
18
+ import { formatAdminURL } from 'payload/shared'
18
19
  import { useMemo, useState } from 'react'
20
+ import type { OnPageTranslationKey, translations } from '../translations.ts'
19
21
 
20
22
  export interface OnPageAdminControlsProps {
21
- kind: 'collection' | 'global'
23
+ kind: DocRef['kind']
22
24
  slug: string
23
25
  /** Plugin endpoint prefix (`routePrefix`). */
24
- prefix: string
26
+ prefix: `/${string}`
25
27
  }
26
28
 
27
29
  /**
@@ -42,16 +44,16 @@ export function OnPageAdminControls({ kind, slug, prefix }: OnPageAdminControlsP
42
44
  const { id, hasSavePermission } = useDocumentInfo()
43
45
  const { config } = useConfig()
44
46
  const locale = useLocale()
45
- const { t: translate } = useTranslation()
46
- const t = (key: OnPageTranslationKey, vars?: Record<string, string>) =>
47
- (translate as (k: string, v?: Record<string, string>) => string)(key, vars)
47
+ const { t } = useTranslation<(typeof translations)['en'], OnPageTranslationKey>()
48
48
  const [busy, setBusy] = useState(false)
49
- const apiBase = `${config.serverURL ?? ''}${config.routes.api}`
49
+ // Built like Payload's own API URLs: routes.api, serverURL, Next's basePath.
50
+ const apiBase = formatAdminURL({ apiRoute: config.routes.api, serverURL: config.serverURL })
50
51
  const dataSource = useMemo(() => payloadRest({ apiBase, prefix }), [apiBase, prefix])
51
52
 
52
- if ((kind === 'collection' && !id) || hasSavePermission === false) return null
53
-
54
- const ref = kind === 'global' ? ({ kind, slug } as const) : ({ kind, slug, id: id! } as const)
53
+ if (hasSavePermission === false) return null
54
+ const ref: DocRef | null =
55
+ kind === 'global' ? { kind, slug } : id != null ? { kind, slug, id } : null
56
+ if (!ref) return null
55
57
  const params = new URLSearchParams({ kind, slug, mode: 'edit' })
56
58
  if (kind === 'collection') params.set('id', String(id))
57
59
  if (locale?.code) params.set('locale', locale.code)
@@ -59,13 +61,11 @@ export function OnPageAdminControls({ kind, slug, prefix }: OnPageAdminControlsP
59
61
  const copyLink = async () => {
60
62
  setBusy(true)
61
63
  try {
62
- const link = await dataSource.createPreviewLink!(ref, { locale: locale?.code })
64
+ const link = await dataSource.createPreviewLink(ref, { locale: locale?.code })
63
65
  await navigator.clipboard.writeText(link.url)
64
- toast.success(
65
- `Preview link copied — valid until ${new Date(link.expiresAt).toLocaleString()}`,
66
- )
66
+ toast.success(t('onpage:linkCopied', { date: new Date(link.expiresAt).toLocaleString() }))
67
67
  } catch (e) {
68
- toast.error(t('onpage:linkFailed', { message: (e as Error).message }))
68
+ toast.error(t('onpage:linkFailed', { message: errorText(e) }))
69
69
  } finally {
70
70
  setBusy(false)
71
71
  }
@@ -77,7 +77,7 @@ export function OnPageAdminControls({ kind, slug, prefix }: OnPageAdminControlsP
77
77
  <Button
78
78
  buttonStyle="secondary"
79
79
  size="medium"
80
- onClick={() => postInNewTab(`${apiBase}${prefix}/enter?${params}`)}
80
+ onClick={() => postInNewTab(`${apiBase}${prefix}${ROUTES.enter}?${params}`)}
81
81
  extraButtonProps={{ style, 'data-testid': 'onpage-edit-on-page' }}
82
82
  >
83
83
  {t('onpage:editOnPage')}