diff --git a/src/components/common/messaging/embed/Embed.module.scss b/src/components/common/messaging/embed/Embed.module.scss index 5175f73a..68c53e7a 100644 --- a/src/components/common/messaging/embed/Embed.module.scss +++ b/src/components/common/messaging/embed/Embed.module.scss @@ -1,6 +1,6 @@ .embed { margin: 0.2em 0; - + position: relative; iframe { border: none; border-radius: var(--border-radius); @@ -135,3 +135,24 @@ grid-area: open; } } + +.spoiler_container { + position: absolute; + height: 100%; + width:100%; + background:var(--primary-header); + display: flex; + align-items: center; + top:0; + left:0; + cursor:pointer; + + &.hidden { + display: none; + } +} + +.spoiler_title { + text-align: center; + margin-inline: auto; +} diff --git a/src/components/common/messaging/embed/Embed.tsx b/src/components/common/messaging/embed/Embed.tsx index 3d04c44f..a27ef259 100644 --- a/src/components/common/messaging/embed/Embed.tsx +++ b/src/components/common/messaging/embed/Embed.tsx @@ -10,6 +10,7 @@ import { MessageAreaWidthContext } from "../../../../pages/channels/messaging/Me import Markdown from "../../../markdown/Markdown"; import Attachment from "../attachments/Attachment"; import EmbedMedia from "./EmbedMedia"; +import EmbedSpoiler from "./EmbedSpoiler"; interface Props { embed: API.Embed; @@ -104,7 +105,7 @@ export default function Embed({ embed }: Props) { return (
) : ( + + ))} + {(embed.spoiler && ( + ))}
{!largeMedia && embed.type === "Website" && ( @@ -175,8 +180,12 @@ export default function Embed({ embed }: Props) { } height={height} /> + {embed.spoiler && ( + + )} )} + ); } diff --git a/src/components/common/messaging/embed/EmbedSpoiler.tsx b/src/components/common/messaging/embed/EmbedSpoiler.tsx new file mode 100644 index 00000000..82a71a56 --- /dev/null +++ b/src/components/common/messaging/embed/EmbedSpoiler.tsx @@ -0,0 +1,16 @@ +import classNames from "classnames"; +import { useState } from "preact/hooks"; +import { API } from "revolt.js"; +import styles from "./Embed.module.scss"; + + +export default function EmbedSpoiler(){ + + const [visible, setVisible] = useState(true); + + return ( +
setVisible(!visible)}> +

SPOILER

+
+ ); +}