aboutsummaryrefslogtreecommitdiff
path: root/client/js/controls
diff options
context:
space:
mode:
authorrr-2017-02-21 18:29:32 +0100
committerrr-2017-02-21 18:59:12 +0100
commit34366b72fbc8583c8eb8478dde0d65c4b9321b18 (patch)
tree392929e92270fe28734cc582c7b0da393bbeac21 /client/js/controls
parent5dfdfd49e9f812844560c4185abd568d14df86c8 (diff)
client/file-dropper: add ability to lock URLs
Diffstat (limited to 'client/js/controls')
-rw-r--r--client/js/controls/file_dropper_control.js25
1 files changed, 23 insertions, 2 deletions
diff --git a/client/js/controls/file_dropper_control.js b/client/js/controls/file_dropper_control.js
index 7b3c120..407fa9d 100644
--- a/client/js/controls/file_dropper_control.js
+++ b/client/js/controls/file_dropper_control.js
@@ -5,6 +5,8 @@ const views = require('../util/views.js');
const template = views.getTemplate('file-dropper');
+const KEY_RETURN = 13;
+
class FileDropperControl extends events.EventTarget {
constructor(target, options) {
super();
@@ -14,6 +16,7 @@ class FileDropperControl extends events.EventTarget {
extraText: options.extraText,
allowMultiple: options.allowMultiple,
allowUrls: options.allowUrls,
+ lock: options.lock,
id: 'file-' + Math.random().toString(36).substring(7),
});
@@ -37,8 +40,12 @@ class FileDropperControl extends events.EventTarget {
'change', e => this._evtFileChange(e));
if (this._urlInputNode) {
+ this._urlInputNode.addEventListener(
+ 'keydown', e => this._evtUrlInputKeyDown(e));
+ }
+ if (this._urlConfirmButtonNode) {
this._urlConfirmButtonNode.addEventListener(
- 'click', e => this._evtUrlConfirm(e));
+ 'click', e => this._evtUrlConfirmButtonClick(e));
}
this._originalHtml = this._dropperNode.innerHTML;
@@ -62,6 +69,10 @@ class FileDropperControl extends events.EventTarget {
_emitUrls(urls) {
urls = Array.from(urls).map(url => url.trim());
+ if (this._options.lock) {
+ this._dropperNode.innerText =
+ urls.map(url => url.split(/\//).reverse()[0]).join(', ');
+ }
for (let url of urls) {
if (!url) {
return;
@@ -106,7 +117,17 @@ class FileDropperControl extends events.EventTarget {
this._emitFiles(e.dataTransfer.files);
}
- _evtUrlConfirm(e) {
+ _evtUrlInputKeyDown(e) {
+ if (e.which !== KEY_RETURN) {
+ return;
+ }
+ e.preventDefault();
+ this._dropperNode.classList.remove('active');
+ this._emitUrls(this._urlInputNode.value.split(/[\r\n]/));
+ this._urlInputNode.value = '';
+ }
+
+ _evtUrlConfirmButtonClick(e) {
e.preventDefault();
this._dropperNode.classList.remove('active');
this._emitUrls(this._urlInputNode.value.split(/[\r\n]/));

© 2015 - 2026 Jakob L. Kreuze