aboutsummaryrefslogtreecommitdiff
path: root/static/date_time.js
blob: 274d476f6c907b36bb293a490818db8d043b13c6 (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
function init_date_time() {
    for (let dt of document.getElementsByClassName("date-time")) {
        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) {
            switch (field) {
            case 'input':
                dt.time.addEventListener(field, proc);
                dt.date.addEventListener(field, proc);
                break;
            default:
                dt._addEventListener(field, proc);
            }
        }
    }
}