diff --git a/compliance-dashboard/src/components/copy_button.rs b/compliance-dashboard/src/components/copy_button.rs index 2ea335a..809d387 100644 --- a/compliance-dashboard/src/components/copy_button.rs +++ b/compliance-dashboard/src/components/copy_button.rs @@ -22,8 +22,12 @@ pub fn CopyButton(value: String, #[props(default = false)] small: bool) -> Eleme title: if copied() { "Copied!" } else { "Copy to clipboard" }, onclick: move |_| { let val = value.clone(); - // Escape single quotes for JS - let escaped = val.replace('\\', "\\\\").replace('\'', "\\'"); + // Escape for JS single-quoted string + let escaped = val + .replace('\\', "\\\\") + .replace('\'', "\\'") + .replace('\n', "\\n") + .replace('\r', "\\r"); let js = format!("navigator.clipboard.writeText('{escaped}')"); document::eval(&js); copied.set(true);