summaryrefslogtreecommitdiff
path: root/app/edit.js
blob: 158788292cb163ce56ccbeae94662a89f0aa2c2f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
function editButton(id) {
    const buttonElement = document.createElement('i');
    buttonElement.classList.add('edit');

    buttonElement.classList.add('fa-solid');
    buttonElement.classList.add('fa-pen-to-square');
    buttonElement.setAttribute('title', 'Edit');

    buttonElement.addEventListener('click', (clicked) => {
        editElement(clicked.target.parentNode, id);
    });

    return buttonElement;
}

function editElement(element, id) {
    const forms = document.createElement('form');
    const put = document.createElement('input');

    put.style.fontSize = '0.9em';
    put.focus();
    put.value = element.childNodes[0].textContent;
    
    forms.appendChild(put);

    hide(element);

    forms.addEventListener('submit', (e) => {
        e.preventDefault();
        unhide(element, put, forms, id);
    }, true);

    forms.addEventListener('focusout', (e) => {
        e.preventDefault();
        unhide(element, put, forms, id);
    }, true);

    element.appendChild(forms);
}

function hide(element) {
    element.childNodes[0].textContent = '';
    element.childNodes[1].style.display = 'none';
    element.childNodes[2].style.display = 'none';
    element.childNodes[3].style.display = 'none';
}

function unhide(element, put, forms, id) {
    element.childNodes[0].textContent = put.value;
    element.childNodes[1].style.display = '';
    element.childNodes[2].style.display = '';
    element.childNodes[3].style.display = '';

    put.remove();
    forms.remove();

    id = jsList.findIndex(el => el.id == id);
    jsList[id].name = put.value;
    localStorage.setItem('jsList', JSON.stringify(jsList));
}