44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
|
function elt(type, props, ...children) {
|
||
|
let dom = document.createElement(type);
|
||
|
if (props) Object.assign(dom, props);
|
||
|
for (let child of children) {
|
||
|
if (typeof child != "string") dom.appendChild(child);
|
||
|
else dom.appendChild(document.createTextNode(child));
|
||
|
}
|
||
|
return dom;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param {Node} targetNode
|
||
|
*/
|
||
|
function addToggleButton(targetNode) {
|
||
|
let manualToggleButton = elt(
|
||
|
"td",
|
||
|
{},
|
||
|
elt(
|
||
|
"div",
|
||
|
{ className: "basic-button" },
|
||
|
elt(
|
||
|
"button",
|
||
|
{
|
||
|
onclick: (event) => {
|
||
|
let textInputField = elt("input", { type: "text", id: targetNode.id });
|
||
|
targetNode.replaceWith(textInputField);
|
||
|
event.target.addEventListener("click", (event) => {
|
||
|
textInputField.replaceWith(targetNode);
|
||
|
});
|
||
|
},
|
||
|
},
|
||
|
"Toggle manual"
|
||
|
)
|
||
|
)
|
||
|
);
|
||
|
targetNode.parentElement.appendChild(manualToggleButton);
|
||
|
}
|
||
|
|
||
|
const toggleableFields = ["#id_game", "#id_edition", "#id_platform"];
|
||
|
|
||
|
toggleableFields.map((selector) => {
|
||
|
addToggleButton(document.querySelector(selector));
|
||
|
});
|