diff --git a/src/components/DownloadDetailsPopup.tsx b/src/components/DownloadDetailsPopup.tsx new file mode 100644 index 0000000..20f320f --- /dev/null +++ b/src/components/DownloadDetailsPopup.tsx @@ -0,0 +1,113 @@ +import { createPortal } from 'react-dom' +import { DownloadUrl } from '../types' + +export const DownloadDetailsPopup = ({ + title, + url, + hash, + signatureKey, + malwareScanLink, + modVersion, + customNote, + mediaUrl, + handleClose +}: DownloadUrl & { + handleClose: () => void +}) => { + return createPortal( +
+
+
+
+
+
+

{title || 'Authentication Details'}

+
+
+ + + +
+
+
+
+
+
+
+

Download URL

+
+
+

{url}

+
+
+
+
+

SHA-256 hash

+
+
+

{hash}

+
+
+
+
+

Signature from

+
+
+

{signatureKey}

+
+
+
+
+

Scan

+
+
+

{malwareScanLink}

+
+
+
+
+

Mod Version

+
+
+

{modVersion}

+
+
+
+
+

Note

+
+
+

{customNote}

+
+
+ {typeof mediaUrl !== 'undefined' && mediaUrl !== '' && ( +
+
+

Media

+
+
+ +
+
+ )} +
+
+
+
+
+
+
, + document.body + ) +} diff --git a/src/pages/mod/index.tsx b/src/pages/mod/index.tsx index 1d8d826..f5c4a14 100644 --- a/src/pages/mod/index.tsx +++ b/src/pages/mod/index.tsx @@ -41,6 +41,7 @@ import { RouterLoadingSpinner } from 'components/LoadingSpinner' import { OriginalAuthor } from 'components/OriginalAuthor' import { Viewer } from 'components/Markdown/Viewer' import { PostWarnings } from 'components/PostWarning' +import { DownloadDetailsPopup } from 'components/DownloadDetailsPopup' const MOD_REPORT_REASONS = [ { label: 'Actually CP', key: 'actuallyCP' }, @@ -566,16 +567,8 @@ const Body = ({ ) } -const Download = ({ - url, - title, - hash, - signatureKey, - malwareScanLink, - modVersion, - customNote, - mediaUrl -}: DownloadUrl) => { +const Download = (props: DownloadUrl) => { + const { url, title, malwareScanLink } = props const [showAuthDetails, setShowAuthDetails] = useState(false) const [showNotice, setShowNotice] = useState(false) const [showScanNotice, setShowCanNotice] = useState(false) @@ -812,56 +805,10 @@ const Download = ({ Authentication Details

{showAuthDetails && ( -
-
-
-

Download URL

-
-
-

{url}

-
-
-
-
-

SHA-256 hash

-
-
-

{hash}

-
-
-
-
-

Signature from

-
-
-

{signatureKey}

-
-
-
-
-

Scan

-
-
-

{malwareScanLink}

-
-
-
-
-

Mod Version

-
-
-

{modVersion}

-
-
-
-
-

Note

-
-
-

{customNote}

-
-
-
+ setShowAuthDetails(false)} + /> )} diff --git a/src/styles/downloads.css b/src/styles/downloads.css index 0ff3847..66c7db4 100644 --- a/src/styles/downloads.css +++ b/src/styles/downloads.css @@ -11,7 +11,7 @@ display: grid; grid-template-columns: 1fr; grid-gap: 15px; - border: solid 1px rgba(255,255,255,0.05); + border: solid 1px rgba(255, 255, 255, 0.05); overflow: auto; max-height: 550px; padding: 15px; @@ -27,7 +27,7 @@ } .IBMSMSMBSSDownloadsTitle { - color: rgba(255,255,255,0.5); + color: rgba(255, 255, 255, 0.5); } .IBMSMSMBSSDownloadsElement { @@ -36,11 +36,11 @@ display: grid; grid-template-columns: 1fr; grid-gap: 10px; - border: solid 1px rgba(255,255,255,0); - background: rgba(255,255,255,0.05); + border: solid 1px rgba(255, 255, 255, 0); + background: rgba(255, 255, 255, 0.05); padding: 10px; border-radius: 10px; - box-shadow: 0 0 8px 0 rgb(0,0,0,0.1); + box-shadow: 0 0 8px 0 rgb(0, 0, 0, 0.1); } @media (max-width: 768px) { @@ -50,7 +50,7 @@ } .btnMain.IBMSMSMBSSDownloadsElementBtn { - background: rgba(255,255,255,0.05); + background: rgba(255, 255, 255, 0.05); border-radius: 10px; width: 100%; } @@ -62,8 +62,8 @@ } .btnMain.IBMSMSMBSSDownloadsElementBtn:hover { - background: rgba(255,255,255,0.1); - box-shadow: 0 0 8px 0 rgb(0,0,0,0.1); + background: rgba(255, 255, 255, 0.1); + box-shadow: 0 0 8px 0 rgb(0, 0, 0, 0.1); } .IBMSMSMBSSDownloadsElementInside { @@ -71,7 +71,7 @@ flex-direction: column; justify-content: start; align-items: start; - color: rgba(255,255,255,0.5); + color: rgba(255, 255, 255, 0.5); grid-gap: 10px; } @@ -97,27 +97,30 @@ justify-content: center; align-items: center; width: 100%; - background: rgba(255,255,255,0); + background: rgba(255, 255, 255, 0); overflow: hidden; border-radius: 10px; - border: solid 1px rgba(255,255,255,0.05); + border: solid 1px rgba(255, 255, 255, 0.05); cursor: pointer; } .IBMSMSMBSSDEIReactionsElement:hover { transition: ease 0.4s; - background: rgba(255,255,255,0.05); - color: rgba(255,255,255,0.75); - border: solid 1px rgba(255,255,255,0); + background: rgba(255, 255, 255, 0.05); + color: rgba(255, 255, 255, 0.75); + border: solid 1px rgba(255, 255, 255, 0); } -.IBMSMSMBSSDEIReactionsElement:hover > .IBMSMSMBSSDEIReactionsElementIconWrapper { +.IBMSMSMBSSDEIReactionsElement:hover + > .IBMSMSMBSSDEIReactionsElementIconWrapper { transition: ease 0.4s; - background: rgba(255,255,255,0.05); - border-right: solid 1px rgba(255,255,255,0); + background: rgba(255, 255, 255, 0.05); + border-right: solid 1px rgba(255, 255, 255, 0); } -.IBMSMSMBSSDEIReactionsElement:hover > .IBMSMSMBSSDEIReactionsElementIconWrapper > .IBMSMSMBSSDEIReactionsElementIcon { +.IBMSMSMBSSDEIReactionsElement:hover + > .IBMSMSMBSSDEIReactionsElementIconWrapper + > .IBMSMSMBSSDEIReactionsElementIcon { transform: scale(1.1); } @@ -147,9 +150,9 @@ justify-content: center; align-items: center; height: 100%; - background: rgba(255,255,255,0); + background: rgba(255, 255, 255, 0); padding: 10px 5px; - border-right: solid 1px rgba(255,255,255,0.05); + border-right: solid 1px rgba(255, 255, 255, 0.05); } .IBMSMSMBSSDownloadsElementInsideDetails { @@ -160,17 +163,20 @@ } .IBMSMSMBSSDEIReactionsElement.IBMSMSMBSSDEIReactionsElementActive { - background: rgba(255,255,255,0.05); - border: solid 1px rgba(255,255,255,0); + background: rgba(255, 255, 255, 0.05); + border: solid 1px rgba(255, 255, 255, 0); } -.IBMSMSMBSSDEIReactionsElement.IBMSMSMBSSDEIReactionsElementActive > .IBMSMSMBSSDEIReactionsElementIconWrapper { - background: rgba(255,255,255,0.05); - border-right: solid 1px rgba(255,255,255,0); +.IBMSMSMBSSDEIReactionsElement.IBMSMSMBSSDEIReactionsElementActive + > .IBMSMSMBSSDEIReactionsElementIconWrapper { + background: rgba(255, 255, 255, 0.05); + border-right: solid 1px rgba(255, 255, 255, 0); } -.IBMSMSMBSSDEIReactionsElement.IBMSMSMBSSDEIReactionsElementActive > .IBMSMSMBSSDEIReactionsElementIconWrapper > .IBMSMSMBSSDEIReactionsElementIcon { - color: rgba(255,255,255,0.75); +.IBMSMSMBSSDEIReactionsElement.IBMSMSMBSSDEIReactionsElementActive + > .IBMSMSMBSSDEIReactionsElementIconWrapper + > .IBMSMSMBSSDEIReactionsElementIcon { + color: rgba(255, 255, 255, 0.75); } .IBMSMSMBSSDownloadsActions { @@ -188,7 +194,7 @@ display: flex; flex-direction: column; border-radius: 10px; - border: solid 1px rgba(255,255,255,0.1); + border: solid 1px rgba(255, 255, 255, 0.1); overflow: auto; grid-gap: 1px; } @@ -202,7 +208,7 @@ .IBMSMSMBSSDownloadsElementInsideAltTableRow:hover { transition: ease 0.4s; - background: rgba(255,255,255,0.05); + background: rgba(255, 255, 255, 0.05); } @media (max-width: 576px) { @@ -216,12 +222,17 @@ text-align: start; padding: 10px 15px; } +.IBMSMSMBSSDownloadsElementInsideAltTableRowCol_Img { + width: 100%; + max-width: 300px; + border-radius: 6px; +} .IBMSMSMBSSDownloadsElementInsideAltTableRowCol.IBMSMSMBSSDownloadsElementInsideAltTableRowColFirst { text-align: center; font-weight: bold; max-width: 200px; - background: rgba(255,255,255,0.05); + background: rgba(255, 255, 255, 0.05); display: flex; justify-content: center; align-items: center; @@ -237,13 +248,12 @@ transition: ease 0.4s; cursor: pointer; font-weight: 400; - color: rgba(255,255,255,0.25); + color: rgba(255, 255, 255, 0.25); } .IBMSMSMBSSDownloadsElementInsideAltText:hover { transition: ease 0.4s; cursor: pointer; font-weight: 600; - color: rgba(255,255,255,0.75); + color: rgba(255, 255, 255, 0.75); } -