diff --git a/packages/ui/primitives/document-flow/add-fields.tsx b/packages/ui/primitives/document-flow/add-fields.tsx
index 39139e29b..bd16d7677 100644
--- a/packages/ui/primitives/document-flow/add-fields.tsx
+++ b/packages/ui/primitives/document-flow/add-fields.tsx
@@ -3,9 +3,8 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { msg } from '@lingui/core/macro';
import { useLingui } from '@lingui/react';
import { Trans } from '@lingui/react/macro';
-import { Prisma } from '@prisma/client';
import type { Field, Recipient } from '@prisma/client';
-import { FieldType, RecipientRole, SendStatus } from '@prisma/client';
+import { FieldType, Prisma, RecipientRole, SendStatus } from '@prisma/client';
import {
CalendarDays,
Check,
@@ -411,8 +410,11 @@ export const AddFieldsFormPartial = ({
);
const onFieldCopy = useCallback(
- (event?: KeyboardEvent | null, options?: { duplicate?: boolean }) => {
- const { duplicate = false } = options ?? {};
+ (
+ event?: KeyboardEvent | null,
+ options?: { duplicate?: boolean; duplicateAllPages?: boolean },
+ ) => {
+ const { duplicate = false, duplicateAllPages = false } = options ?? {};
if (lastActiveField) {
event?.preventDefault();
@@ -428,6 +430,31 @@ export const AddFieldsFormPartial = ({
return;
}
+ if (duplicateAllPages) {
+ const pages = Array.from(document.querySelectorAll(PDF_VIEWER_PAGE_SELECTOR));
+ const totalPages = pages.length;
+
+ for (let pageNumber = 1; pageNumber <= totalPages; pageNumber++) {
+ if (pageNumber !== lastActiveField.pageNumber) {
+ const newField: TAddFieldsFormSchema['fields'][0] = {
+ ...structuredClone(lastActiveField),
+ formId: nanoid(12),
+ signerEmail: selectedSigner?.email ?? lastActiveField.signerEmail,
+ pageNumber,
+ };
+
+ append(newField);
+ }
+ }
+
+ toast({
+ title: 'Field duplicated',
+ description: 'Field has been duplicated across all pages',
+ });
+
+ return;
+ }
+
const newField: TAddFieldsFormSchema['fields'][0] = {
...structuredClone(lastActiveField),
formId: nanoid(12),
@@ -653,6 +680,9 @@ export const AddFieldsFormPartial = ({
onMove={(options) => onFieldMove(options, index)}
onRemove={() => remove(index)}
onDuplicate={() => onFieldCopy(null, { duplicate: true })}
+ onDuplicateAllPages={() =>
+ onFieldCopy(null, { duplicate: true, duplicateAllPages: true })
+ }
onAdvancedSettings={() => {
setCurrentField(field);
handleAdvancedSettings();
diff --git a/packages/ui/primitives/document-flow/field-item-advanced-settings.tsx b/packages/ui/primitives/document-flow/field-item-advanced-settings.tsx
index ea6097f73..6c9bca465 100644
--- a/packages/ui/primitives/document-flow/field-item-advanced-settings.tsx
+++ b/packages/ui/primitives/document-flow/field-item-advanced-settings.tsx
@@ -303,6 +303,7 @@ export const FieldAdvancedSettings = forwardRef