mirror of
https://github.com/documenso/documenso.git
synced 2025-11-10 12:32:34 +10:00
Compare commits
1 Commits
v1.3.1
...
v1.3.2-rc.
| Author | SHA1 | Date | |
|---|---|---|---|
| 4909eee401 |
@ -0,0 +1,39 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { useState } from 'react';
|
||||||
|
|
||||||
|
import { FileSearch } from 'lucide-react';
|
||||||
|
|
||||||
|
import type { DocumentData } from '@documenso/prisma/client';
|
||||||
|
import DocumentDialog from '@documenso/ui/components/document/document-dialog';
|
||||||
|
import type { ButtonProps } from '@documenso/ui/primitives/button';
|
||||||
|
import { Button } from '@documenso/ui/primitives/button';
|
||||||
|
|
||||||
|
export type DocumentPreviewButtonProps = {
|
||||||
|
className?: string;
|
||||||
|
documentData: DocumentData;
|
||||||
|
} & ButtonProps;
|
||||||
|
|
||||||
|
export const DocumentPreviewButton = ({
|
||||||
|
className,
|
||||||
|
documentData,
|
||||||
|
...props
|
||||||
|
}: DocumentPreviewButtonProps) => {
|
||||||
|
const [showDialog, setShowDialog] = useState(false);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
className={className}
|
||||||
|
variant="outline"
|
||||||
|
onClick={() => setShowDialog((visible) => !visible)}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
|
<FileSearch className="mr-2 h-5 w-5" strokeWidth={1.7} />
|
||||||
|
View Document
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
<DocumentDialog documentData={documentData} open={showDialog} onOpenChange={setShowDialog} />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
17
apps/web/src/app/(signing)/sign/[token]/complete/layout.tsx
Normal file
17
apps/web/src/app/(signing)/sign/[token]/complete/layout.tsx
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
import { RefreshOnFocus } from '~/components/(dashboard)/refresh-on-focus/refresh-on-focus';
|
||||||
|
|
||||||
|
export type SigningLayoutProps = {
|
||||||
|
children: React.ReactNode;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function SigningLayout({ children }: SigningLayoutProps) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{children}
|
||||||
|
|
||||||
|
<RefreshOnFocus />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@ -17,6 +17,8 @@ import { SigningCard3D } from '@documenso/ui/components/signing-card';
|
|||||||
|
|
||||||
import { truncateTitle } from '~/helpers/truncate-title';
|
import { truncateTitle } from '~/helpers/truncate-title';
|
||||||
|
|
||||||
|
import { DocumentPreviewButton } from './document-preview-button';
|
||||||
|
|
||||||
export type CompletedSigningPageProps = {
|
export type CompletedSigningPageProps = {
|
||||||
params: {
|
params: {
|
||||||
token?: string;
|
token?: string;
|
||||||
@ -117,12 +119,20 @@ export default async function CompletedSigningPage({
|
|||||||
<div className="mt-8 flex w-full max-w-sm items-center justify-center gap-4">
|
<div className="mt-8 flex w-full max-w-sm items-center justify-center gap-4">
|
||||||
<DocumentShareButton documentId={document.id} token={recipient.token} />
|
<DocumentShareButton documentId={document.id} token={recipient.token} />
|
||||||
|
|
||||||
<DocumentDownloadButton
|
{document.status === DocumentStatus.COMPLETED ? (
|
||||||
className="flex-1"
|
<DocumentDownloadButton
|
||||||
fileName={document.title}
|
className="flex-1"
|
||||||
documentData={documentData}
|
fileName={document.title}
|
||||||
disabled={document.status !== DocumentStatus.COMPLETED}
|
documentData={documentData}
|
||||||
/>
|
disabled={document.status !== DocumentStatus.COMPLETED}
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<DocumentPreviewButton
|
||||||
|
className="flex-1"
|
||||||
|
title="Signatures will appear once the document has been completed"
|
||||||
|
documentData={documentData}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{isLoggedIn ? (
|
{isLoggedIn ? (
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import { useState } from 'react';
|
|||||||
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
||||||
import { X } from 'lucide-react';
|
import { X } from 'lucide-react';
|
||||||
|
|
||||||
import { DocumentData } from '@documenso/prisma/client';
|
import type { DocumentData } from '@documenso/prisma/client';
|
||||||
|
|
||||||
import { cn } from '../../lib/utils';
|
import { cn } from '../../lib/utils';
|
||||||
import { Dialog, DialogOverlay, DialogPortal } from '../../primitives/dialog';
|
import { Dialog, DialogOverlay, DialogPortal } from '../../primitives/dialog';
|
||||||
|
|||||||
Reference in New Issue
Block a user