@sittari/payload-templates 0.3.1 → 0.4.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.
package/README.md CHANGED
@@ -50,10 +50,66 @@ The generated document stores editable fields under `data_<name>`—for example,
50
50
 
51
51
  ## Template-backed fields
52
52
 
53
- `templateField({ name, template })` inserts a registered template's fields as a
54
- group anywhere Payload fields are accepted, including collections, globals,
55
- tabs, arrays, and blocks. The plugin throws during configuration when the
56
- referenced template is not registered.
53
+ ### `templateField()`
54
+
55
+ ```ts
56
+ templateField(config: TemplateFieldConfig): GroupField
57
+ ```
58
+
59
+ Creates a named Payload group whose fields and fallback values come from a
60
+ template registered with `templatesPlugin()`. It can be used anywhere Payload
61
+ accepts fields, including collections, globals, tabs, arrays, and blocks.
62
+
63
+ ```ts
64
+ import { templateField } from '@sittari/payload-templates'
65
+ import type { CollectionConfig } from 'payload'
66
+
67
+ export const Pages: CollectionConfig = {
68
+ slug: 'pages',
69
+ fields: [
70
+ templateField({
71
+ name: 'hero',
72
+ template: 'defaultHero',
73
+ label: {
74
+ en: 'Hero overrides',
75
+ uk: 'Перевизначення Hero',
76
+ },
77
+ admin: {
78
+ hideGutter: true,
79
+ },
80
+ }),
81
+ ],
82
+ }
83
+ ```
84
+
85
+ | Option | Type | Required | Description |
86
+ | --- | --- | --- | --- |
87
+ | `name` | `string` | Yes | Field name used in the consuming document. Its stored overrides live at this property. |
88
+ | `template` | `string` | Yes | `name` of a template registered with `templatesPlugin()`. Unknown names throw during configuration. |
89
+ | `label` | `GroupField['label']` | No | Payload group label. Static strings, localized label maps, and label functions are supported. |
90
+ | `admin` | `GroupField['admin']` | No | Payload Admin settings for the generated group. The plugin preserves these settings and installs its template field renderer. |
91
+
92
+ The function initially returns a marked group definition. During plugin
93
+ configuration, `templatesPlugin()` replaces its empty field list with an
94
+ optionalized copy of the registered template fields and adds the fallback hook.
95
+ Consequently, `templateField()` must be used in the same Payload config as an
96
+ enabled `templatesPlugin()` call containing the referenced template.
97
+
98
+ The consuming document stores only local overrides:
99
+
100
+ ```ts
101
+ // Managed template: data_defaultHero
102
+ {
103
+ heading: 'Build something useful',
104
+ summary: 'Default summary',
105
+ }
106
+
107
+ // Page document: hero
108
+ {
109
+ heading: 'A page-specific heading',
110
+ // Empty summary inherits "Default summary".
111
+ }
112
+ ```
57
113
 
58
114
  Fields copied into the consuming group are optional, even when the managed
59
115
  template requires them. On read, empty local values inherit from the managed
@@ -67,9 +123,10 @@ template:
67
123
 
68
124
  Inheritance is read-time only. Fallback values are not written into the
69
125
  consuming document, so later edits to the managed template are reflected on the
70
- next API read. Admin edit forms receive the raw stored overrides, so an empty
71
- field remains empty instead of looking like a persisted template value. The
72
- Admin API inspector still displays resolved values.
126
+ next API read. Admin edit forms receive the raw stored overrides. Empty
127
+ supported inputs display the active locale's managed template value as a
128
+ placeholder, and each template-backed group includes a localized link to edit
129
+ that template document. The Admin API inspector still displays resolved values.
73
130
 
74
131
  You can explicitly control resolution for Local API operations through Payload
75
132
  request context:
