mirror of
https://github.com/documenso/documenso.git
synced 2025-11-12 15:53:02 +10:00
feat: show field coordinates in devmode (#1802)
Show the fields coordinates when the `devmode` search param is present. It's meant to help API users understand where to position the fields.
This commit is contained in:
@ -5,6 +5,7 @@
|
|||||||
"title": "Development & Deployment"
|
"title": "Development & Deployment"
|
||||||
},
|
},
|
||||||
"local-development": "Local Development",
|
"local-development": "Local Development",
|
||||||
|
"developer-mode": "Developer Mode",
|
||||||
"self-hosting": "Self Hosting",
|
"self-hosting": "Self Hosting",
|
||||||
"contributing": "Contributing",
|
"contributing": "Contributing",
|
||||||
"-- API & Integration Guides": {
|
"-- API & Integration Guides": {
|
||||||
|
|||||||
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
title: Field Coordinates
|
||||||
|
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.
|
||||||
|
|
||||||
|
To enable field coordinates, you can use the `devmode` query parameter.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
https://app.documenso.com/documents/<document-id>/edit?devmode=true
|
||||||
|
```
|
||||||
|
|
||||||
|
You should then see the coordinates on top of each field.
|
||||||
|
|
||||||
|

|
||||||
BIN
apps/documentation/public/developer-mode/field-coordinates.webp
Normal file
BIN
apps/documentation/public/developer-mode/field-coordinates.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
@ -166,7 +166,6 @@ export const AddFieldsFormPartial = ({
|
|||||||
|
|
||||||
const [selectedField, setSelectedField] = useState<FieldType | null>(null);
|
const [selectedField, setSelectedField] = useState<FieldType | null>(null);
|
||||||
const [selectedSigner, setSelectedSigner] = useState<Recipient | null>(null);
|
const [selectedSigner, setSelectedSigner] = useState<Recipient | null>(null);
|
||||||
const [showRecipientsSelector, setShowRecipientsSelector] = useState(false);
|
|
||||||
const [lastActiveField, setLastActiveField] = useState<TAddFieldsFormSchema['fields'][0] | null>(
|
const [lastActiveField, setLastActiveField] = useState<TAddFieldsFormSchema['fields'][0] | null>(
|
||||||
null,
|
null,
|
||||||
);
|
);
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import { FieldType } from '@prisma/client';
|
|||||||
import { CopyPlus, Settings2, SquareStack, Trash } from 'lucide-react';
|
import { CopyPlus, Settings2, SquareStack, Trash } from 'lucide-react';
|
||||||
import { createPortal } from 'react-dom';
|
import { createPortal } from 'react-dom';
|
||||||
import { Rnd } from 'react-rnd';
|
import { Rnd } from 'react-rnd';
|
||||||
|
import { useSearchParams } from 'react-router';
|
||||||
|
|
||||||
import { PDF_VIEWER_PAGE_SELECTOR } from '@documenso/lib/constants/pdf-viewer';
|
import { PDF_VIEWER_PAGE_SELECTOR } from '@documenso/lib/constants/pdf-viewer';
|
||||||
import type { TFieldMetaSchema } from '@documenso/lib/types/field-meta';
|
import type { TFieldMetaSchema } from '@documenso/lib/types/field-meta';
|
||||||
@ -69,6 +70,7 @@ export const FieldItem = ({
|
|||||||
onFieldDeactivate,
|
onFieldDeactivate,
|
||||||
}: FieldItemProps) => {
|
}: FieldItemProps) => {
|
||||||
const { _ } = useLingui();
|
const { _ } = useLingui();
|
||||||
|
const [searchParams] = useSearchParams();
|
||||||
|
|
||||||
const [coords, setCoords] = useState({
|
const [coords, setCoords] = useState({
|
||||||
pageX: 0,
|
pageX: 0,
|
||||||
@ -81,6 +83,8 @@ export const FieldItem = ({
|
|||||||
|
|
||||||
const signerStyles = useRecipientColors(recipientIndex);
|
const signerStyles = useRecipientColors(recipientIndex);
|
||||||
|
|
||||||
|
const isDevMode = searchParams.get('devmode') === 'true';
|
||||||
|
|
||||||
const advancedField = [
|
const advancedField = [
|
||||||
'NUMBER',
|
'NUMBER',
|
||||||
'RADIO',
|
'RADIO',
|
||||||
@ -303,6 +307,12 @@ export const FieldItem = ({
|
|||||||
(field.signerEmail?.charAt(1)?.toUpperCase() ?? '')}
|
(field.signerEmail?.charAt(1)?.toUpperCase() ?? '')}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{isDevMode && (
|
||||||
|
<div className="text-muted-foreground absolute -top-6 left-0 right-0 text-center text-[10px]">
|
||||||
|
{`x: ${field.pageX.toFixed(2)}, y: ${field.pageY.toFixed(2)}`}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{!disabled && settingsActive && (
|
{!disabled && settingsActive && (
|
||||||
|
|||||||
Reference in New Issue
Block a user