import { makeElement } from "../htmlUtils.js"; import ClipboardJS from "clipboard"; import UIkit from 'uikit/dist/js/uikit.min.js'; import FileSaver from 'file-saver'; export function CopyableModal(name, contentString) { return makeElement({ tag: "div", class: "modal-sections", attributes: { "uk-modal": "" }, children: makeElement({ tag: "div", class: "uk-modal-dialog", children: [ makeElement({ tag: "button", class: "uk-modal-close-default", attributes: { "uk-close": "", type: "button" } }), makeElement({ tag: "div", class: "uk-modal-header", children: makeElement({ tag: "h2", class: "uk-modal-title", text: name }) }), makeElement({ tag: "div", class: ["uk-modal-body"], children: makeElement({ tag: "pre", class: "wrap-pre", text: contentString }) }), makeElement({ tag: "div", class: ["uk-modal-footer", "uk-text-right"], children: [ makeElement({ tag: "button", class: ["uk-button", "uk-button-primary"], attributes: { type: "button", "data-clipboard-text": contentString }, text: "Download", onclick: _ => { var blob = new Blob([contentString], {type: "text/plain;charset=utf-8"}); FileSaver.saveAs(blob, "result.txt"); } }), makeElement({ tag: "button", class: ["uk-button", "uk-button-primary"], attributes: { type: "button", "data-clipboard-text": contentString }, text: "Copy", thenRun: (e) => { let clipboard = new ClipboardJS(e); clipboard.on('success', _ => { UIkit.notification("Copied to clipboard.", { status: 'success', timeout: 1000 }); }); } }), makeElement({ tag: "button", class: ["uk-button", "uk-button-secondary", "uk-modal-close"], attributes: { type: "button" }, text: "Close" }), ] }), ] }) }); }