@@ -0,0 +1,3 @@
1
+ import type { GroupFieldClientProps } from 'payload';
2
+ export declare const TemplateField: (props: GroupFieldClientProps) => import("react").JSX.Element;
3
+ //# sourceMappingURL=TemplateField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateField.d.ts","sourceRoot":"","sources":["../../src/admin/TemplateField.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAqBpD,eAAO,MAAM,aAAa,GAAI,OAAO,qBAAqB,gCAsGzD,CAAA"}
@@ -0,0 +1,82 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { GroupField, useConfig, useLocale, useTranslation } from '@payloadcms/ui';
4
+ import { useEffect, useMemo, useState } from 'react';
5
+ import { translate } from '../translations/index.js';
6
+ import { applyTemplatePlaceholders } from './templatePlaceholders.js';
7
+ const joinURL = (base, path) => `${base.replace(/\/+$/, '')}/${path.replace(/^\/+/, '')}`;
8
+ export const TemplateField = (props) => {
9
+ const { config } = useConfig();
10
+ const locale = useLocale();
11
+ const { i18n } = useTranslation();
12
+ const custom = props.field.admin?.custom;
13
+ const template = custom?.templateField?.template;
14
+ const dataField = custom?.templateField?.dataField;
15
+ const localeCode = typeof locale?.code === 'string' && locale.code ? locale.code : undefined;
16
+ const [templateDocument, setTemplateDocument] = useState();
17
+ useEffect(() => {
18
+ if (typeof template !== 'string' || typeof dataField !== 'string') {
19
+ setTemplateDocument(undefined);
20
+ return;
21
+ }
22
+ const abortController = new AbortController();
23
+ const params = new URLSearchParams({
24
+ depth: '0',
25
+ limit: '1',
26
+ pagination: 'false',
27
+ [`select[${dataField}]`]: 'true',
28
+ 'where[templateType][equals]': template,
29
+ });
30
+ if (localeCode) {
31
+ params.set('locale', localeCode);
32
+ }
33
+ const endpoint = joinURL(config.serverURL, `${config.routes.api}/templates?${params.toString()}`);
34
+ void fetch(endpoint, {
35
+ credentials: 'same-origin',
36
+ signal: abortController.signal,
37
+ })
38
+ .then(async (response) => {
39
+ if (!response.ok) {
40
+ return undefined;
41
+ }
42
+ const result = await response.json();
43
+ const document = result.docs?.[0];
44
+ return document && typeof document === 'object'
45
+ ? document
46
+ : undefined;
47
+ })
48
+ .then(setTemplateDocument)
49
+ .catch((error) => {
50
+ if (!(error instanceof DOMException && error.name === 'AbortError')) {
51
+ setTemplateDocument(undefined);
52
+ }
53
+ });
54
+ return () => abortController.abort();
55
+ }, [
56
+ config.routes.api,
57
+ config.serverURL,
58
+ dataField,
59
+ localeCode,
60
+ template,
61
+ ]);
62
+ const field = useMemo(() => {
63
+ const templateData = typeof dataField === 'string' &&
64
+ templateDocument?.[dataField] &&
65
+ typeof templateDocument[dataField] === 'object' &&
66
+ !Array.isArray(templateDocument[dataField])
67
+ ? templateDocument[dataField]
68
+ : undefined;
69
+ return templateData
70
+ ? {
71
+ ...props.field,
72
+ fields: applyTemplatePlaceholders(props.field.fields, templateData),
73
+ }
74
+ : props.field;
75
+ }, [dataField, props.field, templateDocument]);
76
+ const templateID = templateDocument?.id;
77
+ const templateURL = templateID === undefined
78
+ ? undefined
79
+ : `${joinURL(config.routes.admin, `collections/templates/${encodeURIComponent(String(templateID))}`)}${localeCode ? `?${new URLSearchParams({ locale: localeCode }).toString()}` : ''}`;
80
+ return (_jsxs("div", { className: "template-field", children: [templateURL && (_jsx("div", { style: { fontSize: '13px', marginBottom: '6px', textAlign: 'right' }, children: _jsx("a", { href: templateURL, children: translate('editTemplate', i18n.language) }) })), _jsx(GroupField, { ...props, field: field })] }));
81
+ };
82
+ //# sourceMappingURL=TemplateField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateField.js","sourceRoot":"","sources":["../../src/admin/TemplateField.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEjF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAcrE,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,IAAY,EAAU,EAAE,CACrD,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAA;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAA4B,EAAE,EAAE;IAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,EAAE,CAAA;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,MAA8C,CAAA;IAChF,MAAM,QAAQ,GAAG,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAA;IAChD,MAAM,SAAS,GAAG,MAAM,EAAE,aAAa,EAAE,SAAS,CAAA;IAClD,MAAM,UAAU,GACd,OAAO,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3E,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,EAAoB,CAAA;IAE5E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClE,mBAAmB,CAAC,SAAS,CAAC,CAAA;YAC9B,OAAM;QACR,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAC7C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,KAAK,EAAE,GAAG;YACV,KAAK,EAAE,GAAG;YACV,UAAU,EAAE,OAAO;YACnB,CAAC,UAAU,SAAS,GAAG,CAAC,EAAE,MAAM;YAChC,6BAA6B,EAAE,QAAQ;SACxC,CAAC,CAAA;QACF,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;QAClC,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CACtB,MAAM,CAAC,SAAS,EAChB,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,cAAc,MAAM,CAAC,QAAQ,EAAE,EAAE,CACtD,CAAA;QAED,KAAK,KAAK,CAAC,QAAQ,EAAE;YACnB,WAAW,EAAE,aAAa;YAC1B,MAAM,EAAE,eAAe,CAAC,MAAM;SAC/B,CAAC;aACC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,SAAS,CAAA;YAClB,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0B,CAAA;YAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACjC,OAAO,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAC7C,CAAC,CAAC,QAA4B;gBAC9B,CAAC,CAAC,SAAS,CAAA;QACf,CAAC,CAAC;aACD,IAAI,CAAC,mBAAmB,CAAC;aACzB,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,IAAI,CAAC,CAAC,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,CAAC;gBACpE,mBAAmB,CAAC,SAAS,CAAC,CAAA;YAChC,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;IACtC,CAAC,EAAE;QACD,MAAM,CAAC,MAAM,CAAC,GAAG;QACjB,MAAM,CAAC,SAAS;QAChB,SAAS;QACT,UAAU;QACV,QAAQ;KACT,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,MAAM,YAAY,GAChB,OAAO,SAAS,KAAK,QAAQ;YAC7B,gBAAgB,EAAE,CAAC,SAAS,CAAC;YAC7B,OAAO,gBAAgB,CAAC,SAAS,CAAC,KAAK,QAAQ;YAC/C,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAA4B;YACxD,CAAC,CAAC,SAAS,CAAA;QAEf,OAAO,YAAY;YACjB,CAAC,CAAC;gBACA,GAAG,KAAK,CAAC,KAAK;gBACd,MAAM,EAAE,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC;aACpE;YACD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAA;IACjB,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAE9C,MAAM,UAAU,GAAG,gBAAgB,EAAE,EAAE,CAAA;IACvC,MAAM,WAAW,GACf,UAAU,KAAK,SAAS;QACtB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,GAAG,OAAO,CACV,MAAM,CAAC,MAAM,CAAC,KAAK,EACnB,yBAAyB,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAClE,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IAExF,OAAO,CACL,eAAK,SAAS,EAAC,gBAAgB,aAC5B,WAAW,IAAI,CACd,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,YACvE,YAAG,IAAI,EAAE,WAAW,YACjB,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,GACvC,GACA,CACP,EACD,KAAC,UAAU,OAAK,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,IACnC,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { ClientField } from 'payload';
2
+ export declare const applyTemplatePlaceholders: (fields: ClientField[], templateData: Record<string, unknown>) => ClientField[];
3
+ //# sourceMappingURL=templatePlaceholders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templatePlaceholders.d.ts","sourceRoot":"","sources":["../../src/admin/templatePlaceholders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAwG1C,eAAO,MAAM,yBAAyB,GACpC,QAAQ,WAAW,EAAE,EACrB,cAAc,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACpC,WAAW,EACqD,CAAA"}
@@ -0,0 +1,72 @@
1
+ const PLACEHOLDER_FIELD_TYPES = new Set([
2
+ 'code',
3
+ 'date',
4
+ 'email',
5
+ 'number',
6
+ 'select',
7
+ 'text',
8
+ 'textarea',
9
+ ]);
10
+ const isRecord = (value) => Boolean(value) && typeof value === 'object' && !Array.isArray(value);
11
+ const getPlaceholder = (value) => {
12
+ if (typeof value === 'string') {
13
+ return value || undefined;
14
+ }
15
+ if (typeof value === 'number' && Number.isFinite(value)) {
16
+ return String(value);
17
+ }
18
+ if (Array.isArray(value) &&
19
+ value.length > 0 &&
20
+ value.every((item) => typeof item === 'string' || typeof item === 'number')) {
21
+ return value.join(', ');
22
+ }
23
+ return undefined;
24
+ };
25
+ const getFieldValue = (field, templateData) => 'name' in field && typeof field.name === 'string'
26
+ ? templateData[field.name]
27
+ : templateData;
28
+ const applyFieldPlaceholder = (field, templateData) => {
29
+ const fieldValue = getFieldValue(field, templateData);
30
+ if (field.type === 'row' || field.type === 'collapsible') {
31
+ return {
32
+ ...field,
33
+ fields: applyTemplatePlaceholders(field.fields, templateData),
34
+ };
35
+ }
36
+ if (field.type === 'tabs') {
37
+ return {
38
+ ...field,
39
+ tabs: field.tabs.map((tab) => {
40
+ const tabValue = 'name' in tab && typeof tab.name === 'string'
41
+ ? templateData[tab.name]
42
+ : templateData;
43
+ return {
44
+ ...tab,
45
+ fields: applyTemplatePlaceholders(tab.fields, isRecord(tabValue) ? tabValue : {}),
46
+ };
47
+ }),
48
+ };
49
+ }
50
+ if (field.type === 'group') {
51
+ return {
52
+ ...field,
53
+ fields: applyTemplatePlaceholders(field.fields, isRecord(fieldValue) ? fieldValue : {}),
54
+ };
55
+ }
56
+ if (!PLACEHOLDER_FIELD_TYPES.has(field.type)) {
57
+ return field;
58
+ }
59
+ const placeholder = getPlaceholder(fieldValue);
60
+ if (placeholder === undefined) {
61
+ return field;
62
+ }
63
+ return {
64
+ ...field,
65
+ admin: {
66
+ ...field.admin,
67
+ placeholder,
68
+ },
69
+ };
70
+ };
71
+ export const applyTemplatePlaceholders = (fields, templateData) => fields.map((field) => applyFieldPlaceholder(field, templateData));
72
+ //# sourceMappingURL=templatePlaceholders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templatePlaceholders.js","sourceRoot":"","sources":["../../src/admin/templatePlaceholders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { TemplateField } from '../admin/TemplateField.js';
2
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/exports/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,3 @@
1
+ 'use client';
2
+ export { TemplateField } from '../admin/TemplateField.js';
3
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/exports/client.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,MAAM,EACP,MAAM,SAAS,CAAA;AAOhB,OAAO,KAAK,EAAkB,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAwOvE,eAAO,MAAM,eAAe,GACzB,cAAc,qBAAqB,KAAG,MAuCtC,CAAA;AAEH,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAOV,MAAM,EACP,MAAM,SAAS,CAAA;AAOhB,OAAO,KAAK,EAAkB,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAiSvE,eAAO,MAAM,eAAe,GACzB,cAAc,qBAAqB,KAAG,MAyCpC,CAAA;AAEL,eAAe,eAAe,CAAA"}
package/dist/plugin.js CHANGED
@@ -5,6 +5,8 @@ import { localizedText } from './translations/index.js';
5
5
  import { fieldsContain, transformBlock, transformFields } from './traverseFields.js';
