tagedit v1 lol
This commit is contained in:
@ -88,6 +88,7 @@ const flash = ({ type, msg }) => {
|
||||
a.href = `/tag/${tag.tag}`;
|
||||
a.style = "color: inherit !important";
|
||||
a.innerHTML = tag.tag;
|
||||
a.addEventListener("click", editTagEvent); // tmp
|
||||
|
||||
const span = document.createElement("span");
|
||||
span.classList.add("badge", "mr-2");
|
||||
@ -265,8 +266,70 @@ const flash = ({ type, msg }) => {
|
||||
}
|
||||
};
|
||||
|
||||
let tmptt = null;
|
||||
const editTagEvent = async e => { // mousedown
|
||||
e.preventDefault();
|
||||
|
||||
if(e.detail === 2) {
|
||||
clearTimeout(tmptt);
|
||||
const old = e.target;
|
||||
const parent = e.target.parentElement;
|
||||
const oldtag = e.target.innerText;
|
||||
|
||||
const textfield = document.createElement('input');
|
||||
textfield.value = e.target.innerText;
|
||||
textfield.size = 10;
|
||||
|
||||
parent.insertAdjacentElement('afterbegin', textfield);
|
||||
textfield.focus();
|
||||
parent.removeChild(e.target);
|
||||
parent.querySelector('a:last-child').style.display = 'none';
|
||||
|
||||
textfield.addEventListener("keyup", async e => {
|
||||
if(e.key === 'Enter') {
|
||||
// send
|
||||
let res = await fetch('/api/v2/admin/tags/' + encodeURIComponent(oldtag), {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
body: JSON.stringify({
|
||||
newtag: textfield.value
|
||||
})
|
||||
});
|
||||
const status = res.status;
|
||||
res = await res.json();
|
||||
|
||||
switch(status) {
|
||||
case 200: // success, change
|
||||
case 201:
|
||||
parent.removeChild(textfield);
|
||||
parent.insertAdjacentElement('afterbegin', old);
|
||||
parent.querySelector('a:last-child').style.display = '';
|
||||
old.href = `/tag/${res.tag}`;
|
||||
old.innerText = res.tag.trim();
|
||||
break;
|
||||
default:
|
||||
console.log(res);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(e.key === 'Escape') {
|
||||
parent.removeChild(textfield);
|
||||
parent.insertAdjacentElement('afterbegin', old);
|
||||
parent.querySelector('a:last-child').style.display = '';
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
tmptt = setTimeout(() => location.href = e.target.href, 250);
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
_addtag.addEventListener("click", addtagClick);
|
||||
document.querySelector("a#a_toggle").addEventListener("click", toggleEvent);
|
||||
[...document.querySelectorAll("#tags > .badge > a:first-child")].map(t => t.addEventListener("click", editTagEvent));
|
||||
[...document.querySelectorAll("#tags > .badge > a:last-child")].map(t => t.addEventListener("click", deleteEvent));
|
||||
document.querySelector("svg#a_delete").addEventListener("click", deleteButtonEvent);
|
||||
document.querySelector("svg#a_favo").addEventListener("click", toggleFavEvent);
|
||||
|
Reference in New Issue
Block a user