Disable the edit and add signer button for completed documents

This commit is contained in:
Ephraim Atta-Duncan
2023-04-09 12:26:48 +00:00
parent 30c1c76dd7
commit e86d4cc719
3 changed files with 85 additions and 74 deletions

View File

@ -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}

View File

@ -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>

View File

@ -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),