Fix new file onblur error + Convert let to var

This commit is contained in:
stackxp 2025-12-24 12:33:27 +01:00
parent c58650e706
commit 614d861cf7
2 changed files with 79 additions and 70 deletions

View file

@ -4159,7 +4159,6 @@ html.e #detree {
} }
#tempname { #tempname {
width: 100%;
color: var(--fg); color: var(--fg);
background: var(--txt-bg); background: var(--txt-bg);
border: none; border: none;

View file

@ -985,13 +985,13 @@ ebi('op_cfg').innerHTML = (
' </div>\n' + ' </div>\n' +
'</div>\n' + '</div>\n' +
'<div><h3>' + L.cl_keytype + '</h3><div><select id="key_notation"></select></div></div>\n' + '<div><h3>' + L.cl_keytype + '</h3><div><select id="key_notation"></select></div></div>\n' +
'<div>' + (!MOBILE ? '<div>' +
' <h3>' + L.cl_rcm + '</h3>' + ' <h3>' + L.cl_rcm + '</h3>' +
' <div>' + ' <div>' +
' <a id="ren" class="tgl btn" href="#" tt="' + L.cdt_ren + '">enable</a>' + ' <a id="ren" class="tgl btn" href="#" tt="' + L.cdt_ren + '">enable</a>' +
' <a id="rno" class="tgl btn" href="#" tt="' + L.cdt_rno + '">double-click</a>' + ' <a id="rno" class="tgl btn" href="#" tt="' + L.cdt_rno + '">double-click</a>' +
' </div>' + ' </div>' +
'</div>' + '</div>' : '') +
'<div><h3>' + L.cl_hiddenc + ' &nbsp;' + (MOBILE ? '<a href="#" id="hcolsh">' + L.cl_hidec + '</a> / ' : '') + '<a href="#" id="hcolsr">' + L.cl_reset + '</a></h3><div id="hcols"></div></div>' '<div><h3>' + L.cl_hiddenc + ' &nbsp;' + (MOBILE ? '<a href="#" id="hcolsh">' + L.cl_hidec + '</a> / ' : '') + '<a href="#" id="hcolsr">' + L.cl_reset + '</a></h3><div id="hcols"></div></div>'
); );
@ -9448,19 +9448,19 @@ ebi('files').onclick = ebi('docul').onclick = function (e) {
let rcm = (function () { var rcm = (function () {
if (MOBILE) if (MOBILE)
return {enabled: false} return {enabled: false}
let r = { var r = {
enabled: true, enabled: true,
double: true double: true
}; };
bcfg_bind(r, 'enabled', 'ren', true); bcfg_bind(r, 'enabled', 'ren', true);
bcfg_bind(r, 'double', 'rno', true); bcfg_bind(r, 'double', 'rno', true);
let menu = ebi('rcm'); var menu = ebi('rcm');
let selFile = { var selFile = {
elem: null, elem: null,
type: null, type: null,
path: null, path: null,
@ -9470,7 +9470,7 @@ let rcm = (function () {
}; };
function mktemp(is_dir) { function mktemp(is_dir) {
let row = mknod('tr', 'temp', var row = mknod('tr', 'temp',
'<td>-new-</td>' + '<td>-new-</td>' +
'<td colspan="' + (QSA("#files thead th").length - 1) + '"><input id="tempname" class="i" type="text" placeholder="' + (is_dir ? 'Folder' : "File") + ' Name"></td>' '<td colspan="' + (QSA("#files thead th").length - 1) + '"><input id="tempname" class="i" type="text" placeholder="' + (is_dir ? 'Folder' : "File") + ' Name"></td>'
); );
@ -9480,94 +9480,104 @@ let rcm = (function () {
name = ('' + name).trim(); name = ('' + name).trim();
if (!name) if (!name)
return; return;
let data = new FormData(); var data = new FormData();
data.set("act", is_dir ? "mkdir" : "new_md"); data.set("act", is_dir ? "mkdir" : "new_md");
data.set("name", name); data.set("name", name);
let req = new XHR(); var req = new XHR();
req.open("POST", get_evpath()); req.open("POST", get_evpath());
req.onload = req.onerror = function() { req.onload = req.onerror = function() {
if (req.status == 405 || req.status == 500) if (req.status == 405 || req.status == 500)
return toast.err(3, "a " + (is_dir ? "folder" : "file") + " with that name alredy exists."); return toast.err(3, "a " + (is_dir ? "folder" : "file") + " with that name already exists.");
if (req.status < 200 || req.status > 399) if (req.status < 200 || req.status > 399)
return toast.err(3, "couldn't create " + (is_dir ? "folder" : "file") + ": <br><code>" + esc(req.responseText) + '</code>'); return toast.err(3, "couldn't create " + (is_dir ? "folder" : "file") + ": <br><code>" + esc(req.responseText) + '</code>');
toast.ok(3, "OK :)"); toast.ok(3, "OK :)");
reload_browser();
setTimeout(function() {location.reload()}, 100);
}; };
req.send(data); req.send(data);
} }
let input = ebi("tempname"); var input = ebi("tempname");
input.onblur = function() { input.onblur = function() {
sendit(input.value); sendit(input.value);
// Chrome blurs elements when calling remove for some reason
input.onblur = null;
row.remove(); row.remove();
}; };
input.onkeydown = function(e) { input.onkeydown = function(e) {
if (e.key == "Enter") if (e.key == "Enter")
sendit(input.value); sendit(input.value);
if (e.key == "Enter" || e.key == "Escape") { if (e.key == "Enter" || e.key == "Escape") {
input.onblur = null;
row.remove(); row.remove();
ev(e) ev(e);
} }
}; };
input.focus(); input.focus();
} }
let opts = QSA('#rcm a'); var opts = QSA('#rcm a');
for (let i = 0; i < opts.length; i++) { for (var i = 0; i < opts.length; i++) {
let fn = function() {}; opts[i].onclick = function(e) {
switch(opts[i].id.slice(1)) { ev(e);
case 'opn': switch(e.target.id.slice(1)) {
fn = function() { case 'opn':
let a = mknod('a'); var a = mknod('a');
a.href = selFile.path; a.href = selFile.path;
a.target = selFile.type == "dir" ? '' : '_blank'; a.target = selFile.type == "dir" ? '' : '_blank';
a.click(); a.click();
}; break;
break; case 'ply':
case 'ply': if (selFile.type == 'gf')
fn = function() {selFile.type == 'gf' ? thegrid.imshow(selFile.relpath) : play('f-' + selFile.id)}; thegrid.imshow(selFile.relpath);
break; else
case 'pla': play('f-' + selFile.id);
fn = function() {play('f-' + selFile.id)}; break;
break; case 'pla':
case 'txt': play('f-' + selFile.id);
fn = function() {location = '?doc=' + selFile.relpath}; break;
break; case 'txt':
case 'md': location = '?doc=' + selFile.relpath;
fn = function() {location = selFile.path + '?v'}; break;
break; case 'md':
case 'dl': location = selFile.path + '?v';
fn = function() {ebi('seldl').click()}; break;
break; case 'dl':
case 'zip': ebi('seldl').click();
fn = function() {ebi('selzip').click()}; break;
break; case 'zip':
case 'cut': ebi('selzip').click();
fn = function() {fileman.cut()}; break;
break; case 'del':
case 'cpy': fileman.delete();
fn = function() {fileman.cpy()}; break;
break; case 'cut':
case 'pst': fileman.cut();
fn = function() {fileman.paste(); fileman.clip = []}; break;
break; case 'cpy':
case 'nfo': fileman.cpy();
fn = function() {mktemp(true)}; break;
break; case 'pst':
case 'nfi': fileman.paste();
fn = function() {mktemp()}; fileman.clip = [];
break; break;
case 'sal': case 'nfo':
fn = function() {msel.evsel(null, true); selFile.no_dsel = true}; mktemp(true);
break; break;
case 'sin': case 'nfi':
fn = function() {msel.evsel(null, 't')}; mktemp();
break; break;
} case 'sal':
opts[i].onclick = function(e) { msel.evsel(null, true);
ev(e); selFile.no_dsel = true;
fn(); break;
case 'sin':
msel.evsel(null, 't');
break;
default:
console.warn('Invalid rcm option "' + e.target.id + '"');
}
hide(true); hide(true);
}; };
} }
@ -9576,7 +9586,7 @@ let rcm = (function () {
selFile.elem = selFile.type = selFile.path = selFile.id = selFile.relpath = null; selFile.elem = selFile.type = selFile.path = selFile.id = selFile.relpath = null;
selFile.no_dsel = false; selFile.no_dsel = false;
if (target) { if (target) {
let file = target.closest("#files tbody tr"); var file = target.closest("#files tbody tr");
if (file) { if (file) {
selFile.no_dsel = clgot(file, "sel"); selFile.no_dsel = clgot(file, "sel");
clmod(file, "sel", true); clmod(file, "sel", true);
@ -9587,7 +9597,7 @@ let rcm = (function () {
if (file.children[3].innerHTML == "---") if (file.children[3].innerHTML == "---")
selFile.type = "dir"; selFile.type = "dir";
else { else {
let lead = file.firstChild.firstChild; var lead = file.firstChild.firstChild;
selFile.id = lead.id.split('-')[1]; selFile.id = lead.id.split('-')[1];
selFile.type = lead.innerHTML[0] == '(' ? 'gf' : lead.id.split('-')[0]; selFile.type = lead.innerHTML[0] == '(' ? 'gf' : lead.id.split('-')[0];
} }
@ -9595,8 +9605,8 @@ let rcm = (function () {
} }
msel.selui(); msel.selui();
let has_sel = msel.getsel().length; var has_sel = msel.getsel().length;
let has_clip = fileman.clip.length; var has_clip = fileman.clip.length;
clmod(ebi('ropn'), 'hide', !selFile.path); clmod(ebi('ropn'), 'hide', !selFile.path);
clmod(ebi('rply'), 'hide', selFile.type != 'gf' && selFile.type != 'af'); clmod(ebi('rply'), 'hide', selFile.type != 'gf' && selFile.type != 'af');