1
0
Fork 0
VaultUI/src/elements/CopyableInputBox.js

37 lines
1,016 B
JavaScript
Raw Normal View History

2021-04-15 13:01:58 +01:00
import ClipboardJS from "clipboard";
import { addClipboardNotifications } from "../pageUtils.js";
2021-04-15 13:01:58 +01:00
import { makeFormIcon, makeElement } from "../htmlUtils.js";
import { MarginInline } from "./MarginInline.js";
export function CopyableInputBox(text, copyable = true) {
let inputBoxDiv = makeElement({ tag: "div" });
let inputBoxCopyButton = null;
if (copyable) {
inputBoxCopyButton = makeFormIcon("copy");
let clipboard = new ClipboardJS(inputBoxCopyButton);
addClipboardNotifications(clipboard, 600);
2021-04-15 13:01:58 +01:00
}
let inputBoxInput = makeElement({
tag: "input",
class: ["uk-input"],
attributes: { "readonly": true, "type": "text" },
});
let inputBoxInner = MarginInline([
inputBoxCopyButton,
inputBoxInput
]);
inputBoxDiv.appendChild(inputBoxInner);
inputBoxDiv.setText = function (text) {
inputBoxInput.value = `${text}`;
if (copyable) {
inputBoxCopyButton.dataset.clipboardText = `${text}`;
}
};
inputBoxDiv.setText(text);
return inputBoxDiv;
}