ui.js (3117B)
1 const UI = { 2 createElement: config => { 3 if (!config) return; 4 const elementType = config.element || "div"; 5 const element = document.createElement(elementType); 6 7 Object.keys(config).forEach(property => { 8 const value = config[property]; 9 switch (property.toLowerCase()) { 10 case "id": 11 case "src": 12 case "style": 13 case "placeholder": 14 case "title": 15 case "accept": 16 element.setAttribute(property, value); 17 return; 18 case "classname": 19 element.setAttribute("class", value); 20 return; 21 case "colspan": 22 element.setAttribute("colspan", value); 23 return; 24 case "text": 25 element.innerText = value; 26 return; 27 case "value": 28 element.value = value; 29 return; 30 case "html": 31 element.innerHTML = value; 32 return; 33 case "onclick": 34 element.onclick = value.bind(element); 35 return; 36 case "onchange": 37 element.onchange = value.bind(element); 38 return; 39 case "onkeydown": 40 element.onkeydown = value.bind(element); 41 return; 42 case "onkeyup": 43 element.onkeyup = value.bind(element); 44 return; 45 case "type": 46 if (elementType === "input") element.setAttribute("type", value); 47 return; 48 case "children": 49 if (value instanceof Array) { 50 value.forEach(child => { 51 const childElement = 52 child instanceof Element ? child : UI.createElement(child); 53 if (!childElement) return; 54 element.appendChild(childElement); 55 }); 56 } else { 57 const child = value; 58 const childElement = 59 child instanceof Element ? child : UI.createElement(child); 60 if (!childElement) return; 61 element.appendChild(childElement); 62 element.appendChild(childElement); 63 } 64 return; 65 case "disabled": 66 if (value) element.setAttribute("disabled", true); 67 return; 68 case "checked": 69 if (value) element.setAttribute("checked", true); 70 return; 71 case "indeterminate": 72 element.indeterminate = value; 73 return; 74 } 75 }); 76 return element; 77 }, 78 getElement: id => { 79 return document.getElementById(id); 80 }, 81 getRoot: () => { 82 return document.getElementsByTagName("body")[0]; 83 }, 84 scrollPositions: {}, 85 saveScrollPosition: elementId => { 86 let scrollElement = UI.getElement(elementId); 87 if (!scrollElement) return; 88 UI.scrollPositions[elementId] = { 89 scrollLeft: scrollElement.scrollLeft, 90 scrollRight: scrollElement.scrollRight 91 }; 92 }, 93 loadScrollPosition: elementId => { 94 let scrollElement = UI.getElement(elementId); 95 if (!scrollElement) return; 96 if (!UI.scrollPositions[elementId]) return; 97 scrollElement.scrollLeft = UI.scrollPositions[elementId].scrollLeft; 98 scrollElement.scrollRight = UI.scrollPositions[elementId].scrollRight; 99 } 100 };