diff --git a/app/assets/javascripts/discourse/app/components/post-text-selection-toolbar.gjs b/app/assets/javascripts/discourse/app/components/post-text-selection-toolbar.gjs
index 4fdc6853c15..8b3e95b9402 100644
--- a/app/assets/javascripts/discourse/app/components/post-text-selection-toolbar.gjs
+++ b/app/assets/javascripts/discourse/app/components/post-text-selection-toolbar.gjs
@@ -12,8 +12,13 @@ import PluginOutlet from "discourse/components/plugin-outlet";
import concatClass from "discourse/helpers/concat-class";
import { ajax } from "discourse/lib/ajax";
import Sharing from "discourse/lib/sharing";
-import { postUrl, setCaretPosition } from "discourse/lib/utilities";
+import {
+ clipboardCopy,
+ postUrl,
+ setCaretPosition,
+} from "discourse/lib/utilities";
import { getAbsoluteURL } from "discourse-common/lib/get-url";
+import I18n from "discourse-i18n";
export function fixQuotes(str) {
// u+201c, u+201d = “ ”
@@ -27,6 +32,7 @@ export default class PostTextSelectionToolbar extends Component {
@service site;
@service siteSettings;
@service appEvents;
+ @service toasts;
@tracked isFastEditing = false;
@@ -96,6 +102,17 @@ export default class PostTextSelectionToolbar extends Component {
event.stopPropagation();
}
+ @action
+ async copyQuoteToClipboard() {
+ const text = await this.args.data.buildQuote();
+ clipboardCopy(text);
+ this.toasts.success({
+ duration: 3000,
+ data: { message: I18n.t("post.quote_copied_to_clibboard") },
+ });
+ await this.args.data.hideToolbar();
+ }
+
@action
async closeFastEdit() {
this.isFastEditing = false;
@@ -216,6 +233,16 @@ export default class PostTextSelectionToolbar extends Component {
/>
{{/if}}
+ {{#if @data.canCopyQuote}}
+
+ {{/if}}
+