mirror of
https://github.com/documenso/documenso.git
synced 2025-11-11 04:52:41 +10:00
Disable the edit and add signer button for completed documents
This commit is contained in:
@ -291,6 +291,7 @@ const DocumentsPage: NextPageWithLayout = (props: any) => {
|
|||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
router.push("/documents/" + document.id);
|
router.push("/documents/" + document.id);
|
||||||
}}
|
}}
|
||||||
|
disabled={document.status === "COMPLETED"}
|
||||||
/>
|
/>
|
||||||
<IconButton
|
<IconButton
|
||||||
icon={ArrowDownTrayIcon}
|
icon={ArrowDownTrayIcon}
|
||||||
|
|||||||
@ -88,30 +88,36 @@ const RecipientsPage: NextPageWithLayout = (props: any) => {
|
|||||||
href={"/api/documents/" + props.document.id}>
|
href={"/api/documents/" + props.document.id}>
|
||||||
Download
|
Download
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
{props.document.status !== DocumentStatus.COMPLETED && (
|
||||||
icon={PencilSquareIcon}
|
<>
|
||||||
disabled={props.document.status === DocumentStatus.COMPLETED}
|
<Button
|
||||||
color={props.document.status === DocumentStatus.COMPLETED ? "primary" : "secondary"}
|
icon={PencilSquareIcon}
|
||||||
className="mr-2"
|
disabled={props.document.status === DocumentStatus.COMPLETED}
|
||||||
href={breadcrumbItems[1].href}>
|
color={
|
||||||
Edit Document
|
props.document.status === DocumentStatus.COMPLETED ? "primary" : "secondary"
|
||||||
</Button>
|
}
|
||||||
<Button
|
className="mr-2"
|
||||||
className="min-w-[125px]"
|
href={breadcrumbItems[1].href}>
|
||||||
color="primary"
|
Edit Document
|
||||||
icon={PaperAirplaneIcon}
|
</Button>
|
||||||
onClick={() => {
|
<Button
|
||||||
setOpen(true);
|
className="min-w-[125px]"
|
||||||
}}
|
color="primary"
|
||||||
disabled={
|
icon={PaperAirplaneIcon}
|
||||||
(formValues.length || 0) === 0 ||
|
onClick={() => {
|
||||||
!formValues.some(
|
setOpen(true);
|
||||||
(r: any) => r.email && !hasEmailError(r) && r.sendStatus === "NOT_SENT"
|
}}
|
||||||
) ||
|
disabled={
|
||||||
loading
|
(formValues.length || 0) === 0 ||
|
||||||
}>
|
!formValues.some(
|
||||||
Send
|
(r: any) => r.email && !hasEmailError(r) && r.sendStatus === "NOT_SENT"
|
||||||
</Button>
|
) ||
|
||||||
|
loading
|
||||||
|
}>
|
||||||
|
Send
|
||||||
|
</Button>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="mt-10 overflow-hidden rounded-md bg-white p-4 shadow sm:p-6">
|
<div className="mt-10 overflow-hidden rounded-md bg-white p-4 shadow sm:p-6">
|
||||||
@ -246,7 +252,7 @@ const RecipientsPage: NextPageWithLayout = (props: any) => {
|
|||||||
<span id="signed_icon">
|
<span id="signed_icon">
|
||||||
<span
|
<span
|
||||||
id="sent_icon"
|
id="sent_icon"
|
||||||
className="mt-3 inline-block flex-shrink-0 rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium text-green-800">
|
className={`mt-3 inline-block flex-shrink-0 rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium text-green-800`}>
|
||||||
<CheckBadgeIcon className="mr-1 inline h-5"></CheckBadgeIcon>
|
<CheckBadgeIcon className="mr-1 inline h-5"></CheckBadgeIcon>
|
||||||
Signed
|
Signed
|
||||||
</span>
|
</span>
|
||||||
@ -256,60 +262,64 @@ const RecipientsPage: NextPageWithLayout = (props: any) => {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="mr-1 flex">
|
{props.document.status !== DocumentStatus.COMPLETED && (
|
||||||
<IconButton
|
<div className="mr-1 flex">
|
||||||
icon={PaperAirplaneIcon}
|
<IconButton
|
||||||
disabled={
|
icon={PaperAirplaneIcon}
|
||||||
!item.id ||
|
disabled={
|
||||||
item.sendStatus !== "SENT" ||
|
!item.id ||
|
||||||
item.signingStatus === "SIGNED" ||
|
item.sendStatus !== "SENT" ||
|
||||||
loading
|
item.signingStatus === "SIGNED" ||
|
||||||
}
|
loading
|
||||||
color="secondary"
|
|
||||||
className="my-auto mr-4 h-9"
|
|
||||||
onClick={() => {
|
|
||||||
if (confirm("Resend this signing request?")) {
|
|
||||||
setLoading(true);
|
|
||||||
sendSigningRequests(props.document, [item.id]).finally(() => {
|
|
||||||
setLoading(false);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}}>
|
color="secondary"
|
||||||
Resend
|
className="my-auto mr-4 h-9"
|
||||||
</IconButton>
|
onClick={() => {
|
||||||
<IconButton
|
if (confirm("Resend this signing request?")) {
|
||||||
icon={TrashIcon}
|
setLoading(true);
|
||||||
disabled={!item.id || item.sendStatus === "SENT" || loading}
|
sendSigningRequests(props.document, [item.id]).finally(() => {
|
||||||
onClick={() => {
|
setLoading(false);
|
||||||
const removedItem = { ...fields }[index];
|
});
|
||||||
remove(index);
|
}
|
||||||
deleteRecipient(item)?.catch((err) => {
|
}}>
|
||||||
append(removedItem);
|
Resend
|
||||||
});
|
</IconButton>
|
||||||
}}
|
<IconButton
|
||||||
className="group-hover:text-neon-dark group-hover:disabled:text-gray-400"
|
icon={TrashIcon}
|
||||||
/>
|
disabled={!item.id || item.sendStatus === "SENT" || loading}
|
||||||
</div>
|
onClick={() => {
|
||||||
|
const removedItem = { ...fields }[index];
|
||||||
|
remove(index);
|
||||||
|
deleteRecipient(item)?.catch((err) => {
|
||||||
|
append(removedItem);
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
className="group-hover:text-neon-dark group-hover:disabled:text-gray-400"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
<Button
|
{props.document.status !== "COMPLETED" && (
|
||||||
icon={UserPlusIcon}
|
<Button
|
||||||
className="mt-3"
|
icon={UserPlusIcon}
|
||||||
onClick={() => {
|
className="mt-3"
|
||||||
createOrUpdateRecipient({
|
onClick={() => {
|
||||||
id: "",
|
createOrUpdateRecipient({
|
||||||
email: "",
|
id: "",
|
||||||
name: "",
|
email: "",
|
||||||
documentId: props.document.id,
|
name: "",
|
||||||
}).then((res) => {
|
documentId: props.document.id,
|
||||||
append(res);
|
}).then((res) => {
|
||||||
});
|
append(res);
|
||||||
}}>
|
});
|
||||||
Add Signer
|
}}>
|
||||||
</Button>
|
Add Signer
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
</form>
|
</form>
|
||||||
</FormProvider>
|
</FormProvider>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -24,7 +24,7 @@ async function createUser(userData: { email: string; password: string }) {
|
|||||||
async function main() {
|
async function main() {
|
||||||
console.info("Start seeding...");
|
console.info("Start seeding...");
|
||||||
const password = "123456789";
|
const password = "123456789";
|
||||||
const email = "example6@documenso.com";
|
const email = "example@documenso.com";
|
||||||
const user = await createUser({
|
const user = await createUser({
|
||||||
email: email,
|
email: email,
|
||||||
password: await hashPassword(password),
|
password: await hashPassword(password),
|
||||||
|
|||||||
Reference in New Issue
Block a user