import { AbsoluteTime } from "@gnu-taler/taler-util"; import { InputLine } from "./InputLine.js"; import { Fragment, VNode, h } from "preact"; import { format, parse } from "date-fns"; import { Dialog } from "./Dialog.js"; import { Calendar } from "./Calendar.js"; import { useState } from "preact/hooks"; import { useField } from "./useField.js"; import { UIFormProps } from "./FormProvider.js"; import { TimePicker } from "./TimePicker.js"; export function InputAbsoluteTime( props: { pattern?: string } & UIFormProps, ): VNode { const pattern = props.pattern ?? "dd/MM/yyyy"; const [open, setOpen] = useState(false) const { value, onChange } = useField(props.name); return ( type="text" after={{ type: "button", onClick: () => { setOpen(true) }, // icon: , children: ( ) }} converter={{ //@ts-ignore fromStringUI: (v): AbsoluteTime | undefined => { if (!v) return undefined; try { const t_ms = parse(v, pattern, Date.now()).getTime(); return AbsoluteTime.fromMilliseconds(t_ms); } catch (e) { return undefined; } }, //@ts-ignore toStringUI: (v: AbsoluteTime | undefined) => { return !v || !v.t_ms ? undefined : v.t_ms === "never" ? "never" : format(v.t_ms, pattern); }, }} {...props} /> {open && setOpen(false)}> { onChange(v as any) setOpen(false) }} /> } {/* {open && setOpen(false)} > { onChange(v as any) }} onConfirm={() => { setOpen(false) }} /> } */} ); }