6
6
  const COLLECTION_SLUG = 'templates';
7
7
  const DATA_FIELD_PREFIX = 'data_';
8
+ const RECONCILE_CONTEXT_KEY = 'sittariTemplatesReconcile';
9
+ const TEMPLATE_FIELD_ADMIN_COMPONENT = '@sittari/payload-templates/client#TemplateField';
8
10
  const VALID_TEMPLATE_NAME = /^[A-Za-z0-9_]+$/;
9
11
  const dataFieldName = (name) => `${DATA_FIELD_PREFIX}${name}`;
10
12
  const extendOnInit = (incomingConfig, onInit) => async (payload) => {
@@ -52,6 +54,20 @@ const createTemplateFieldTransformer = (templates, reusableBlocks) => {
52
54
  const localized = fieldsContain(fields, (templateField) => 'localized' in templateField && templateField.localized === true);
53
55
  return {
54
56
  ...groupField,
57
+ admin: {
58
+ ...groupField.admin,
59
+ components: {
60
+ ...groupField.admin?.components,
61
+ Field: TEMPLATE_FIELD_ADMIN_COMPONENT,
62
+ },
63
+ custom: {
64
+ ...groupField.admin?.custom,
65
+ templateField: {
66
+ dataField: dataFieldName(templateName),
67
+ template: templateName,
68
+ },
69
+ },
70
+ },
55
71
  fields,
56
72
  hooks: {
57
73
  ...groupField.hooks,
@@ -106,7 +122,7 @@ const createTemplateFields = (templates) => [
106
122
  },
107
123
  })),
108
124
  ];
