From d35e5c90fb164f3650b4f273f7abc7c2afad84be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Fri, 26 Nov 2021 17:12:54 +0100 Subject: Fix datetime becomming dateonly when hitting midnight. --- static/components/date-time-input.ts | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'static/components') diff --git a/static/components/date-time-input.ts b/static/components/date-time-input.ts index a9d10ba3..27dad095 100644 --- a/static/components/date-time-input.ts +++ b/static/components/date-time-input.ts @@ -19,7 +19,7 @@ class DateTimeInput extends /* HTMLInputElement */ HTMLElement { makeElement('input', { type: 'date' }), makeElement('input', { type: 'time', - disabled: this.hasAttribute('dateonly') + disabled: this.dateonly }) ) } @@ -59,29 +59,38 @@ class DateTimeInput extends /* HTMLInputElement */ HTMLElement { } } - get valueAsDate(): Date { + set value(date: Date) { + let [d, t] = date.format("~L~Y-~m-~dT~H:~M:~S").split('T'); + console.log(d, t); + (this.querySelector("input[type='date']") as HTMLInputElement).value = d; + (this.querySelector("input[type='time']") as HTMLInputElement).value = t; + + this.dateonly = date.dateonly; + } + + get value(): Date { let dt; let date = (this.querySelector("input[type='date']") as HTMLInputElement).value; - if (this.hasAttribute('dateonly')) { + if (this.dateonly) { dt = parseDate(date); - dt.type = 'date'; + dt.dateonly = true; } else { let time = (this.querySelector("input[type='time']") as HTMLInputElement).value; dt = parseDate(date + 'T' + time) - dt.type = 'date-time'; + dt.dateonly = false; } return dt; } - get value(): string { + get stringValue(): string { if (this.dateonly) { - return this.valueAsDate.format("~Y-~m-~d") + return this.value.format("~Y-~m-~d") } else { - return this.valueAsDate.format("~Y-~m-~dT~H:~M:~S") + return this.value.format("~Y-~m-~dT~H:~M:~S") } } - set value(new_value: Date | string) { + set stringValue(new_value: Date | string) { // console.log('Setting date'); let date, time, dateonly = false; if (new_value instanceof Date) { -- cgit v1.2.3