1
0
Fork 0
mirror of synced 2024-08-05 05:11:43 +12:00

Handle times properly on time only settings for timestamps

This commit is contained in:
Adria Navarro 2024-06-06 13:03:00 +02:00
parent d3f1180ba8
commit f09b6bf090
2 changed files with 30 additions and 3 deletions

View file

@ -68,6 +68,11 @@
maximum: schema?.constraints?.length?.maximum,
}
},
[FieldType.DATETIME]: (_field, schema) => {
return {
valueAsTimestamp: !schema?.timeOnly,
}
},
}
const fieldSchema = getFieldSchema(field)

View file

@ -16,15 +16,37 @@
export let onChange
export let span
export let helpText = null
export let valueAsTimestamp = false
let fieldState
let fieldApi
const handleChange = e => {
const changed = fieldApi.setValue(e.detail)
if (onChange && changed) {
onChange({ value: e.detail })
let value = e.detail
if (timeOnly && valueAsTimestamp) {
if (!isValidDate(value)) {
// Handle time only fields that are timestamps under the hood
value = timeToDateISOString(value)
}
}
const changed = fieldApi.setValue(value)
if (onChange && changed) {
onChange({ value })
}
}
const isValidDate = value => !isNaN(new Date(value))
const timeToDateISOString = value => {
let [hours, minutes] = value.split(":").map(Number)
const date = new Date()
date.setHours(hours)
date.setMinutes(minutes)
date.setSeconds(0)
date.setMilliseconds(0)
return date.toISOString()
}
</script>