From 24e06a13894f885bbb75b79beaa43d1c6fdfbae5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 17 May 2021 00:53:51 +0200 Subject: Rework date-time input to be cleaner + work again. --- static/date_time.js | 54 +++++++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 24 deletions(-) (limited to 'static/date_time.js') diff --git a/static/date_time.js b/static/date_time.js index 274d476f..8b7249dd 100644 --- a/static/date_time.js +++ b/static/date_time.js @@ -1,30 +1,36 @@ -function init_date_time() { - for (let dt of document.getElementsByClassName("date-time")) { - dt.time = dt.querySelector('[type=time]'); - dt.date = dt.querySelector('[type=date]'); +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 tag - ? dt.date.value + "T" + dt.time.value - : "", - set: (v) => [dt.date.value, dt.time.value] = v.split("T"), - }); + 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 - }); + 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); - } + 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); + } +} -- cgit v1.2.3