diff --git a/htmgo-site/partials/html-to-go.go b/htmgo-site/partials/html-to-go.go
index 28d0634f..358f8686 100644
--- a/htmgo-site/partials/html-to-go.go
+++ b/htmgo-site/partials/html-to-go.go
@@ -2,6 +2,7 @@ package partials
import (
"github.com/maddalax/htmgo/framework/h"
+ "github.com/maddalax/htmgo/framework/js"
"github.com/maddalax/htmgo/tools/html-to-htmgo/htmltogo"
"htmgo-site/ui"
)
@@ -34,8 +35,30 @@ func GoOutput(content string) *h.Element {
h.Class("h-full w-1/2 min-w-1/2"),
h.Id("go-output"),
h.Div(
- h.Class("h-[90%] w-full rounded border border-slate-200"),
- h.UnsafeRaw(content),
+ h.Class("h-[90%] w-full rounded border border-slate-200 relative"),
+ h.Div(
+ h.Class("h-full"),
+ h.Id("go-output-content"),
+ h.UnsafeRaw(content),
+ ),
+ h.If(content != "", h.Div(
+
+ h.Class("absolute top-0 right-0 p-2 bg-slate-800 text-white rounded-bl-md cursor-pointer"),
+ h.Text("Copy"),
+ // language=JavaScript
+ h.OnClick(js.EvalJs(`
+ if(!navigator.clipboard) {
+ alert("Clipboard API not supported");
+ return;
+ }
+ let text = self.parentElement.querySelector("#go-output-content").innerText;
+ navigator.clipboard.writeText(text);
+ self.innerText = "Copied!";
+ setTimeout(() => {
+ self.innerText = "Copy";
+ }, 1000);
+ `)),
+ )),
),
)
}