aboutsummaryrefslogtreecommitdiff
path: root/static/date_time.js
blob: 8b7249dd42a00448c158eb46b208f4fa4d5f7370 (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
function init_date_time_single(dt) {
    dt.time = dt.querySelector('[type=time]');
    dt.date = dt.querySelector('[type=date]');

    Object.defineProperty(dt, 'value', {
        get: () => (dt.date.value && dt.time.value)
        // TODO wrapping <date-time/> tag
            ? dt.date.value + "T" + dt.time.value
            : "",
        set: (v) => [dt.date.value, dt.time.value] = v.split("T"),
    });

    Object.defineProperty(dt, 'name', {
        get: () => dt.attributes.name.value
    });

    dt._addEventListener = dt.addEventListener;
    dt.addEventListener = function (field, proc) {
        /* input events are propagated to children
           other events target ourselves */
        switch (field) {
        case 'input':
            dt.time.addEventListener(field, proc);
            dt.date.addEventListener(field, proc);
            break;
        default:
            dt._addEventListener(field, proc);
        }
    }
}

function init_date_time() {
    for (let dt of document.getElementsByClassName("date-time")) {
        init_date_time_single(dt);
    }
}