@prenta/admin 2.3.0 → 2.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/CHANGELOG.md +6 -0
- package/dist/__tests__/components/document-locale-switcher.test.js +17 -0
- package/dist/__tests__/components/document-locale-switcher.test.js.map +1 -1
- package/dist/components/DocumentLocaleSwitcher.d.ts.map +1 -1
- package/dist/components/DocumentLocaleSwitcher.js +30 -8
- package/dist/components/DocumentLocaleSwitcher.js.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/components/document-locale-switcher.test.tsx +26 -0
- package/src/components/DocumentLocaleSwitcher.tsx +34 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @actuate-media/cms-admin
|
|
2
2
|
|
|
3
|
+
## 2.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- b9033ec: AI localization writes a draft in the target locale and leaves publish to the review workflow. The request is governed by the localization feature budget.
|
|
8
|
+
|
|
3
9
|
## 2.3.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
@@ -74,5 +74,22 @@ describe('DocumentLocaleSwitcher', () => {
|
|
|
74
74
|
body: JSON.stringify({ locale: 'es' }),
|
|
75
75
|
});
|
|
76
76
|
});
|
|
77
|
+
it('asks for an AI draft and does not publish it', async () => {
|
|
78
|
+
const onNavigate = renderSwitcher();
|
|
79
|
+
await waitFor(() => expect(screen.getByRole('button', { name: 'Translations, English' })).toBeTruthy());
|
|
80
|
+
cmsApiMock.mockResolvedValueOnce({
|
|
81
|
+
data: { id: 'page-es', locale: 'es', created: true, applied: true, status: 'DRAFT' },
|
|
82
|
+
status: 201,
|
|
83
|
+
});
|
|
84
|
+
fireEvent.keyDown(screen.getByRole('button', { name: 'Translations, English' }), {
|
|
85
|
+
key: 'Enter',
|
|
86
|
+
});
|
|
87
|
+
fireEvent.click(screen.getByRole('menuitem', { name: 'Translate to ES' }));
|
|
88
|
+
await waitFor(() => expect(onNavigate).toHaveBeenCalledWith('/pages/page-es/edit'));
|
|
89
|
+
const body = JSON.parse((cmsApiMock.mock.calls.at(-1)?.[1]).body);
|
|
90
|
+
expect(cmsApiMock).toHaveBeenLastCalledWith('/collections/pages/page-1/translations/localize', expect.objectContaining({ method: 'POST' }));
|
|
91
|
+
expect(body).toEqual({ locale: 'es' });
|
|
92
|
+
expect(body).not.toHaveProperty('status');
|
|
93
|
+
});
|
|
77
94
|
});
|
|
78
95
|
//# sourceMappingURL=document-locale-switcher.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-locale-switcher.test.js","sourceRoot":"","sources":["../../../src/__tests__/components/document-locale-switcher.test.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document-locale-switcher.test.js","sourceRoot":"","sources":["../../../src/__tests__/components/document-locale-switcher.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentLocaleSwitcher.d.ts","sourceRoot":"","sources":["../../src/components/DocumentLocaleSwitcher.tsx"],"names":[],"mappings":"AA4BA,UAAU,2BAA2B;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAA;IAClC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,GACX,EAAE,2BAA2B,
|
|
1
|
+
{"version":3,"file":"DocumentLocaleSwitcher.d.ts","sourceRoot":"","sources":["../../src/components/DocumentLocaleSwitcher.tsx"],"names":[],"mappings":"AA4BA,UAAU,2BAA2B;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAA;IAClC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,GACX,EAAE,2BAA2B,kDA8H7B"}
|
|
@@ -36,6 +36,19 @@ export function DocumentLocaleSwitcher({ collection, documentId, canCreate, edit
|
|
|
36
36
|
return null;
|
|
37
37
|
const current = locales.find((locale) => locale.code === currentLocale);
|
|
38
38
|
const label = current?.code.toUpperCase() ?? 'Locale';
|
|
39
|
+
async function translate(code) {
|
|
40
|
+
if (!canCreate || busy)
|
|
41
|
+
return;
|
|
42
|
+
setBusy(true);
|
|
43
|
+
const result = await cmsApi(`/collections/${encodeURIComponent(collection)}/${encodeURIComponent(documentId)}/translations/localize`, { method: 'POST', body: JSON.stringify({ locale: code }) });
|
|
44
|
+
setBusy(false);
|
|
45
|
+
if (result.error || !result.data?.id) {
|
|
46
|
+
toast.error(result.error ?? 'Could not translate this document');
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
toast.success('Saved as a draft. Submit it for review before publishing.');
|
|
50
|
+
onNavigate(editorPath(result.data.id));
|
|
51
|
+
}
|
|
39
52
|
async function choose(code) {
|
|
40
53
|
const sibling = siblings.find((row) => row.locale === code);
|
|
41
54
|
if (sibling) {
|
|
@@ -54,13 +67,22 @@ export function DocumentLocaleSwitcher({ collection, documentId, canCreate, edit
|
|
|
54
67
|
}
|
|
55
68
|
onNavigate(editorPath(result.data.id));
|
|
56
69
|
}
|
|
57
|
-
return (_jsxs(DropdownMenu.Root, { children: [_jsx(DropdownMenu.Trigger, { asChild: true, children: _jsxs("button", { type: "button", disabled: busy, "aria-label": `Translations, ${current?.label ?? 'locale not set'}`, title: "Open or create a translation", className: "text-muted-foreground hover:text-foreground hover:bg-accent inline-flex shrink-0 items-center gap-1 rounded-lg px-2 py-1 text-sm disabled:cursor-not-allowed disabled:opacity-50", children: [_jsx(Globe, { className: "h-4 w-4", "aria-hidden": true }), label, _jsx(ChevronDown, { className: "h-3.5 w-3.5", "aria-hidden": true })] }) }), _jsx(DropdownMenu.Portal, { container: adminPortalContainer(), children:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
70
|
+
return (_jsxs(DropdownMenu.Root, { children: [_jsx(DropdownMenu.Trigger, { asChild: true, children: _jsxs("button", { type: "button", disabled: busy, "aria-label": `Translations, ${current?.label ?? 'locale not set'}`, title: "Open or create a translation", className: "text-muted-foreground hover:text-foreground hover:bg-accent inline-flex shrink-0 items-center gap-1 rounded-lg px-2 py-1 text-sm disabled:cursor-not-allowed disabled:opacity-50", children: [_jsx(Globe, { className: "h-4 w-4", "aria-hidden": true }), label, _jsx(ChevronDown, { className: "h-3.5 w-3.5", "aria-hidden": true })] }) }), _jsx(DropdownMenu.Portal, { container: adminPortalContainer(), children: _jsxs(DropdownMenu.Content, { align: "start", sideOffset: 6, className: "border-border bg-popover z-[120] min-w-40 rounded-lg border p-1 shadow-md", children: [locales.map((locale) => {
|
|
71
|
+
const sibling = siblings.find((row) => row.locale === locale.code);
|
|
72
|
+
const isCurrent = locale.code === currentLocale;
|
|
73
|
+
const canChoose = Boolean(sibling) || canCreate;
|
|
74
|
+
return (_jsxs(DropdownMenu.Item, { disabled: !canChoose || busy, onSelect: () => {
|
|
75
|
+
void choose(locale.code);
|
|
76
|
+
}, className: "hover:bg-accent focus:bg-accent data-[disabled]:text-muted-foreground flex cursor-pointer items-center justify-between gap-3 rounded-md px-2.5 py-1.5 text-sm outline-none data-[disabled]:cursor-not-allowed", children: [_jsx("span", { children: locale.label }), _jsx("span", { className: "text-muted-foreground text-xs", children: isCurrent ? 'Current' : sibling ? sibling.status : 'New draft' })] }, locale.code));
|
|
77
|
+
}), locales
|
|
78
|
+
.filter((locale) => {
|
|
79
|
+
if (!canCreate || locale.code === currentLocale)
|
|
80
|
+
return false;
|
|
81
|
+
const sibling = siblings.find((row) => row.locale === locale.code);
|
|
82
|
+
return !sibling || sibling.status === 'DRAFT';
|
|
83
|
+
})
|
|
84
|
+
.map((locale) => (_jsxs(DropdownMenu.Item, { disabled: busy, onSelect: () => {
|
|
85
|
+
void translate(locale.code);
|
|
86
|
+
}, className: "hover:bg-accent focus:bg-accent flex cursor-pointer items-center rounded-md px-2.5 py-1.5 text-sm outline-none", children: ["Translate to ", locale.code.toUpperCase()] }, `translate-${locale.code}`)))] }) })] }));
|
|
65
87
|
}
|
|
66
88
|
//# sourceMappingURL=DocumentLocaleSwitcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentLocaleSwitcher.js","sourceRoot":"","sources":["../../src/components/DocumentLocaleSwitcher.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"DocumentLocaleSwitcher.js","sourceRoot":"","sources":["../../src/components/DocumentLocaleSwitcher.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prenta/admin",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"typescript": "^5.7.0",
|
|
102
102
|
"vitest": "^4.1.0",
|
|
103
103
|
"@prenta/component-blocks": "0.3.1",
|
|
104
|
-
"@prenta/core": "8.
|
|
104
|
+
"@prenta/core": "8.6.0",
|
|
105
105
|
"@prenta/plugin-ai": "4.0.1",
|
|
106
106
|
"@prenta/plugin-blocks": "1.0.1",
|
|
107
107
|
"@prenta/plugin-commerce": "1.0.1",
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
"@prenta/plugin-media": "1.0.1",
|
|
110
110
|
"@prenta/plugin-navigation": "1.0.1",
|
|
111
111
|
"@prenta/plugin-seo": "2.0.1",
|
|
112
|
-
"@prenta/sections-react": "0.17.
|
|
112
|
+
"@prenta/sections-react": "0.17.75"
|
|
113
113
|
},
|
|
114
114
|
"scripts": {
|
|
115
115
|
"build": "tsc --project tsconfig.json && npx @tailwindcss/cli -i src/styles/build-input.css -o dist/prenta-admin.css --minify",
|
|
@@ -108,4 +108,30 @@ describe('DocumentLocaleSwitcher', () => {
|
|
|
108
108
|
body: JSON.stringify({ locale: 'es' }),
|
|
109
109
|
})
|
|
110
110
|
})
|
|
111
|
+
|
|
112
|
+
it('asks for an AI draft and does not publish it', async () => {
|
|
113
|
+
const onNavigate = renderSwitcher()
|
|
114
|
+
await waitFor(() =>
|
|
115
|
+
expect(screen.getByRole('button', { name: 'Translations, English' })).toBeTruthy(),
|
|
116
|
+
)
|
|
117
|
+
cmsApiMock.mockResolvedValueOnce({
|
|
118
|
+
data: { id: 'page-es', locale: 'es', created: true, applied: true, status: 'DRAFT' },
|
|
119
|
+
status: 201,
|
|
120
|
+
})
|
|
121
|
+
fireEvent.keyDown(screen.getByRole('button', { name: 'Translations, English' }), {
|
|
122
|
+
key: 'Enter',
|
|
123
|
+
})
|
|
124
|
+
fireEvent.click(screen.getByRole('menuitem', { name: 'Translate to ES' }))
|
|
125
|
+
await waitFor(() => expect(onNavigate).toHaveBeenCalledWith('/pages/page-es/edit'))
|
|
126
|
+
const body = JSON.parse((cmsApiMock.mock.calls.at(-1)?.[1] as { body: string }).body) as Record<
|
|
127
|
+
string,
|
|
128
|
+
unknown
|
|
129
|
+
>
|
|
130
|
+
expect(cmsApiMock).toHaveBeenLastCalledWith(
|
|
131
|
+
'/collections/pages/page-1/translations/localize',
|
|
132
|
+
expect.objectContaining({ method: 'POST' }),
|
|
133
|
+
)
|
|
134
|
+
expect(body).toEqual({ locale: 'es' })
|
|
135
|
+
expect(body).not.toHaveProperty('status')
|
|
136
|
+
})
|
|
111
137
|
})
|
|
@@ -72,6 +72,22 @@ export function DocumentLocaleSwitcher({
|
|
|
72
72
|
const current = locales.find((locale) => locale.code === currentLocale)
|
|
73
73
|
const label = current?.code.toUpperCase() ?? 'Locale'
|
|
74
74
|
|
|
75
|
+
async function translate(code: string) {
|
|
76
|
+
if (!canCreate || busy) return
|
|
77
|
+
setBusy(true)
|
|
78
|
+
const result = await cmsApi<TranslationDraft & { applied?: boolean; status?: string }>(
|
|
79
|
+
`/collections/${encodeURIComponent(collection)}/${encodeURIComponent(documentId)}/translations/localize`,
|
|
80
|
+
{ method: 'POST', body: JSON.stringify({ locale: code }) },
|
|
81
|
+
)
|
|
82
|
+
setBusy(false)
|
|
83
|
+
if (result.error || !result.data?.id) {
|
|
84
|
+
toast.error(result.error ?? 'Could not translate this document')
|
|
85
|
+
return
|
|
86
|
+
}
|
|
87
|
+
toast.success('Saved as a draft. Submit it for review before publishing.')
|
|
88
|
+
onNavigate(editorPath(result.data.id))
|
|
89
|
+
}
|
|
90
|
+
|
|
75
91
|
async function choose(code: string) {
|
|
76
92
|
const sibling = siblings.find((row) => row.locale === code)
|
|
77
93
|
if (sibling) {
|
|
@@ -133,6 +149,24 @@ export function DocumentLocaleSwitcher({
|
|
|
133
149
|
</DropdownMenu.Item>
|
|
134
150
|
)
|
|
135
151
|
})}
|
|
152
|
+
{locales
|
|
153
|
+
.filter((locale) => {
|
|
154
|
+
if (!canCreate || locale.code === currentLocale) return false
|
|
155
|
+
const sibling = siblings.find((row) => row.locale === locale.code)
|
|
156
|
+
return !sibling || sibling.status === 'DRAFT'
|
|
157
|
+
})
|
|
158
|
+
.map((locale) => (
|
|
159
|
+
<DropdownMenu.Item
|
|
160
|
+
key={`translate-${locale.code}`}
|
|
161
|
+
disabled={busy}
|
|
162
|
+
onSelect={() => {
|
|
163
|
+
void translate(locale.code)
|
|
164
|
+
}}
|
|
165
|
+
className="hover:bg-accent focus:bg-accent flex cursor-pointer items-center rounded-md px-2.5 py-1.5 text-sm outline-none"
|
|
166
|
+
>
|
|
167
|
+
Translate to {locale.code.toUpperCase()}
|
|
168
|
+
</DropdownMenu.Item>
|
|
169
|
+
))}
|
|
136
170
|
</DropdownMenu.Content>
|
|
137
171
|
</DropdownMenu.Portal>
|
|
138
172
|
</DropdownMenu.Root>
|