@actuate-media/cms-admin 0.76.6 → 0.77.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 (41) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/__tests__/lib/preview-link.test.d.ts +2 -0
  3. package/dist/__tests__/lib/preview-link.test.d.ts.map +1 -0
  4. package/dist/__tests__/lib/preview-link.test.js +27 -0
  5. package/dist/__tests__/lib/preview-link.test.js.map +1 -0
  6. package/dist/__tests__/views/editor-top-bar.render.test.js +19 -0
  7. package/dist/__tests__/views/editor-top-bar.render.test.js.map +1 -1
  8. package/dist/__tests__/views/form-editor.render.test.d.ts +2 -0
  9. package/dist/__tests__/views/form-editor.render.test.d.ts.map +1 -0
  10. package/dist/__tests__/views/form-editor.render.test.js +146 -0
  11. package/dist/__tests__/views/form-editor.render.test.js.map +1 -0
  12. package/dist/actuate-admin.css +1 -1
  13. package/dist/lib/forms-service.d.ts +15 -3
  14. package/dist/lib/forms-service.d.ts.map +1 -1
  15. package/dist/lib/forms-service.js.map +1 -1
  16. package/dist/lib/preview-link.d.ts +7 -0
  17. package/dist/lib/preview-link.d.ts.map +1 -1
  18. package/dist/lib/preview-link.js +16 -0
  19. package/dist/lib/preview-link.js.map +1 -1
  20. package/dist/views/FormEditor.d.ts.map +1 -1
  21. package/dist/views/FormEditor.js +211 -116
  22. package/dist/views/FormEditor.js.map +1 -1
  23. package/dist/views/page-editor/EditorTopBar.d.ts.map +1 -1
  24. package/dist/views/page-editor/EditorTopBar.js +6 -1
  25. package/dist/views/page-editor/EditorTopBar.js.map +1 -1
  26. package/dist/views/page-editor/PageSectionEditor.d.ts.map +1 -1
  27. package/dist/views/page-editor/PageSectionEditor.js +14 -1
  28. package/dist/views/page-editor/PageSectionEditor.js.map +1 -1
  29. package/dist/views/post-editor/PostSectionEditor.d.ts.map +1 -1
  30. package/dist/views/post-editor/PostSectionEditor.js +11 -1
  31. package/dist/views/post-editor/PostSectionEditor.js.map +1 -1
  32. package/package.json +9 -9
  33. package/src/__tests__/lib/preview-link.test.ts +39 -0
  34. package/src/__tests__/views/editor-top-bar.render.test.tsx +22 -0
  35. package/src/__tests__/views/form-editor.render.test.tsx +186 -0
  36. package/src/lib/forms-service.ts +16 -1
  37. package/src/lib/preview-link.ts +21 -0
  38. package/src/views/FormEditor.tsx +655 -510
  39. package/src/views/page-editor/EditorTopBar.tsx +11 -4
  40. package/src/views/page-editor/PageSectionEditor.tsx +18 -0
  41. package/src/views/post-editor/PostSectionEditor.tsx +15 -0
@@ -15,6 +15,7 @@ import type {
15
15
  FormDefinition,
16
16
  FormSchemaVersion,
17
17
  FormField,
18
+ FormAnalyticsConfig,
18
19
  FormNotificationSettings,
19
20
  FormEmbedSettings,
20
21
  FormWebhookConfig,
@@ -35,6 +36,7 @@ export type {
35
36
  FormFieldType,
36
37
  FormFieldOption,
37
38
  FieldValidationRules,
39
+ FormAnalyticsConfig,
38
40
  FormNotificationSettings,
39
41
  FormEmbedSettings,
40
42
  FormWebhookConfig,
@@ -132,6 +134,9 @@ export interface CreateFormPayload {
132
134
  status?: FormStatus
133
135
  template?: string
134
136
  fields?: FormField[]
137
+ successMessage?: string
138
+ redirectUrl?: string
139
+ analytics?: FormAnalyticsConfig
135
140
  }
136
141
 
137
142
  export async function createForm(
@@ -144,9 +149,19 @@ export async function createForm(
144
149
  return { data: res.data, error: res.error }
145
150
  }
146
151
 
152
+ /** Patch shape accepted by `PATCH /forms/:id` (cms-core `UpdateFormInput`). */
153
+ export interface UpdateFormPayload {
154
+ name?: string
155
+ description?: string
156
+ status?: FormStatus
157
+ successMessage?: string
158
+ redirectUrl?: string
159
+ analytics?: FormAnalyticsConfig
160
+ }
161
+
147
162
  export async function updateForm(
148
163
  id: string,
149
- payload: Partial<Pick<FormDefinition, 'name' | 'slug' | 'description' | 'status'>>,
164
+ payload: UpdateFormPayload,
150
165
  ): Promise<{ data?: FormDefinition; error?: string }> {
151
166
  const res = await cmsApi<FormDefinition>(`/forms/${encodeURIComponent(id)}`, {
152
167
  method: 'PATCH',
@@ -55,6 +55,27 @@ export function buildPublicPreviewUrl({
55
55
  return `${base}${path}?preview=${encodeURIComponent(token)}`
56
56
  }
57
57
 
58
+ /**
59
+ * Build the public **live** URL for a document — the same path as
60
+ * {@link buildPublicPreviewUrl} but WITHOUT a preview token, so it opens the
61
+ * published version rather than a draft. Home-style slugs (`home` / `index` /
62
+ * empty) collapse to `/`, matching how the resolver serves the site root.
63
+ */
64
+ export function buildPublicUrl({
65
+ siteUrl,
66
+ urlPrefix,
67
+ slug,
68
+ }: Omit<PublicPreviewUrlParts, 'token'>): string {
69
+ const base = (siteUrl ?? '').replace(/\/+$/, '')
70
+ const cleanSlug = slug.replace(/^\/+|\/+$/g, '')
71
+ if (cleanSlug === '' || cleanSlug === 'home' || cleanSlug === 'index') {
72
+ return base || '/'
73
+ }
74
+ const prefix = (urlPrefix ?? '').replace(/^\/+|\/+$/g, '')
75
+ const path = prefix ? `/${prefix}/${cleanSlug}` : `/${cleanSlug}`
76
+ return `${base}${path}`
77
+ }
78
+
58
79
  /** Resolve the public site origin: explicit config first, else the current tab's origin. */
59
80
  export function resolveSiteUrl(configSiteUrl?: string | null): string {
60
81
  if (configSiteUrl && configSiteUrl.trim()) return configSiteUrl.trim()