mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 16:23:06 +10:00
🚧 ondelete to editor
This commit is contained in:
@ -18,6 +18,7 @@ type FieldPropsType = {
|
|||||||
recipient: string;
|
recipient: string;
|
||||||
};
|
};
|
||||||
onPositionChanged: any;
|
onPositionChanged: any;
|
||||||
|
onDelete: any;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function Field(props: FieldPropsType) {
|
export default function Field(props: FieldPropsType) {
|
||||||
@ -56,9 +57,9 @@ export default function Field(props: FieldPropsType) {
|
|||||||
<div className="m-auto w-auto flex-row-reverse text-lg font-bold text-center">
|
<div className="m-auto w-auto flex-row-reverse text-lg font-bold text-center">
|
||||||
<IconButton
|
<IconButton
|
||||||
icon={TrashIcon}
|
icon={TrashIcon}
|
||||||
onClick={(e: any) => {
|
onClick={(event: any) => {
|
||||||
if (confirm("Delete field?")) {
|
if (confirm("Delete field?")) {
|
||||||
deleteField(e, props.field);
|
props.onDelete(props.field.id);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
></IconButton>
|
></IconButton>
|
||||||
@ -70,30 +71,3 @@ export default function Field(props: FieldPropsType) {
|
|||||||
</Draggable>
|
</Draggable>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteField(event: any, field: any) {
|
|
||||||
if (!field.id) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
return toast.promise(
|
|
||||||
fetch("/api/documents/" + 0 + "/fields/" + field.id, {
|
|
||||||
method: "DELETE",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(field),
|
|
||||||
}),
|
|
||||||
{
|
|
||||||
loading: "Deleting...",
|
|
||||||
success: "Deleted.",
|
|
||||||
error: "Could not delete :/",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "delete",
|
|
||||||
style: {
|
|
||||||
minWidth: "200px",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|||||||
@ -28,6 +28,19 @@ export default function PDFEditor(props: any) {
|
|||||||
// setFields(newFields);
|
// setFields(newFields);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onDeleteHandler(id: any) {
|
||||||
|
const field = fields.find((e) => e.id == id);
|
||||||
|
const fieldIndex = fields.map((item) => item.id).indexOf(id);
|
||||||
|
console.log(fieldIndex);
|
||||||
|
if (fieldIndex > -1) {
|
||||||
|
const newFields = [...fields];
|
||||||
|
newFields.splice(fieldIndex, 1);
|
||||||
|
|
||||||
|
setFields(newFields);
|
||||||
|
deleteField(field);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<select
|
<select
|
||||||
@ -78,6 +91,7 @@ export default function PDFEditor(props: any) {
|
|||||||
document={props.document}
|
document={props.document}
|
||||||
fields={fields}
|
fields={fields}
|
||||||
onPositionChanged={onPositionChangedHandler}
|
onPositionChanged={onPositionChangedHandler}
|
||||||
|
onDelete={onDeleteHandler}
|
||||||
pdfUrl={`${NEXT_PUBLIC_WEBAPP_URL}/api/documents/${router.query.id}`}
|
pdfUrl={`${NEXT_PUBLIC_WEBAPP_URL}/api/documents/${router.query.id}`}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
@ -114,3 +128,38 @@ async function upsertField(document: any, field: any): Promise<any> {
|
|||||||
return created;
|
return created;
|
||||||
} catch (error) {}
|
} catch (error) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function deleteField(field: any) {
|
||||||
|
if (!field.id) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const deleted = await toast.promise(
|
||||||
|
fetch("/api/documents/" + 0 + "/fields/" + field.id, {
|
||||||
|
method: "DELETE",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
body: JSON.stringify(field),
|
||||||
|
}).then((res) => {
|
||||||
|
if (!res.ok) {
|
||||||
|
throw new Error(res.status.toString());
|
||||||
|
}
|
||||||
|
return res.json();
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
loading: "Deleting...",
|
||||||
|
success: "Deleted.",
|
||||||
|
error: "Could not delete :/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "delete",
|
||||||
|
style: {
|
||||||
|
minWidth: "200px",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return deleted;
|
||||||
|
} catch (error) {}
|
||||||
|
}
|
||||||
|
|||||||
@ -12,6 +12,10 @@ export default function PDFViewer(props) {
|
|||||||
props.onPositionChanged(position, id);
|
props.onPositionChanged(position, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onDeleteHandler(id) {
|
||||||
|
props.onDelete(id);
|
||||||
|
}
|
||||||
|
|
||||||
function onFileChange(event) {
|
function onFileChange(event) {
|
||||||
setFile(event.target.files[0]);
|
setFile(event.target.files[0]);
|
||||||
}
|
}
|
||||||
@ -62,6 +66,7 @@ export default function PDFViewer(props) {
|
|||||||
field={item}
|
field={item}
|
||||||
className="absolute"
|
className="absolute"
|
||||||
onPositionChanged={onPositionChangedHandler}
|
onPositionChanged={onPositionChangedHandler}
|
||||||
|
onDelete={onDeleteHandler}
|
||||||
></Field>
|
></Field>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user