@actuate-media/cms-admin 0.8.2 → 0.10.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/LICENSE +21 -21
- package/dist/AdminRoot.d.ts.map +1 -1
- package/dist/AdminRoot.js +4 -0
- package/dist/AdminRoot.js.map +1 -1
- package/dist/actuate-admin.css +1 -1
- package/dist/components/SchedulePublishDialog.d.ts +18 -0
- package/dist/components/SchedulePublishDialog.d.ts.map +1 -0
- package/dist/components/SchedulePublishDialog.js +106 -0
- package/dist/components/SchedulePublishDialog.js.map +1 -0
- package/dist/components/SharePreviewLinkDialog.d.ts +17 -0
- package/dist/components/SharePreviewLinkDialog.d.ts.map +1 -0
- package/dist/components/SharePreviewLinkDialog.js +83 -0
- package/dist/components/SharePreviewLinkDialog.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/layout/Sidebar.d.ts.map +1 -1
- package/dist/layout/Sidebar.js +3 -2
- package/dist/layout/Sidebar.js.map +1 -1
- package/dist/views/ApiKeys.d.ts +5 -0
- package/dist/views/ApiKeys.d.ts.map +1 -0
- package/dist/views/ApiKeys.js +154 -0
- package/dist/views/ApiKeys.js.map +1 -0
- package/dist/views/DocumentEdit.d.ts.map +1 -1
- package/dist/views/DocumentEdit.js +15 -3
- package/dist/views/DocumentEdit.js.map +1 -1
- package/package.json +2 -2
- package/src/AdminRoot.tsx +5 -0
- package/src/components/SchedulePublishDialog.tsx +241 -0
- package/src/components/SharePreviewLinkDialog.tsx +227 -0
- package/src/index.ts +5 -0
- package/src/layout/Sidebar.tsx +3 -0
- package/src/views/ApiKeys.tsx +512 -0
- package/src/views/DocumentEdit.tsx +81 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentEdit.d.ts","sourceRoot":"","sources":["../../src/views/DocumentEdit.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DocumentEdit.d.ts","sourceRoot":"","sources":["../../src/views/DocumentEdit.tsx"],"names":[],"mappings":"AA6BA,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,GAAG,CAAA;IACX,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC;AAED,wBAAgB,YAAY,CAAC,EAC3B,cAAc,EACd,UAAU,EACV,MAAM,EACN,UAAU,GACX,EAAE,iBAAiB,2CA0hBnB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { useState, useEffect, useRef } from 'react';
|
|
4
|
-
import { AlertTriangle, Eye, EyeOff, Save, Copy, Loader2, Clock } from 'lucide-react';
|
|
4
|
+
import { AlertTriangle, Calendar, Eye, EyeOff, Save, Copy, Loader2, Clock, Share2, XCircle, } from 'lucide-react';
|
|
5
5
|
import { toast } from 'sonner';
|
|
6
6
|
import { FieldRenderer } from '../fields/FieldRenderer.js';
|
|
7
7
|
import { RelationshipField } from '../fields/RelationshipField.js';
|
|
@@ -10,6 +10,8 @@ import { LivePreview } from '../components/LivePreview.js';
|
|
|
10
10
|
import { VersionHistory } from '../components/VersionHistory.js';
|
|
11
11
|
import { PresenceIndicator } from '../components/PresenceIndicator.js';
|
|
12
12
|
import { SEOPanel } from '../components/SEOPanel.js';
|
|
13
|
+
import { SchedulePublishDialog } from '../components/SchedulePublishDialog.js';
|
|
14
|
+
import { SharePreviewLinkDialog } from '../components/SharePreviewLinkDialog.js';
|
|
13
15
|
import { cmsApi } from '../lib/api.js';
|
|
14
16
|
export function DocumentEdit({ collectionSlug, documentId, config, onNavigate, }) {
|
|
15
17
|
const isNew = !documentId;
|
|
@@ -23,7 +25,11 @@ export function DocumentEdit({ collectionSlug, documentId, config, onNavigate, }
|
|
|
23
25
|
const [loading, setLoading] = useState(!isNew);
|
|
24
26
|
const [showPreview, setShowPreview] = useState(false);
|
|
25
27
|
const [showVersions, setShowVersions] = useState(false);
|
|
28
|
+
const [showSchedule, setShowSchedule] = useState(false);
|
|
29
|
+
const [showShareLink, setShowShareLink] = useState(false);
|
|
26
30
|
const [docStatus, setDocStatus] = useState('DRAFT');
|
|
31
|
+
const [scheduledAt, setScheduledAt] = useState(null);
|
|
32
|
+
const [scheduledUnpublishAt, setScheduledUnpublishAt] = useState(null);
|
|
27
33
|
const hasLoadedRef = useRef(false);
|
|
28
34
|
const collections = config?.collections;
|
|
29
35
|
const collection = Array.isArray(collections)
|
|
@@ -97,6 +103,8 @@ export function DocumentEdit({ collectionSlug, documentId, config, onNavigate, }
|
|
|
97
103
|
setValues(merged);
|
|
98
104
|
setInitialValues(merged);
|
|
99
105
|
setDocStatus(doc.status ?? 'DRAFT');
|
|
106
|
+
setScheduledAt(doc.scheduledAt ?? null);
|
|
107
|
+
setScheduledUnpublishAt(doc.scheduledUnpublishAt ?? null);
|
|
100
108
|
const loadedSeo = {};
|
|
101
109
|
for (const key of SEO_FIELDS) {
|
|
102
110
|
if (docData[key] !== undefined) {
|
|
@@ -244,7 +252,7 @@ export function DocumentEdit({ collectionSlug, documentId, config, onNavigate, }
|
|
|
244
252
|
if (loading) {
|
|
245
253
|
return (_jsx("div", { className: "flex items-center justify-center min-h-[300px]", children: _jsx(Loader2, { className: "w-8 h-8 animate-spin text-gray-400" }) }));
|
|
246
254
|
}
|
|
247
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("h1", { className: "text-2xl font-bold", children: displayTitle }), _jsx("span", { className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${statusColor}`, children: docStatus }), documentId && _jsx(PresenceIndicator, { documentId: documentId }), isDirty && _jsx("span", { className: "text-xs text-amber-600 font-medium", children: "Unsaved changes" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("button", { onClick: () => setShowPreview((v) => !v), className: "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:text-[var(--foreground)]", title: showPreview ? 'Hide preview' : 'Show preview', children: [showPreview ? _jsx(EyeOff, { className: "h-4 w-4" }) : _jsx(Eye, { className: "h-4 w-4" }), "Preview"] }), !isNew && (_jsxs(_Fragment, { children: [_jsxs("button", { onClick: () => setShowVersions(true), className: "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:text-[var(--foreground)]", title: "Version history", children: [_jsx(Clock, { className: "h-4 w-4" }), "History"] }), _jsxs("button", { onClick: handleDuplicate, className: "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:text-[var(--foreground)]", title: "Duplicate this document", children: [_jsx(Copy, { className: "h-4 w-4" }), "Duplicate"] })] }))] })] }), _jsxs("div", { className: showPreview ? 'grid grid-cols-2 gap-6' : '', children: [_jsxs("div", { className: "space-y-6", children: [fields.length === 0 ? (_jsxs("div", { className: "flex flex-col items-center justify-center py-16 text-center rounded-lg border border-[var(--border)]", children: [_jsx("div", { className: "w-12 h-12 rounded-full bg-gray-100 flex items-center justify-center mb-4", children: _jsx(AlertTriangle, { className: "w-6 h-6 text-gray-400" }) }), _jsx("h3", { className: "text-sm font-medium text-gray-900 mb-1", children: "Collection schema not found" }), _jsx("p", { className: "text-sm text-gray-500", children: "No fields are defined for this collection." })] })) : (_jsxs("div", { className: "grid grid-cols-1 gap-6 lg:grid-cols-3", children: [_jsx("div", { className: "space-y-6 lg:col-span-2", children: mainFields.map((field) => (_jsx(FieldRenderer, { field: field, value: values[field.name], onChange: (val) => handleFieldChange(field.name, val) }, field.name))) }), _jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "rounded-lg border border-[var(--border)] bg-[var(--card)] p-4", children: [_jsx("h3", { className: "mb-4 font-semibold", children: "Status" }), _jsxs("div", { className: "space-y-3", children: [!isNew && docStatus === 'DRAFT' && (_jsx(Button, { variant: "primary", className: "w-full", onClick: handlePublish, loading: saving, children: "Publish" })), !isNew && docStatus === 'PUBLISHED' && (_jsx(Button, { variant: "secondary", className: "w-full", onClick: handleUnpublish, loading: saving, children: "Unpublish" }))] })] }), sidebarFields.length > 0 && (_jsxs("div", { className: "rounded-lg border border-[var(--border)] bg-[var(--card)] p-4", children: [_jsx("h3", { className: "mb-4 font-semibold", children: "Metadata" }), sidebarFields.map((field) => (_jsx("div", { className: "mb-4", children: _jsx(FieldRenderer, { field: field, value: values[field.name], onChange: (val) => handleFieldChange(field.name, val) }) }, field.name)))] })), _jsx(SEOPanel, { title: values[useAsTitleField] ?? values.title ?? '', slug: docSlug, content: htmlContent, seoData: seoData, onChange: setSeoData, siteUrl: config?.siteUrl }), hasLayout && (_jsxs("div", { className: "rounded-lg border border-[var(--border)] bg-[var(--card)] p-4", children: [_jsx("h3", { className: "mb-1 font-semibold", children: "Layout" }), _jsx("p", { className: "mb-4 text-xs text-[var(--muted-foreground)]", children: "Assign header/footer variants. Child pages inherit from ancestors." }), _jsx("div", { className: "space-y-4", children: layoutRegions.map((region) => (_jsxs("div", { children: [_jsx(RelationshipField, { label: region.label, value: layoutAssignments[region.name] ?? '', onChange: (val) => {
|
|
255
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("h1", { className: "text-2xl font-bold", children: displayTitle }), _jsx("span", { className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${statusColor}`, children: docStatus }), documentId && _jsx(PresenceIndicator, { documentId: documentId }), isDirty && _jsx("span", { className: "text-xs text-amber-600 font-medium", children: "Unsaved changes" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("button", { onClick: () => setShowPreview((v) => !v), className: "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:text-[var(--foreground)]", title: showPreview ? 'Hide preview' : 'Show preview', children: [showPreview ? _jsx(EyeOff, { className: "h-4 w-4" }) : _jsx(Eye, { className: "h-4 w-4" }), "Preview"] }), !isNew && (_jsxs(_Fragment, { children: [_jsxs("button", { onClick: () => setShowShareLink(true), className: "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:text-[var(--foreground)]", title: "Share a signed preview link for the current draft", children: [_jsx(Share2, { className: "h-4 w-4" }), "Share preview"] }), _jsxs("button", { onClick: () => setShowVersions(true), className: "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:text-[var(--foreground)]", title: "Version history", children: [_jsx(Clock, { className: "h-4 w-4" }), "History"] }), _jsxs("button", { onClick: handleDuplicate, className: "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:text-[var(--foreground)]", title: "Duplicate this document", children: [_jsx(Copy, { className: "h-4 w-4" }), "Duplicate"] })] }))] })] }), _jsxs("div", { className: showPreview ? 'grid grid-cols-2 gap-6' : '', children: [_jsxs("div", { className: "space-y-6", children: [fields.length === 0 ? (_jsxs("div", { className: "flex flex-col items-center justify-center py-16 text-center rounded-lg border border-[var(--border)]", children: [_jsx("div", { className: "w-12 h-12 rounded-full bg-gray-100 flex items-center justify-center mb-4", children: _jsx(AlertTriangle, { className: "w-6 h-6 text-gray-400" }) }), _jsx("h3", { className: "text-sm font-medium text-gray-900 mb-1", children: "Collection schema not found" }), _jsx("p", { className: "text-sm text-gray-500", children: "No fields are defined for this collection." })] })) : (_jsxs("div", { className: "grid grid-cols-1 gap-6 lg:grid-cols-3", children: [_jsx("div", { className: "space-y-6 lg:col-span-2", children: mainFields.map((field) => (_jsx(FieldRenderer, { field: field, value: values[field.name], onChange: (val) => handleFieldChange(field.name, val) }, field.name))) }), _jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "rounded-lg border border-[var(--border)] bg-[var(--card)] p-4", children: [_jsx("h3", { className: "mb-4 font-semibold", children: "Status" }), _jsxs("div", { className: "space-y-3", children: [!isNew && docStatus === 'DRAFT' && (_jsx(Button, { variant: "primary", className: "w-full", onClick: handlePublish, loading: saving, children: "Publish" })), !isNew && docStatus === 'PUBLISHED' && (_jsx(Button, { variant: "secondary", className: "w-full", onClick: handleUnpublish, loading: saving, children: "Unpublish" })), !isNew && (_jsxs("button", { onClick: () => setShowSchedule(true), className: "inline-flex w-full items-center justify-center gap-1.5 rounded-md border border-[var(--border)] bg-white px-3 py-1.5 text-sm font-medium text-gray-700 hover:bg-gray-50", children: [_jsx(Calendar, { className: "h-4 w-4" }), scheduledAt || scheduledUnpublishAt ? 'Reschedule' : 'Schedule'] })), !isNew && (scheduledAt || scheduledUnpublishAt) && (_jsxs("div", { className: "space-y-1 rounded-md border border-blue-100 bg-blue-50 px-3 py-2 text-xs text-blue-900", children: [scheduledAt && (_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(Calendar, { className: "h-3.5 w-3.5" }), "Publishes ", new Date(scheduledAt).toLocaleString()] })), scheduledUnpublishAt && (_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(XCircle, { className: "h-3.5 w-3.5" }), "Unpublishes ", new Date(scheduledUnpublishAt).toLocaleString()] }))] }))] })] }), sidebarFields.length > 0 && (_jsxs("div", { className: "rounded-lg border border-[var(--border)] bg-[var(--card)] p-4", children: [_jsx("h3", { className: "mb-4 font-semibold", children: "Metadata" }), sidebarFields.map((field) => (_jsx("div", { className: "mb-4", children: _jsx(FieldRenderer, { field: field, value: values[field.name], onChange: (val) => handleFieldChange(field.name, val) }) }, field.name)))] })), _jsx(SEOPanel, { title: values[useAsTitleField] ?? values.title ?? '', slug: docSlug, content: htmlContent, seoData: seoData, onChange: setSeoData, siteUrl: config?.siteUrl }), hasLayout && (_jsxs("div", { className: "rounded-lg border border-[var(--border)] bg-[var(--card)] p-4", children: [_jsx("h3", { className: "mb-1 font-semibold", children: "Layout" }), _jsx("p", { className: "mb-4 text-xs text-[var(--muted-foreground)]", children: "Assign header/footer variants. Child pages inherit from ancestors." }), _jsx("div", { className: "space-y-4", children: layoutRegions.map((region) => (_jsxs("div", { children: [_jsx(RelationshipField, { label: region.label, value: layoutAssignments[region.name] ?? '', onChange: (val) => {
|
|
248
256
|
setLayoutAssignments((prev) => {
|
|
249
257
|
const next = { ...prev };
|
|
250
258
|
if (val && typeof val === 'string') {
|
|
@@ -267,6 +275,10 @@ export function DocumentEdit({ collectionSlug, documentId, config, onNavigate, }
|
|
|
267
275
|
const restoredData = data;
|
|
268
276
|
setValues(restoredData);
|
|
269
277
|
setInitialValues(restoredData);
|
|
270
|
-
} }))
|
|
278
|
+
} })), !isNew && documentId && (_jsx(SchedulePublishDialog, { collectionSlug: collectionSlug, documentId: documentId, scheduledAt: scheduledAt, scheduledUnpublishAt: scheduledUnpublishAt, open: showSchedule, onClose: () => setShowSchedule(false), onScheduled: (next) => {
|
|
279
|
+
setDocStatus(next.status);
|
|
280
|
+
setScheduledAt(next.scheduledAt);
|
|
281
|
+
setScheduledUnpublishAt(next.scheduledUnpublishAt);
|
|
282
|
+
} })), !isNew && documentId && (_jsx(SharePreviewLinkDialog, { collectionSlug: collectionSlug, documentId: documentId, documentSlug: docSlug, siteUrl: config?.siteUrl, urlPrefix: collection?.urlPrefix ?? collectionSlug, open: showShareLink, onClose: () => setShowShareLink(false) }))] }));
|
|
271
283
|
}
|
|
272
284
|
//# sourceMappingURL=DocumentEdit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentEdit.js","sourceRoot":"","sources":["../../src/views/DocumentEdit.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DocumentEdit.js","sourceRoot":"","sources":["../../src/views/DocumentEdit.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuate-media/cms-admin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/actuate-media/actuatecms.git",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"tailwindcss": "^4.0.0",
|
|
72
72
|
"typescript": "^5.7.0",
|
|
73
73
|
"vitest": "^3.0.0",
|
|
74
|
-
"@actuate-media/cms-core": "0.
|
|
74
|
+
"@actuate-media/cms-core": "0.19.0"
|
|
75
75
|
},
|
|
76
76
|
"scripts": {
|
|
77
77
|
"build": "tsc --project tsconfig.json && npx @tailwindcss/cli -i src/styles/build-input.css -o dist/actuate-admin.css --minify",
|
package/src/AdminRoot.tsx
CHANGED
|
@@ -13,6 +13,7 @@ import { Forms } from './views/Forms.js'
|
|
|
13
13
|
import { FormEditor } from './views/FormEditor.js'
|
|
14
14
|
import { FormSubmissions } from './views/FormSubmissions.js'
|
|
15
15
|
import { Users } from './views/Users.js'
|
|
16
|
+
import { ApiKeys } from './views/ApiKeys.js'
|
|
16
17
|
import { SEO } from './views/SEO.js'
|
|
17
18
|
import { ScriptTags } from './views/ScriptTags.js'
|
|
18
19
|
import { ScriptTagEditor } from './views/ScriptTagEditor.js'
|
|
@@ -218,6 +219,10 @@ function AdminShell({
|
|
|
218
219
|
return <Users onNavigate={navigate} />
|
|
219
220
|
}
|
|
220
221
|
|
|
222
|
+
if (matchRoute('/api-keys')) {
|
|
223
|
+
return <ApiKeys onNavigate={navigate} />
|
|
224
|
+
}
|
|
225
|
+
|
|
221
226
|
if (matchRoute('/settings')) {
|
|
222
227
|
return <Settings onNavigate={navigate} config={config} />
|
|
223
228
|
}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { useEffect, useState } from 'react'
|
|
4
|
+
import { Calendar, Clock, Loader2, X } from 'lucide-react'
|
|
5
|
+
import { toast } from 'sonner'
|
|
6
|
+
import { cmsApi } from '../lib/api.js'
|
|
7
|
+
|
|
8
|
+
export interface SchedulePublishDialogProps {
|
|
9
|
+
collectionSlug: string
|
|
10
|
+
documentId: string
|
|
11
|
+
/** Existing scheduled publish time, if any. */
|
|
12
|
+
scheduledAt?: string | null
|
|
13
|
+
/** Existing scheduled unpublish time, if any. */
|
|
14
|
+
scheduledUnpublishAt?: string | null
|
|
15
|
+
open: boolean
|
|
16
|
+
onClose: () => void
|
|
17
|
+
/** Called with the updated schedule fields after a successful save. */
|
|
18
|
+
onScheduled?: (next: {
|
|
19
|
+
status: string
|
|
20
|
+
scheduledAt: string | null
|
|
21
|
+
scheduledUnpublishAt: string | null
|
|
22
|
+
}) => void
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Convert a Date or ISO string to the `YYYY-MM-DDTHH:mm` shape that the
|
|
27
|
+
* `<input type="datetime-local">` element expects, in the user's local
|
|
28
|
+
* timezone (the input is timezone-naive but we present + parse it as local).
|
|
29
|
+
*/
|
|
30
|
+
function toLocalDateTimeInput(value: string | Date | null | undefined): string {
|
|
31
|
+
if (!value) return ''
|
|
32
|
+
const d = typeof value === 'string' ? new Date(value) : value
|
|
33
|
+
if (Number.isNaN(d.getTime())) return ''
|
|
34
|
+
const pad = (n: number) => String(n).padStart(2, '0')
|
|
35
|
+
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}T${pad(d.getHours())}:${pad(d.getMinutes())}`
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** Round "now + 1 hour" to the next quarter-hour for a friendly default. */
|
|
39
|
+
function defaultScheduleTime(): string {
|
|
40
|
+
const d = new Date(Date.now() + 60 * 60 * 1000)
|
|
41
|
+
d.setMinutes(Math.ceil(d.getMinutes() / 15) * 15, 0, 0)
|
|
42
|
+
return toLocalDateTimeInput(d)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function SchedulePublishDialog({
|
|
46
|
+
collectionSlug,
|
|
47
|
+
documentId,
|
|
48
|
+
scheduledAt,
|
|
49
|
+
scheduledUnpublishAt,
|
|
50
|
+
open,
|
|
51
|
+
onClose,
|
|
52
|
+
onScheduled,
|
|
53
|
+
}: SchedulePublishDialogProps) {
|
|
54
|
+
const [publishAt, setPublishAt] = useState('')
|
|
55
|
+
const [unpublishAt, setUnpublishAt] = useState('')
|
|
56
|
+
const [includeUnpublish, setIncludeUnpublish] = useState(false)
|
|
57
|
+
const [saving, setSaving] = useState(false)
|
|
58
|
+
const [cancelling, setCancelling] = useState(false)
|
|
59
|
+
|
|
60
|
+
const hasExistingSchedule = Boolean(scheduledAt || scheduledUnpublishAt)
|
|
61
|
+
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
if (!open) return
|
|
64
|
+
setPublishAt(scheduledAt ? toLocalDateTimeInput(scheduledAt) : defaultScheduleTime())
|
|
65
|
+
setUnpublishAt(scheduledUnpublishAt ? toLocalDateTimeInput(scheduledUnpublishAt) : '')
|
|
66
|
+
setIncludeUnpublish(Boolean(scheduledUnpublishAt))
|
|
67
|
+
}, [open, scheduledAt, scheduledUnpublishAt])
|
|
68
|
+
|
|
69
|
+
async function handleSave() {
|
|
70
|
+
if (!publishAt && !(includeUnpublish && unpublishAt)) {
|
|
71
|
+
toast.error('Pick a publish or unpublish time')
|
|
72
|
+
return
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// datetime-local is parsed by the browser as local time; new Date() on
|
|
76
|
+
// that string respects the user's timezone and serialises to a UTC
|
|
77
|
+
// ISO string the server can compare against `Date.now()` cleanly.
|
|
78
|
+
const publishDate = publishAt ? new Date(publishAt) : null
|
|
79
|
+
const unpublishDate = includeUnpublish && unpublishAt ? new Date(unpublishAt) : null
|
|
80
|
+
|
|
81
|
+
if (publishDate && publishDate.getTime() <= Date.now()) {
|
|
82
|
+
toast.error('Publish time must be in the future')
|
|
83
|
+
return
|
|
84
|
+
}
|
|
85
|
+
if (unpublishDate && unpublishDate.getTime() <= Date.now()) {
|
|
86
|
+
toast.error('Unpublish time must be in the future')
|
|
87
|
+
return
|
|
88
|
+
}
|
|
89
|
+
if (publishDate && unpublishDate && unpublishDate <= publishDate) {
|
|
90
|
+
toast.error('Unpublish time must be after publish time')
|
|
91
|
+
return
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
setSaving(true)
|
|
95
|
+
const res = await cmsApi<any>(`/collections/${collectionSlug}/${documentId}/schedule`, {
|
|
96
|
+
method: 'POST',
|
|
97
|
+
body: JSON.stringify({
|
|
98
|
+
scheduledAt: publishDate ? publishDate.toISOString() : null,
|
|
99
|
+
scheduledUnpublishAt: unpublishDate ? unpublishDate.toISOString() : null,
|
|
100
|
+
}),
|
|
101
|
+
})
|
|
102
|
+
setSaving(false)
|
|
103
|
+
if (res.error) {
|
|
104
|
+
toast.error(res.error)
|
|
105
|
+
return
|
|
106
|
+
}
|
|
107
|
+
toast.success(publishDate ? 'Publish scheduled' : 'Unpublish scheduled')
|
|
108
|
+
onScheduled?.({
|
|
109
|
+
status: res.data?.status ?? 'SCHEDULED',
|
|
110
|
+
scheduledAt: res.data?.scheduledAt ?? (publishDate ? publishDate.toISOString() : null),
|
|
111
|
+
scheduledUnpublishAt:
|
|
112
|
+
res.data?.scheduledUnpublishAt ?? (unpublishDate ? unpublishDate.toISOString() : null),
|
|
113
|
+
})
|
|
114
|
+
onClose()
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async function handleCancelSchedule() {
|
|
118
|
+
setCancelling(true)
|
|
119
|
+
const res = await cmsApi<any>(`/collections/${collectionSlug}/${documentId}/schedule`, {
|
|
120
|
+
method: 'DELETE',
|
|
121
|
+
})
|
|
122
|
+
setCancelling(false)
|
|
123
|
+
if (res.error) {
|
|
124
|
+
toast.error(res.error)
|
|
125
|
+
return
|
|
126
|
+
}
|
|
127
|
+
toast.success('Schedule cancelled')
|
|
128
|
+
onScheduled?.({
|
|
129
|
+
status: res.data?.status ?? 'DRAFT',
|
|
130
|
+
scheduledAt: null,
|
|
131
|
+
scheduledUnpublishAt: null,
|
|
132
|
+
})
|
|
133
|
+
onClose()
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (!open) return null
|
|
137
|
+
|
|
138
|
+
return (
|
|
139
|
+
<div className="fixed inset-0 z-50 flex items-center justify-center p-4">
|
|
140
|
+
<div className="fixed inset-0 bg-black/40" onClick={onClose} />
|
|
141
|
+
<div className="relative w-full max-w-md rounded-lg bg-white shadow-xl">
|
|
142
|
+
<div className="flex items-center justify-between border-b border-gray-200 px-4 py-3">
|
|
143
|
+
<div className="flex items-center gap-2">
|
|
144
|
+
<Calendar className="h-5 w-5 text-gray-600" />
|
|
145
|
+
<h2 className="text-lg font-semibold text-gray-900">Schedule publishing</h2>
|
|
146
|
+
</div>
|
|
147
|
+
<button
|
|
148
|
+
onClick={onClose}
|
|
149
|
+
className="rounded-lg p-1.5 transition-colors hover:bg-gray-100"
|
|
150
|
+
>
|
|
151
|
+
<X className="h-5 w-5 text-gray-500" />
|
|
152
|
+
</button>
|
|
153
|
+
</div>
|
|
154
|
+
|
|
155
|
+
<div className="space-y-4 px-4 py-4">
|
|
156
|
+
<div className="space-y-1.5">
|
|
157
|
+
<label className="text-sm font-medium text-gray-700">Publish at</label>
|
|
158
|
+
<div className="relative">
|
|
159
|
+
<Clock className="pointer-events-none absolute left-2.5 top-2.5 h-4 w-4 text-gray-400" />
|
|
160
|
+
<input
|
|
161
|
+
type="datetime-local"
|
|
162
|
+
value={publishAt}
|
|
163
|
+
onChange={(e) => setPublishAt(e.target.value)}
|
|
164
|
+
min={toLocalDateTimeInput(new Date(Date.now() + 60 * 1000))}
|
|
165
|
+
className="w-full rounded-md border border-gray-300 bg-white py-2 pl-9 pr-3 text-sm focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500"
|
|
166
|
+
/>
|
|
167
|
+
</div>
|
|
168
|
+
<p className="text-xs text-gray-500">
|
|
169
|
+
The document will move from DRAFT to PUBLISHED at this time (your local timezone).
|
|
170
|
+
</p>
|
|
171
|
+
</div>
|
|
172
|
+
|
|
173
|
+
<label className="flex items-center gap-2 text-sm text-gray-700">
|
|
174
|
+
<input
|
|
175
|
+
type="checkbox"
|
|
176
|
+
checked={includeUnpublish}
|
|
177
|
+
onChange={(e) => setIncludeUnpublish(e.target.checked)}
|
|
178
|
+
className="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500"
|
|
179
|
+
/>
|
|
180
|
+
Also schedule an unpublish
|
|
181
|
+
</label>
|
|
182
|
+
|
|
183
|
+
{includeUnpublish && (
|
|
184
|
+
<div className="space-y-1.5">
|
|
185
|
+
<label className="text-sm font-medium text-gray-700">Unpublish at</label>
|
|
186
|
+
<div className="relative">
|
|
187
|
+
<Clock className="pointer-events-none absolute left-2.5 top-2.5 h-4 w-4 text-gray-400" />
|
|
188
|
+
<input
|
|
189
|
+
type="datetime-local"
|
|
190
|
+
value={unpublishAt}
|
|
191
|
+
onChange={(e) => setUnpublishAt(e.target.value)}
|
|
192
|
+
min={publishAt || toLocalDateTimeInput(new Date(Date.now() + 60 * 1000))}
|
|
193
|
+
className="w-full rounded-md border border-gray-300 bg-white py-2 pl-9 pr-3 text-sm focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500"
|
|
194
|
+
/>
|
|
195
|
+
</div>
|
|
196
|
+
</div>
|
|
197
|
+
)}
|
|
198
|
+
</div>
|
|
199
|
+
|
|
200
|
+
<div className="flex items-center justify-between gap-2 border-t border-gray-200 px-4 py-3">
|
|
201
|
+
{hasExistingSchedule ? (
|
|
202
|
+
<button
|
|
203
|
+
onClick={handleCancelSchedule}
|
|
204
|
+
disabled={cancelling || saving}
|
|
205
|
+
className="inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-red-700 hover:bg-red-50 disabled:opacity-50"
|
|
206
|
+
>
|
|
207
|
+
{cancelling ? (
|
|
208
|
+
<Loader2 className="h-4 w-4 animate-spin" />
|
|
209
|
+
) : (
|
|
210
|
+
<X className="h-4 w-4" />
|
|
211
|
+
)}
|
|
212
|
+
Cancel schedule
|
|
213
|
+
</button>
|
|
214
|
+
) : (
|
|
215
|
+
<span />
|
|
216
|
+
)}
|
|
217
|
+
<div className="flex items-center gap-2">
|
|
218
|
+
<button
|
|
219
|
+
onClick={onClose}
|
|
220
|
+
className="rounded-md px-3 py-1.5 text-sm text-gray-700 hover:bg-gray-100"
|
|
221
|
+
>
|
|
222
|
+
Close
|
|
223
|
+
</button>
|
|
224
|
+
<button
|
|
225
|
+
onClick={handleSave}
|
|
226
|
+
disabled={saving || cancelling}
|
|
227
|
+
className="inline-flex items-center gap-1.5 rounded-md bg-blue-600 px-3 py-1.5 text-sm font-medium text-white hover:bg-blue-700 disabled:opacity-50"
|
|
228
|
+
>
|
|
229
|
+
{saving ? (
|
|
230
|
+
<Loader2 className="h-4 w-4 animate-spin" />
|
|
231
|
+
) : (
|
|
232
|
+
<Calendar className="h-4 w-4" />
|
|
233
|
+
)}
|
|
234
|
+
{hasExistingSchedule ? 'Reschedule' : 'Schedule'}
|
|
235
|
+
</button>
|
|
236
|
+
</div>
|
|
237
|
+
</div>
|
|
238
|
+
</div>
|
|
239
|
+
</div>
|
|
240
|
+
)
|
|
241
|
+
}
|