Use inline content disposition for common images and PDFs (#6924)

* Use inline content disposition for common images and PDFs

* Add double-click on widgets to download
This commit is contained in:
Tom Moor
2024-05-18 12:17:04 -04:00
committed by GitHub
parent c872f3e245
commit cd4f3f9ff2
5 changed files with 51 additions and 7 deletions

View File

@@ -4,24 +4,38 @@ import { s } from "../../styles";
import { sanitizeUrl } from "../../utils/urls";
type Props = {
/** Icon to display on the left side of the widget */
icon: React.ReactNode;
/** Title of the widget */
title: React.ReactNode;
/** Context, displayed to right of title */
context?: React.ReactNode;
/** URL to open when the widget is clicked */
href: string;
/** Whether the widget is currently selected */
isSelected: boolean;
/** Children to display to the right of the context */
children?: React.ReactNode;
/** Callback fired when the widget is double clicked */
onDoubleClick?: React.MouseEventHandler<HTMLAnchorElement>;
/** Callback fired when the widget is clicked */
onMouseDown?: React.MouseEventHandler<HTMLAnchorElement>;
/** Callback fired when the widget is clicked */
onClick?: React.MouseEventHandler<HTMLAnchorElement>;
};
export default function Widget(props: Props & ThemeProps<DefaultTheme>) {
const className = props.isSelected
? "ProseMirror-selectednode widget"
: "widget";
return (
<Wrapper
className={
props.isSelected ? "ProseMirror-selectednode widget" : "widget"
}
className={className}
target="_blank"
href={sanitizeUrl(props.href)}
rel="noreferrer nofollow"
onDoubleClick={props.onDoubleClick}
onMouseDown={props.onMouseDown}
onClick={props.onClick}
>

View File

@@ -86,6 +86,9 @@ export default class Attachment extends Node {
href={node.attrs.href}
title={node.attrs.title}
onMouseDown={this.handleSelect(props)}
onDoubleClick={() => {
this.editor.commands.downloadAttachment();
}}
onClick={(event) => {
if (isEditable) {
event.preventDefault();
@@ -159,6 +162,7 @@ export default class Attachment extends Node {
// create a temporary link node and click it
const link = document.createElement("a");
link.href = node.attrs.href;
link.target = "_blank";
document.body.appendChild(link);
link.click();