109
- const createTemplatesCollection = (templates) => ({
125
+ const createTemplatesCollection = (templates, beforeOperation) => ({
110
126
  slug: COLLECTION_SLUG,
111
127
  access: {
112
128
  create: () => false,
@@ -121,11 +137,18 @@ const createTemplatesCollection = (templates) => ({
121
137
  singular: localizedText('template'),
122
138
  plural: localizedText('templates'),
123
139
  },
140
+ hooks: {
141
+ beforeOperation: [beforeOperation],
142
+ },
124
143
  fields: createTemplateFields(templates),
125
144
  });
126
145
  const reconcileTemplates = async (payload, templates) => {
146
+ const context = {
147
+ [RECONCILE_CONTEXT_KEY]: true,
148
+ };
127
149
  const result = await payload.find({
128
150
  collection: COLLECTION_SLUG,
151
+ context,
129
152
  depth: 0,
130
153
  limit: 0,
131
154
  overrideAccess: true,
@@ -141,6 +164,7 @@ const reconcileTemplates = async (payload, templates) => {
141
164
  if (!existing) {
142
165
  await payload.create({
143
166
  collection: COLLECTION_SLUG,
167
+ context,
144
168
  data: {
145
169
  [dataFieldName(template.name)]: template.initialData ?? {},
146
170
  templateType: template.name,
@@ -153,6 +177,7 @@ const reconcileTemplates = async (payload, templates) => {
153
177
  if (existing.title !== template.label) {
154
178
  await payload.update({
155
179
  collection: COLLECTION_SLUG,
180
+ context,
156
181
  id: existing.id,
157
182
  data: { title: template.label },
158
183
  overrideAccess: true,
@@ -163,12 +188,35 @@ const reconcileTemplates = async (payload, templates) => {
163
188
  if (typeof document.templateType !== 'string' || !configuredNames.has(document.templateType)) {
164
189
  await payload.delete({
165
190
  collection: COLLECTION_SLUG,
191
+ context,
166
192
  id: document.id,
167
193
  overrideAccess: true,
168
194
  });
169
195
  }
170
196
  }
171
197
  };
198
+ const createTemplateReconciler = (templates) => {
199
+ let reconciliation;
200
+ const reconcile = (payload) => {
201
+ if (!reconciliation) {
202
+ reconciliation = reconcileTemplates(payload, templates).catch((error) => {
203
+ reconciliation = undefined;
204
+ throw error;
205
+ });
206
+ }
207
+ return reconciliation;
208
+ };
209
+ const beforeOperation = async ({ context, req }) => {
210
+ if (context[RECONCILE_CONTEXT_KEY] === true) {
211
+ return;
212
+ }
213
+ await reconcile(req.payload);
214
+ };
215
+ return {
216
+ beforeOperation,
217
+ reconcile,
218
+ };
219
+ };
172
220
  export const templatesPlugin = (pluginConfig) => (incomingConfig) => {
173
221
  if (pluginConfig.enabled === false) {
174
222
  return incomingConfig;
@@ -178,6 +226,7 @@ export const templatesPlugin = (pluginConfig) => (incomingConfig) => {
178
226
  throw new Error(`[templatesPlugin] A collection with slug "${COLLECTION_SLUG}" already exists.`);
179
227
  }
180
228
  const transformTemplateField = createTemplateFieldTransformer(pluginConfig.templates, incomingConfig.blocks ?? []);
229
+ const templateReconciler = createTemplateReconciler(pluginConfig.templates);
181
230
  const collections = (incomingConfig.collections ?? []).map((collection) => {
182
231
  const fields = transformFields(collection.fields, transformTemplateField);
183
232
  return fields === collection.fields ? collection : { ...collection, fields };
@@ -190,11 +239,11 @@ export const templatesPlugin = (pluginConfig) => (incomingConfig) => {
190
239
  ...incomingConfig,
191
240
  collections: [
192
241
  ...collections,
193
- createTemplatesCollection(pluginConfig.templates),
242
+ createTemplatesCollection(pluginConfig.templates, templateReconciler.beforeOperation),
194
243
  ],
195
244
  globals,
196
245
  blocks: incomingConfig.blocks?.map((block) => transformBlock(block, transformTemplateField)),
197
- onInit: extendOnInit(incomingConfig, (payload) => reconcileTemplates(payload, pluginConfig.templates)),
246
+ onInit: extendOnInit(incomingConfig, templateReconciler.reconcile),
198
247
  };
199
248
  };
200
249
  export default templatesPlugin;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export declare const en: {
2
+ readonly editTemplate: "Edit template";
2
3
  readonly template: "Template";
3
4
  readonly templates: "Templates";
4
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/translations/en.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE;;;CAGL,CAAA;AAEV,MAAM,MAAM,oBAAoB,GAAG;KAChC,GAAG,IAAI,MAAM,OAAO,EAAE,GAAG,MAAM;CACjC,CAAA"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/translations/en.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE;;;;CAIL,CAAA;AAEV,MAAM,MAAM,oBAAoB,GAAG;KAChC,GAAG,IAAI,MAAM,OAAO,EAAE,GAAG,MAAM;CACjC,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export const en = {
2
+ editTemplate: 'Edit template',
2
3
  template: 'Template',
3
4
  templates: 'Templates',
4
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/translations/en.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;CACd,CAAA"}
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/translations/en.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,YAAY,EAAE,eAAe;IAC7B,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;CACd,CAAA"}
@@ -1,14 +1,17 @@
1
1
  import { en } from './en.js';
2
2
  export declare const translations: {
3
3
  en: {
4
+ readonly editTemplate: "Edit template";
4
5
  readonly template: "Template";
5
6
  readonly templates: "Templates";
6
7
  };
7
8
  ru: {
9
+ editTemplate: string;
8
10
  template: string;
9
11
  templates: string;
10
12
  };
11
13
  uk: {
14
+ editTemplate: string;
12
15
  template: string;
13
16
  templates: string;
14
17
  };
@@ -16,4 +19,5 @@ export declare const translations: {
16
19
  export type TemplatesLanguage = keyof typeof translations;
17
20
  export type TemplatesTranslationKey = keyof typeof en;
18
21
  export declare const localizedText: (key: TemplatesTranslationKey) => Record<TemplatesLanguage, string>;
22
+ export declare const translate: (key: TemplatesTranslationKey, language?: string) => string;
19
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/translations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAI5B,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAAiB,CAAA;AAE1C,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,YAAY,CAAA;AACzD,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,EAAE,CAAA;AAErD,eAAO,MAAM,aAAa,GAAI,KAAK,uBAAuB,KAAG,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAI3F,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/translations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAI5B,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;CAAiB,CAAA;AAE1C,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,YAAY,CAAA;AACzD,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,EAAE,CAAA;AAErD,eAAO,MAAM,aAAa,GAAI,KAAK,uBAAuB,KAAG,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAI3F,CAAA;AAEF,eAAO,MAAM,SAAS,GACpB,KAAK,uBAAuB,EAC5B,WAAW,MAAM,KAChB,MAMF,CAAA"}
@@ -7,4 +7,9 @@ export const localizedText = (key) => ({
7
7
  ru: ru[key],
8
8
  uk: uk[key],
9
9
  });
10
+ export const translate = (key, language) => {
11
+ const normalized = language?.trim().toLowerCase().split(/[-_]/, 1)[0];
12
+ const resolvedLanguage = normalized === 'ru' || normalized === 'uk' ? normalized : 'en';
13
+ return translations[resolvedLanguage][key];
14
+ };
10
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/translations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAA;AAK1C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAA4B,EAAqC,EAAE,CAAC,CAAC;IACjG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC;IACX,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC;IACX,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC;CACZ,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/translations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAA;AAK1C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAA4B,EAAqC,EAAE,CAAC,CAAC;IACjG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC;IACX,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC;IACX,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC;CACZ,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,GAA4B,EAC5B,QAAiB,EACT,EAAE;IACV,MAAM,UAAU,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,MAAM,gBAAgB,GACpB,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;IAEhE,OAAO,YAAY,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAA;AAC5C,CAAC,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export declare const ru: {
2
+ editTemplate: string;
2
3
  template: string;
3
4
  templates: string;
4
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ru.d.ts","sourceRoot":"","sources":["../../src/translations/ru.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,EAAE;;;CAGiB,CAAA"}
1
+ {"version":3,"file":"ru.d.ts","sourceRoot":"","sources":["../../src/translations/ru.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,EAAE;;;;CAIiB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export const ru = {
2
+ editTemplate: 'Редактировать шаблон',
2
3
  template: 'Шаблон',
3
4
  templates: 'Шаблоны',
4
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ru.js","sourceRoot":"","sources":["../../src/translations/ru.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;CACU,CAAA"}
1
+ {"version":3,"file":"ru.js","sourceRoot":"","sources":["../../src/translations/ru.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,YAAY,EAAE,sBAAsB;IACpC,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;CACU,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export declare const uk: {
2
+ editTemplate: string;
2
3
  template: string;
3
4
  templates: string;
4
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"uk.d.ts","sourceRoot":"","sources":["../../src/translations/uk.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,EAAE;;;CAGiB,CAAA"}
1
+ {"version":3,"file":"uk.d.ts","sourceRoot":"","sources":["../../src/translations/uk.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,EAAE;;;;CAIiB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export const uk = {
2
+ editTemplate: 'Редагувати шаблон',
2
3
  template: 'Шаблон',
3
4
  templates: 'Шаблони',
4
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"uk.js","sourceRoot":"","sources":["../../src/translations/uk.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;CACU,CAAA"}
1
+ {"version":3,"file":"uk.js","sourceRoot":"","sources":["../../src/translations/uk.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,YAAY,EAAE,mBAAmB;IACjC,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;CACU,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sittari/payload-templates",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "Managed template documents for Payload CMS.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -12,6 +12,10 @@
12
12
  "import": "./dist/index.js",
13
13
  "default": "./dist/index.js"
14
14
  },
15
+ "./client": {
16
+ "types": "./dist/exports/client.d.ts",
17
+ "import": "./dist/exports/client.js"
18
+ },
15
19
  "./types": {
16
20
  "types": "./dist/exports/types.d.ts",
17
21
  "import": "./dist/exports/types.js"
@@ -22,12 +26,18 @@
22
26
  "README.md"
23
27
  ],
24
28
  "sideEffects": false,
29
+ "dependencies": {
30
+ "@payloadcms/ui": "^3.0.0"
31
+ },
25
32
  "peerDependencies": {
26
- "payload": "^3.0.0"
33
+ "payload": "^3.0.0",
34
+ "react": "^19.0.0"
27
35
  },
28
36
  "devDependencies": {
29
37
  "@payloadcms/db-sqlite": "3.85.2",
38
+ "@types/react": "^19.0.0",
30
39
  "payload": "^3.0.0",
40
+ "react": "^19.0.0",
31
41
  "typescript": "5.9.3",
32
42
  "vitest": "4.1.9"
33
43
  },