From 9c376aad37c0a92472d2b72646146d88990a7a65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 23 Nov 2020 22:47:47 +0100 Subject: JS Add date_time pseudo tag. --- module/calp/html/view/calendar.scm | 1 + static/date_time.js | 30 ++++++++++++++++++++++++++++++ static/script.js | 1 + 3 files changed, 32 insertions(+) create mode 100644 static/date_time.js diff --git a/module/calp/html/view/calendar.scm b/module/calp/html/view/calendar.scm index 5c503302..d41197b0 100644 --- a/module/calp/html/view/calendar.scm +++ b/module/calp/html/view/calendar.scm @@ -113,6 +113,7 @@ (script (@ (defer) (src "/static/binders.js"))) (script (@ (defer) (src "/static/server_connect.js"))) (script (@ (defer) (src "/static/input_list.js"))) + (script (@ (defer) (src "/static/date_time.js"))) (script (@ (defer) (src "/static/script.js"))) ,(calendar-styles calendars)) 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 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(); } -- cgit v1.2.3