diff --git a/components/documents/document-header.tsx b/components/documents/document-header.tsx
index 3396d5ac7..c9debd2fa 100644
--- a/components/documents/document-header.tsx
+++ b/components/documents/document-header.tsx
@@ -27,8 +27,9 @@ import {
} from "@/components/ui/dropdown-menu";
import { DocumentWithLinksAndLinkCountAndViewCount } from "@/lib/types";
-import { getExtension } from "@/lib/utils";
+import { cn, getExtension } from "@/lib/utils";
+import PortraitLandscape from "../shared/icons/portrait-landscape";
import { AddDocumentModal } from "./add-document-modal";
export default function DocumentHeader({
@@ -168,6 +169,36 @@ export default function DocumentHeader({
});
};
+ const changeDocumentOrientation = async () => {
+ const response = await fetch(
+ "/api/teams/" +
+ teamId +
+ "/documents/" +
+ prismaDocument.id +
+ "/change-orientation",
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({
+ versionId: primaryVersion.id,
+ isVertical: primaryVersion.isVertical ? false : true,
+ }),
+ },
+ );
+
+ if (response.ok) {
+ const { message } = await response.json();
+ toast.success(message);
+
+ mutate(`/api/teams/${teamId}/documents/${prismaDocument.id}`);
+ } else {
+ const { message } = await response.json();
+ toast.error(message);
+ }
+ };
+
useEffect(() => {
function handleClickOutside(event: { target: any }) {
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
@@ -278,6 +309,19 @@ export default function DocumentHeader({
+
+
{primaryVersion.type !== "notion" && (
+
changeDocumentOrientation()}>
+
+ {" Change orientation"}
+
+
{prismaDocument.type !== "notion" && (
activateOrRedirectAssistant(prismaDocument)}
diff --git a/components/shared/icons/portrait-landscape.tsx b/components/shared/icons/portrait-landscape.tsx
new file mode 100644
index 000000000..e40e71ee7
--- /dev/null
+++ b/components/shared/icons/portrait-landscape.tsx
@@ -0,0 +1,26 @@
+export default function PortraitLandscape({
+ className,
+ fill,
+}: {
+ className?: string;
+ fill?: string;
+}) {
+ return (
+
+ );
+}
diff --git a/components/view/DataroomViewer.tsx b/components/view/DataroomViewer.tsx
index db28c7e6a..b8faf42f7 100644
--- a/components/view/DataroomViewer.tsx
+++ b/components/view/DataroomViewer.tsx
@@ -1,4 +1,5 @@
import Link from "next/link";
+import { useRouter } from "next/router";
import { useEffect, useState } from "react";
import React from "react";
@@ -32,7 +33,6 @@ import DocumentCard from "./dataroom/document-card";
import FolderCard from "./dataroom/folder-card";
import DataroomNav from "./dataroom/nav-dataroom";
import Nav from "./nav";
-import { useRouter } from "next/router";
type DataroomDocument = {
dataroomDocumentId: string;
@@ -44,6 +44,7 @@ type DataroomDocument = {
type: string;
versionNumber: number;
hasPages: boolean;
+ isVertical: boolean;
}[];
};
@@ -71,6 +72,7 @@ export default function DataroomViewer({
documentType: "pdf" | "notion";
documentVersionId: string;
documentVersionNumber: number;
+ isVertical: boolean;
} | null>
>;
setDataroomVerified: React.Dispatch>;
diff --git a/components/view/PagesViewerNew.tsx b/components/view/PagesViewerNew.tsx
index 30022b021..ef34f994b 100644
--- a/components/view/PagesViewerNew.tsx
+++ b/components/view/PagesViewerNew.tsx
@@ -544,6 +544,7 @@ export default function PagesViewer({
key={index}
initialScale={scale}
panning={{ disabled: scale === 1, velocityDisabled: true }}
+ wheel={{ disabled: scale === 1 }}
onZoom={(ref) => {
setScale(ref.state.scale);
}}
diff --git a/components/view/dataroom/dataroom-view.tsx b/components/view/dataroom/dataroom-view.tsx
index 35f03df8f..3ac4a2b0e 100644
--- a/components/view/dataroom/dataroom-view.tsx
+++ b/components/view/dataroom/dataroom-view.tsx
@@ -75,6 +75,7 @@ export default function DataroomView({
documentType: "pdf" | "notion";
documentVersionId: string;
documentVersionNumber: number;
+ isVertical: boolean;
} | null>(null);
const [viewType, setViewType] = useState<"DOCUMENT_VIEW" | "DATAROOM_VIEW">(
@@ -264,6 +265,7 @@ export default function DataroomView({
brand={brand}
dataroomId={dataroom.id}
setDocumentData={setDocumentData}
+ isVertical={documentData.isVertical}
/>
) : null;
diff --git a/components/view/dataroom/document-card.tsx b/components/view/dataroom/document-card.tsx
index 52d98c383..11bbed600 100644
--- a/components/view/dataroom/document-card.tsx
+++ b/components/view/dataroom/document-card.tsx
@@ -38,6 +38,7 @@ type DRDocument = {
type: string;
versionNumber: number;
hasPages: boolean;
+ isVertical: boolean;
}[];
};
@@ -51,6 +52,7 @@ type DocumentsCardProps = {
documentType: "pdf" | "notion";
documentVersionId: string;
documentVersionNumber: number;
+ isVertical: boolean;
}) => void;
};
export default function DocumentCard({
@@ -94,6 +96,7 @@ export default function DocumentCard({
| "notion",
documentVersionId: document.versions[0].id,
documentVersionNumber: document.versions[0].versionNumber,
+ isVertical: document.versions[0].isVertical,
});
}}
className="w-full truncate"
diff --git a/components/view/view-data.tsx b/components/view/view-data.tsx
index 59701520c..4371b504e 100644
--- a/components/view/view-data.tsx
+++ b/components/view/view-data.tsx
@@ -53,6 +53,7 @@ export default function ViewData({
showPoweredByBanner={showPoweredByBanner}
enableQuestion={link.enableQuestion}
feedback={link.feedback}
+ isVertical={document.versions[0].isVertical}
/>
) : (