diff --git a/apps/documentation/pages/developers/developer-mode/field-coordinates.mdx b/apps/documentation/pages/developers/developer-mode/field-coordinates.mdx index 7489912e6..8f57a127d 100644 --- a/apps/documentation/pages/developers/developer-mode/field-coordinates.mdx +++ b/apps/documentation/pages/developers/developer-mode/field-coordinates.mdx @@ -5,14 +5,22 @@ description: Learn how to get the coordinates of a field in a document. ## Field Coordinates -Field coordinates represent the position of a field in a document. They are returned in the `pageX` and `pageY` properties of the field. +Field coordinates represent the position of a field in a document. They are returned in the `pageX`, `pageY`, `width` and `height` properties of the field. To enable field coordinates, you can use the `devmode` query parameter. ```bash -https://app.documenso.com/documents//edit?devmode=true +# Legacy editor + +https://app.documenso.com/t//documents//legacy_editor?devmode=true ``` -You should then see the coordinates on top of each field. +![Field Coordinates Legacy Editor](/developer-mode/field-coordinates-legacy-editor.webp) -![Field Coordinates](/developer-mode/field-coordinates.webp) +```bash +# New editor + +https://app.documenso.com/t//documents//edit?step=addFields&devmode=true +``` + +![Field Coordinates New Editor](/developer-mode/field-coordinates-new-editor.webp) diff --git a/apps/documentation/pages/developers/self-hosting/how-to.mdx b/apps/documentation/pages/developers/self-hosting/how-to.mdx index 936c99bd6..0d199b6b5 100644 --- a/apps/documentation/pages/developers/self-hosting/how-to.mdx +++ b/apps/documentation/pages/developers/self-hosting/how-to.mdx @@ -148,6 +148,7 @@ This method avoids file permission issues by creating the certificate directly i # Generate certificate inside container using environment variable docker exec -e CERT_PASS="$CERT_PASS" -it documenso-production-documenso-1 bash -c " + mkdir -p /app/certs && \ openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /tmp/private.key \ -out /tmp/certificate.crt \ diff --git a/apps/documentation/public/developer-mode/field-coordinates-legacy-editor.webp b/apps/documentation/public/developer-mode/field-coordinates-legacy-editor.webp new file mode 100644 index 000000000..7cf99a3b9 Binary files /dev/null and b/apps/documentation/public/developer-mode/field-coordinates-legacy-editor.webp differ diff --git a/apps/documentation/public/developer-mode/field-coordinates-new-editor.webp b/apps/documentation/public/developer-mode/field-coordinates-new-editor.webp new file mode 100644 index 000000000..ea6980da2 Binary files /dev/null and b/apps/documentation/public/developer-mode/field-coordinates-new-editor.webp differ diff --git a/apps/documentation/public/developer-mode/field-coordinates.webp b/apps/documentation/public/developer-mode/field-coordinates.webp deleted file mode 100644 index 2089e8b15..000000000 Binary files a/apps/documentation/public/developer-mode/field-coordinates.webp and /dev/null differ diff --git a/apps/remix/app/components/general/direct-template/direct-template-configure-form.tsx b/apps/remix/app/components/general/direct-template/direct-template-configure-form.tsx index 47e983003..33be2c927 100644 --- a/apps/remix/app/components/general/direct-template/direct-template-configure-form.tsx +++ b/apps/remix/app/components/general/direct-template/direct-template-configure-form.tsx @@ -1,6 +1,4 @@ import { zodResolver } from '@hookform/resolvers/zod'; -import { msg } from '@lingui/core/macro'; -import { useLingui } from '@lingui/react'; import { Trans } from '@lingui/react/macro'; import type { Recipient } from '@prisma/client'; import type { Field } from '@prisma/client'; @@ -57,8 +55,6 @@ export const DirectTemplateConfigureForm = ({ initialEmail, onSubmit, }: DirectTemplateConfigureFormProps) => { - const { _ } = useLingui(); - const { sessionData } = useOptionalSession(); const user = sessionData?.user; @@ -77,17 +73,7 @@ export const DirectTemplateConfigureForm = ({ }); const form = useForm({ - resolver: zodResolver( - ZDirectTemplateConfigureFormSchema.superRefine((items, ctx) => { - if (template.recipients.map((recipient) => recipient.email).includes(items.email)) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: _(msg`Email cannot already exist in the template`), - path: ['email'], - }); - } - }), - ), + resolver: zodResolver(ZDirectTemplateConfigureFormSchema), defaultValues: { email: initialEmail || '', }, @@ -138,7 +124,7 @@ export const DirectTemplateConfigureForm = ({ {!fieldState.error && ( -

+

Enter your email address to receive the completed document.

)} diff --git a/apps/remix/app/components/general/document/document-page-view-recent-activity.tsx b/apps/remix/app/components/general/document/document-page-view-recent-activity.tsx index abeeacbc4..12febc4cb 100644 --- a/apps/remix/app/components/general/document/document-page-view-recent-activity.tsx +++ b/apps/remix/app/components/general/document/document-page-view-recent-activity.tsx @@ -22,7 +22,7 @@ export const DocumentPageViewRecentActivity = ({ documentId, userId, }: DocumentPageViewRecentActivityProps) => { - const { _ } = useLingui(); + const { _, i18n } = useLingui(); const { data, @@ -48,9 +48,9 @@ export const DocumentPageViewRecentActivity = ({ const documentAuditLogs = useMemo(() => (data?.pages ?? []).flatMap((page) => page.data), [data]); return ( -
+
-

+

Recent activity

@@ -59,18 +59,18 @@ export const DocumentPageViewRecentActivity = ({ {isLoading && (
- +
)} {isLoadingError && (
-

+

Unable to load document history

@@ -83,16 +83,16 @@ export const DocumentPageViewRecentActivity = ({ {hasNextPage && (
  • -
    +
    -
    -
    +
    +
    @@ -101,7 +101,7 @@ export const DocumentPageViewRecentActivity = ({ {documentAuditLogs.length === 0 && (
    -

    +

    No recent activity

    @@ -115,44 +115,44 @@ export const DocumentPageViewRecentActivity = ({ 'absolute left-0 top-0 flex w-6 justify-center', )} > -
    +
    -
    +
    {match(auditLog.type) .with(DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_COMPLETED, () => ( -
    +
    )) .with(DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RECIPIENT_COMPLETED, () => ( -
    +
    )) .with(DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RECIPIENT_REJECTED, () => ( -
    +
    )) .with(DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_OPENED, () => ( -
    +
    )) .otherwise(() => ( -
    +
    ))}

    - {formatDocumentAuditLogAction(_, auditLog, userId).description} + {formatDocumentAuditLogAction(i18n, auditLog, userId).description}

    -
  • 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 bf7b2a971..7fe73f06a 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 @@ -28,36 +28,40 @@ export const EnvelopeSignerHeader = () => { const { envelopeData, envelope, recipientFieldsRemaining, recipient } = useRequiredEnvelopeSigningContext(); + const isEmbedSigning = useEmbedSigningContext() !== null; + return ( -