{/* Main Header Bar */}
@@ -114,6 +119,13 @@ export const DocumentSigningMobileWidget = () => {
{isExpanded && (
+
+ {!hidePoweredBy && (
+
+ Powered by
+
+
+ )}
)}
diff --git a/apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx b/apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
index 6b1a695ff..5b0c30102 100644
--- a/apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
+++ b/apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
@@ -22,7 +22,9 @@ import { SignFieldNameDialog } from '~/components/dialogs/sign-field-name-dialog
import { SignFieldNumberDialog } from '~/components/dialogs/sign-field-number-dialog';
import { SignFieldSignatureDialog } from '~/components/dialogs/sign-field-signature-dialog';
import { SignFieldTextDialog } from '~/components/dialogs/sign-field-text-dialog';
+import { useEmbedSigningContext } from '~/components/embed/embed-signing-context';
+import { BrandingLogo } from '../branding-logo';
import { DocumentSigningAttachmentsPopover } from '../document-signing/document-signing-attachments-popover';
import { EnvelopeItemSelector } from '../envelope-editor/envelope-file-selector';
import EnvelopeSignerForm from '../envelope-signing/envelope-signer-form';
@@ -48,6 +50,13 @@ export const DocumentSigningPageViewV2 = () => {
selectedAssistantRecipientFields,
} = useRequiredEnvelopeSigningContext();
+ const {
+ isEmbed = false,
+ allowDocumentRejection = true,
+ hidePoweredBy = true,
+ onDocumentRejected,
+ } = useEmbedSigningContext() || {};
+
/**
* The total remaining fields remaining for the current recipient or selected assistant recipient.
*
@@ -77,7 +86,7 @@ export const DocumentSigningPageViewV2 = () => {
{/* Main Content Area */}
{/* Left Section - Step Navigation */}
-
+
{match(recipient.role)
@@ -107,7 +116,7 @@ export const DocumentSigningPageViewV2 = () => {
/>
-
@@ -116,7 +125,7 @@ export const DocumentSigningPageViewV2 = () => {
{/* Quick Actions. */}
{!isDirectTemplate && (
-
+
Actions
@@ -145,10 +154,21 @@ export const DocumentSigningPageViewV2 = () => {
}
/>
- {envelope.type === EnvelopeType.DOCUMENT && (
+ {envelope.type === EnvelopeType.DOCUMENT && allowDocumentRejection && (
+ onDocumentRejected({
+ token: recipient.token,
+ documentId: mapSecondaryIdToDocumentId(envelope.secondaryId),
+ envelopeId: envelope.id,
+ recipientId: recipient.id,
+ reason,
+ }))
+ }
trigger={
)}
- {/* Footer of left sidebar. */}
-
-
+
+ {/* Footer of left sidebar. */}
+ {!isEmbed && (
+
+ )}
-
+
{/* Horizontal envelope item selector */}
{envelopeItems.length > 1 && (
@@ -202,7 +226,7 @@ export const DocumentSigningPageViewV2 = () => {
)}
{/* Document View */}
-
+
{currentEnvelopeItem ? (
{
)}
{/* Mobile widget - Additional padding to allow users to scroll */}
-
diff --git a/apps/remix/app/components/general/document-signing/envelope-signing-provider.tsx b/apps/remix/app/components/general/document-signing/envelope-signing-provider.tsx
index eb6e6275f..ddaf3c355 100644
--- a/apps/remix/app/components/general/document-signing/envelope-signing-provider.tsx
+++ b/apps/remix/app/components/general/document-signing/envelope-signing-provider.tsx
@@ -56,7 +56,7 @@ export type EnvelopeSigningContextValue = {
_fieldId: number,
_value: TSignEnvelopeFieldValue,
authOptions?: TRecipientActionAuth,
- ) => Promise
;
+ ) => Promise>;
};
const EnvelopeSigningContext = createContext(null);
@@ -296,16 +296,19 @@ export const EnvelopeSigningProvider = ({
) => {
// Set the field locally for direct templates.
if (isDirectTemplate) {
- handleDirectTemplateFieldInsertion(fieldId, fieldValue);
- return;
+ const signedField = handleDirectTemplateFieldInsertion(fieldId, fieldValue);
+
+ return signedField;
}
- await signEnvelopeField({
+ const { signedField } = await signEnvelopeField({
token: envelopeData.recipient.token,
fieldId,
fieldValue,
authOptions,
});
+
+ return signedField;
};
const handleDirectTemplateFieldInsertion = (
@@ -363,6 +366,8 @@ export const EnvelopeSigningProvider = ({
fields: prev.recipient.fields.map((field) => (field.id === fieldId ? updatedField : field)),
},
}));
+
+ return updatedField;
};
return (
diff --git a/apps/remix/app/components/general/envelope-editor/envelope-file-selector.tsx b/apps/remix/app/components/general/envelope-editor/envelope-file-selector.tsx
index 1d570bed7..144a2bc41 100644
--- a/apps/remix/app/components/general/envelope-editor/envelope-file-selector.tsx
+++ b/apps/remix/app/components/general/envelope-editor/envelope-file-selector.tsx
@@ -29,7 +29,7 @@ export const EnvelopeItemSelector = ({
{...buttonProps}
>
diff --git a/apps/remix/app/components/general/envelope-signing/envelope-signer-form.tsx b/apps/remix/app/components/general/envelope-signing/envelope-signer-form.tsx
index 98a9173ee..e010e5821 100644
--- a/apps/remix/app/components/general/envelope-signing/envelope-signer-form.tsx
+++ b/apps/remix/app/components/general/envelope-signing/envelope-signer-form.tsx
@@ -8,6 +8,8 @@ import { Label } from '@documenso/ui/primitives/label';
import { RadioGroup, RadioGroupItem } from '@documenso/ui/primitives/radio-group';
import { SignaturePadDialog } from '@documenso/ui/primitives/signature-pad/signature-pad-dialog';
+import { useEmbedSigningContext } from '~/components/embed/embed-signing-context';
+
import { useRequiredEnvelopeSigningContext } from '../document-signing/envelope-signing-provider';
export default function EnvelopeSignerForm() {
@@ -25,6 +27,8 @@ export default function EnvelopeSignerForm() {
setSelectedAssistantRecipientId,
} = useRequiredEnvelopeSigningContext();
+ const { isNameLocked, isEmailLocked } = useEmbedSigningContext() || {};
+
const hasSignatureField = useMemo(() => {
return recipientFields.some((field) => field.type === FieldType.SIGNATURE);
}, [recipientFields]);
@@ -37,7 +41,7 @@ export default function EnvelopeSignerForm() {
if (recipient.role === RecipientRole.ASSISTANT) {
return (
-
diff --git a/apps/remix/app/components/general/envelope-signing/envelope-signer-header.tsx b/apps/remix/app/components/general/envelope-signing/envelope-signer-header.tsx
index b48ee0c55..bf7b2a971 100644
--- a/apps/remix/app/components/general/envelope-signing/envelope-signer-header.tsx
+++ b/apps/remix/app/components/general/envelope-signing/envelope-signer-header.tsx
@@ -16,6 +16,7 @@ import {
import { Separator } from '@documenso/ui/primitives/separator';
import { EnvelopeDownloadDialog } from '~/components/dialogs/envelope-download-dialog';
+import { useEmbedSigningContext } from '~/components/embed/embed-signing-context';
import { BrandingLogo } from '~/components/general/branding-logo';
import { BrandingLogoIcon } from '../branding-logo-icon';
@@ -28,7 +29,7 @@ export const EnvelopeSignerHeader = () => {
useRequiredEnvelopeSigningContext();
return (
-