SSH: Change the input box type for Private Key field from textarea to file.

This commit is contained in:
NI
2019-08-29 21:27:43 +08:00
parent b1e77f70ba
commit 6d349f133e
3 changed files with 90 additions and 12 deletions

View File

@@ -114,6 +114,29 @@
@change="verify(key, field, true)"
></textarea>
<input
v-if="field.field.type === 'textfile'"
type="file"
autocomplete="off"
:placeholder="field.field.example"
:name="field.field.name + '-file'"
:autofocus="field.autofocus"
@change="importFile($event.target, field)"
/>
<input
v-if="field.field.type === 'textfile'"
v-model="field.field.value"
v-focus="field.autofocus"
type="text"
autocomplete="off"
:name="field.field.name"
:placeholder="field.field.example"
:autofocus="field.autofocus"
style="display: none"
@input="verify(key, field, false)"
@change="verify(key, field, true)"
/>
<div v-if="field.field.type === 'textdata'" class="textinfo">
<div class="info">{{ field.field.value }}</div>
</div>
@@ -387,6 +410,36 @@ export default {
event.target.style.height = "";
event.target.style.height = event.target.scrollHeight + "px";
},
importFile(el, field) {
if (el.files.length <= 0) {
return;
}
el.disabled = "disabled";
let r = new FileReader();
r.onload = () => {
let s = el.nextSibling;
for (;;) {
if (s.tagName !== "INPUT") {
s = s.nextSibling;
continue;
}
field.field.value = r.result;
s.dispatchEvent(new Event("change"));
break;
}
el.disabled = "";
};
r.readAsText(el.files[0], "utf-8");
},
verify(key, field, force) {
try {
field.message = "" + field.field.verify(field.field.value);