From 16f6da01c0a12b3fe4fee776eb48f7e44ac89dc1 Mon Sep 17 00:00:00 2001 From: Ephraim Atta-Duncan Date: Tue, 28 Mar 2023 12:42:00 +0000 Subject: [PATCH] Move dialog into a seperate component --- apps/web/pages/documents/[id]/recipients.tsx | 169 +++---------------- packages/ui/components/dialog/Dialog.tsx | 78 ++++++++- packages/ui/index.ts | 1 + 3 files changed, 105 insertions(+), 143 deletions(-) diff --git a/apps/web/pages/documents/[id]/recipients.tsx b/apps/web/pages/documents/[id]/recipients.tsx index 0cb8721bd..13c681a01 100644 --- a/apps/web/pages/documents/[id]/recipients.tsx +++ b/apps/web/pages/documents/[id]/recipients.tsx @@ -1,5 +1,5 @@ import Head from "next/head"; -import { Fragment, ReactElement, useRef, useState } from "react"; +import { ReactElement, useRef, useState } from "react"; import Layout from "../../../components/layout"; import { NextPageWithLayout } from "../../_app"; import { classNames, NEXT_PUBLIC_WEBAPP_URL } from "@documenso/lib"; @@ -7,7 +7,6 @@ import { ArrowDownTrayIcon, CheckBadgeIcon, CheckIcon, - EnvelopeIcon, PaperAirplaneIcon, PencilSquareIcon, TrashIcon, @@ -17,27 +16,17 @@ import { import { getUserFromToken } from "@documenso/lib/server"; import { getDocument } from "@documenso/lib/query"; import { Document as PrismaDocument, DocumentStatus } from "@prisma/client"; -import { Breadcrumb, Button, IconButton } from "@documenso/ui"; -import { Dialog, Transition } from "@headlessui/react"; -import { - createOrUpdateRecipient, - deleteRecipient, - sendSigningRequests, -} from "@documenso/lib/api"; -import { - FormProvider, - useFieldArray, - useForm, - useWatch, -} from "react-hook-form"; +import { Breadcrumb, Button, Dialog, IconButton } from "@documenso/ui"; +import { createOrUpdateRecipient, deleteRecipient, sendSigningRequests } from "@documenso/lib/api"; + +import { FormProvider, useFieldArray, useForm, useWatch } from "react-hook-form"; type FormValues = { signers: { id: number; email: string; name: string }[]; }; const RecipientsPage: NextPageWithLayout = (props: any) => { - const title: string = - `"` + props?.document?.title + `"` + "Recipients | Documenso"; + const title: string = `"` + props?.document?.title + `"` + "Recipients | Documenso"; const breadcrumbItems = [ { title: "Documents", @@ -49,11 +38,7 @@ const RecipientsPage: NextPageWithLayout = (props: any) => { }, { title: "Recipients", - href: - NEXT_PUBLIC_WEBAPP_URL + - "/documents/" + - props.document.id + - "/recipients", + href: NEXT_PUBLIC_WEBAPP_URL + "/documents/" + props.document.id + "/recipients", }, ]; @@ -107,11 +92,7 @@ const RecipientsPage: NextPageWithLayout = (props: any) => { - - - - - - - - + ); }; @@ -463,11 +354,7 @@ export async function getServerSideProps(context: any) { }; const { id: documentId } = context.query; - const document: PrismaDocument = await getDocument( - +documentId, - context.req, - context.res - ); + const document: PrismaDocument = await getDocument(+documentId, context.req, context.res); return { props: { diff --git a/packages/ui/components/dialog/Dialog.tsx b/packages/ui/components/dialog/Dialog.tsx index 005dc1cb7..4d4637246 100644 --- a/packages/ui/components/dialog/Dialog.tsx +++ b/packages/ui/components/dialog/Dialog.tsx @@ -1,5 +1,79 @@ import React from "react"; +import { Transition, Dialog as DialogComponent } from "@headlessui/react"; +import { Fragment } from "react"; +import { Button } from "@documenso/ui"; +import { EnvelopeIcon } from "@heroicons/react/24/outline"; +import { sendSigningRequests } from "@documenso/lib/api"; -export function Dialog() { - return
Dialog
; +export function Dialog({ open, setOpen, document, formValues, setLoading }: any) { + return ( + + + +
+ + +
+
+ + +
+
+
+
+ + Ready to send + +
+

+ {`"${document.title}" will be sent to ${ + formValues.filter((s: any) => s.email && s.sendStatus != "SENT").length + } recipients.`} +

+
+
+
+
+ + +
+
+
+
+
+ + + ); } diff --git a/packages/ui/index.ts b/packages/ui/index.ts index 24d9cef03..1cb0c6752 100644 --- a/packages/ui/index.ts +++ b/packages/ui/index.ts @@ -1,3 +1,4 @@ export { Button, IconButton } from "./components/button/index"; export { SelectBox } from "./components/selectBox/index"; export { Breadcrumb } from "./components/breadcrumb/index"; +export { Dialog } from "./components/dialog/index";