diff options
Diffstat (limited to 'static')
-rw-r--r-- | static/date_time.js | 30 | ||||
-rw-r--r-- | static/script.js | 1 |
2 files changed, 31 insertions, 0 deletions
diff --git a/static/date_time.js b/static/date_time.js new file mode 100644 index 00000000..274d476f --- /dev/null +++ b/static/date_time.js @@ -0,0 +1,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); + } + } + } +} diff --git a/static/script.js b/static/script.js index 409359a7..3a3148b5 100644 --- a/static/script.js +++ b/static/script.js @@ -367,6 +367,7 @@ window.onload = function () { // init_arbitary_kv(); + init_date_time(); init_input_list(); } |