mirror of
https://github.com/documenso/documenso.git
synced 2026-07-11 13:35:20 +10:00
8b171c9a30
## Description Update docs to use the term "Editor" instead of "Authoring" to reduce confusion.
301 lines
8.5 KiB
Plaintext
301 lines
8.5 KiB
Plaintext
---
|
|
title: V1 Editor
|
|
description: Embed V1 document and template creation directly in your application.
|
|
---
|
|
|
|
import { Callout } from 'fumadocs-ui/components/callout';
|
|
|
|
V1 editor components allow your users to create and edit documents and templates using the V1 Documents and Templates API without leaving your application.
|
|
|
|
<Callout type="warn">
|
|
Embedded editor is included with [Enterprise](https://documen.so/enterprise-cta) plans. It is
|
|
also available as a paid add-on for the [Platform Plan](https://documen.so/platform-cta-pricing).
|
|
Contact sales for access.
|
|
</Callout>
|
|
|
|
## Components
|
|
|
|
The SDK provides four V1 editor components:
|
|
|
|
| Component | Purpose |
|
|
| ----------------------- | ----------------------- |
|
|
| `EmbedCreateDocumentV1` | Create new documents |
|
|
| `EmbedCreateTemplateV1` | Create new templates |
|
|
| `EmbedUpdateDocumentV1` | Edit existing documents |
|
|
| `EmbedUpdateTemplateV1` | Edit existing templates |
|
|
|
|
|
|
---
|
|
|
|
## Presign Tokens
|
|
|
|
All editor components require a **presign token** for authentication. See the [Editor overview](/docs/developers/embedding/editor) for details on obtaining presign tokens.
|
|
|
|
|
|
<Callout type="warn">
|
|
A presigned token is NOT an API token
|
|
</Callout>
|
|
|
|
---
|
|
|
|
## Creating Documents
|
|
|
|
```jsx
|
|
import { EmbedCreateDocumentV1 } from '@documenso/embed-react';
|
|
|
|
const DocumentCreator = ({ presignToken }) => {
|
|
return (
|
|
<div style={{ height: '800px', width: '100%' }}>
|
|
<EmbedCreateDocumentV1
|
|
presignToken={presignToken}
|
|
externalId="order-12345"
|
|
onDocumentCreated={(data) => {
|
|
console.log('Document created:', data.documentId);
|
|
console.log('External ID:', data.externalId);
|
|
}}
|
|
/>
|
|
</div>
|
|
);
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
## Creating Templates
|
|
|
|
```jsx
|
|
import { EmbedCreateTemplateV1 } from '@documenso/embed-react';
|
|
|
|
const TemplateCreator = ({ presignToken }) => {
|
|
return (
|
|
<div style={{ height: '800px', width: '100%' }}>
|
|
<EmbedCreateTemplateV1
|
|
presignToken={presignToken}
|
|
externalId="template-12345"
|
|
onTemplateCreated={(data) => {
|
|
console.log('Template created:', data.templateId);
|
|
}}
|
|
/>
|
|
</div>
|
|
);
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
## Editing Documents
|
|
|
|
```jsx
|
|
import { EmbedUpdateDocumentV1 } from '@documenso/embed-react';
|
|
|
|
const DocumentEditor = ({ presignToken, documentId }) => {
|
|
return (
|
|
<div style={{ height: '800px', width: '100%' }}>
|
|
<EmbedUpdateDocumentV1
|
|
presignToken={presignToken}
|
|
documentId={documentId}
|
|
externalId="order-12345"
|
|
onDocumentUpdated={(data) => {
|
|
console.log('Document updated:', data.documentId);
|
|
}}
|
|
/>
|
|
</div>
|
|
);
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
## Editing Templates
|
|
|
|
```jsx
|
|
import { EmbedUpdateTemplateV1 } from '@documenso/embed-react';
|
|
|
|
const TemplateEditor = ({ presignToken, templateId }) => {
|
|
return (
|
|
<div style={{ height: '800px', width: '100%' }}>
|
|
<EmbedUpdateTemplateV1
|
|
presignToken={presignToken}
|
|
templateId={templateId}
|
|
externalId="template-12345"
|
|
onTemplateUpdated={(data) => {
|
|
console.log('Template updated:', data.templateId);
|
|
}}
|
|
/>
|
|
</div>
|
|
);
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
## Props
|
|
|
|
### All Editor Components
|
|
|
|
| Prop | Type | Required | Description |
|
|
| ------------------ | --------- | -------- | -------------------------------------------------------- |
|
|
| `presignToken` | `string` | Yes | Authentication token from your backend |
|
|
| `externalId` | `string` | No | Your reference ID to link with the document or template |
|
|
| `host` | `string` | No | Custom host URL. Defaults to `https://app.documenso.com` |
|
|
| `css` | `string` | No | Custom CSS string (Platform Plan) |
|
|
| `cssVars` | `object` | No | [CSS variable](/docs/developers/embedding/css-variables) overrides (Platform Plan) |
|
|
| `darkModeDisabled` | `boolean` | No | Disable dark mode (Platform Plan) |
|
|
| `language` | `string` | No | Set the UI language. See [Supported Languages](https://github.com/documenso/documenso/tree/main/packages/lib/constants/locales.ts) |
|
|
| `className` | `string` | No | CSS class for the iframe |
|
|
| `features` | `object` | No | Feature toggles for the editor experience |
|
|
|
|
### Update Components Only
|
|
|
|
| Prop | Type | Required | Description |
|
|
| ---------------- | --------- | -------- | ---------------------------------------------------------- |
|
|
| `documentId` | `number` | Yes | The document ID to edit (for document update component) |
|
|
| `templateId` | `number` | Yes | The template ID to edit (for template update component) |
|
|
| `onlyEditFields` | `boolean` | No | Restrict editing to fields only, skipping recipient config |
|
|
|
|
---
|
|
|
|
## Feature Toggles
|
|
|
|
Customize what options are available in the editor experience:
|
|
|
|
```jsx
|
|
<EmbedCreateDocumentV1
|
|
presignToken={presignToken}
|
|
features={{
|
|
allowConfigureSignatureTypes: true,
|
|
allowConfigureLanguage: true,
|
|
allowConfigureDateFormat: true,
|
|
allowConfigureTimezone: true,
|
|
allowConfigureRedirectUrl: true,
|
|
allowConfigureCommunication: true,
|
|
}}
|
|
/>
|
|
```
|
|
|
|
---
|
|
|
|
## Event Callbacks
|
|
|
|
All creation callbacks receive:
|
|
|
|
| Field | Type | Description |
|
|
| ---------------------------- | -------- | --------------------------------------- |
|
|
| `documentId` or `templateId` | `number` | The ID of the created or updated item |
|
|
| `externalId` | `string` | Your external reference ID, if provided |
|
|
|
|
---
|
|
|
|
## Field-Only Editing
|
|
|
|
Restrict users to editing fields only, skipping recipient configuration:
|
|
|
|
```jsx
|
|
<EmbedUpdateDocumentV1
|
|
presignToken={presignToken}
|
|
documentId={123}
|
|
onlyEditFields={true}
|
|
onDocumentUpdated={(data) => {
|
|
console.log('Fields updated:', data.documentId);
|
|
}}
|
|
/>
|
|
```
|
|
|
|
---
|
|
|
|
## Complete Integration Example
|
|
|
|
This example shows a full workflow where users create a document and then edit it:
|
|
|
|
```tsx
|
|
import { useState } from 'react';
|
|
|
|
import { EmbedCreateDocumentV1, EmbedUpdateDocumentV1 } from '@documenso/embed-react';
|
|
|
|
const DocumentManager = ({ presignToken }) => {
|
|
const [documentId, setDocumentId] = useState(null);
|
|
const [mode, setMode] = useState('create');
|
|
|
|
if (mode === 'success') {
|
|
return (
|
|
<div>
|
|
<h2>Document updated successfully</h2>
|
|
<button
|
|
onClick={() => {
|
|
setDocumentId(null);
|
|
setMode('create');
|
|
}}
|
|
>
|
|
Create Another Document
|
|
</button>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
if (mode === 'edit' && documentId) {
|
|
return (
|
|
<div style={{ height: '800px', width: '100%' }}>
|
|
<button onClick={() => setMode('create')}>Back to Create</button>
|
|
<EmbedUpdateDocumentV1
|
|
presignToken={presignToken}
|
|
documentId={documentId}
|
|
onDocumentUpdated={(data) => {
|
|
console.log('Document updated:', data.documentId);
|
|
setMode('success');
|
|
}}
|
|
/>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<div style={{ height: '800px', width: '100%' }}>
|
|
<EmbedCreateDocumentV1
|
|
presignToken={presignToken}
|
|
features={{
|
|
allowConfigureSignatureTypes: true,
|
|
allowConfigureLanguage: true,
|
|
}}
|
|
onDocumentCreated={(data) => {
|
|
console.log('Document created:', data.documentId);
|
|
setDocumentId(data.documentId);
|
|
setMode('edit');
|
|
}}
|
|
/>
|
|
</div>
|
|
);
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
## Additional Props
|
|
|
|
Pass extra props to the iframe for testing experimental features:
|
|
|
|
```jsx
|
|
<EmbedCreateDocumentV1
|
|
presignToken="YOUR_PRESIGN_TOKEN"
|
|
additionalProps={{
|
|
experimentalFeature: true,
|
|
customSetting: 'value',
|
|
}}
|
|
/>
|
|
```
|
|
|
|
<Callout type="info">
|
|
Presign tokens expire after 1 hour by default. You can customize this duration based on your
|
|
security requirements. Generate fresh tokens for each session and avoid caching them on the client
|
|
side.
|
|
</Callout>
|
|
|
|
---
|
|
|
|
## See Also
|
|
|
|
- [Embedding Overview](/docs/developers/embedding) - Signing embed concepts and props
|
|
- [V2 Editor](/docs/developers/embedding/editor/v2) - V2 envelope editor
|
|
- [CSS Variables](/docs/developers/embedding/css-variables) - Customize appearance
|
|
- [Documents API](/docs/developers/api/documents) - Create documents via API
|
|
- [Templates API](/docs/developers/api/templates) - Create templates via API
|