From 6138846050563e0dca95b0b6d792776925e4c35f Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 20 Nov 2023 12:38:16 -0300 Subject: new forms api --- .../aml-backoffice-ui/src/handlers/InputDate.tsx | 81 ++++++++++++++-------- 1 file changed, 53 insertions(+), 28 deletions(-) (limited to 'packages/aml-backoffice-ui/src/handlers/InputDate.tsx') diff --git a/packages/aml-backoffice-ui/src/handlers/InputDate.tsx b/packages/aml-backoffice-ui/src/handlers/InputDate.tsx index 0f286e001..7fcc16b33 100644 --- a/packages/aml-backoffice-ui/src/handlers/InputDate.tsx +++ b/packages/aml-backoffice-ui/src/handlers/InputDate.tsx @@ -1,40 +1,65 @@ import { AbsoluteTime } from "@gnu-taler/taler-util"; import { InputLine, UIFormProps } from "./InputLine.js"; -import { VNode, h } from "preact"; +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"; export function InputDate( 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: "icon", - // icon: , - icon: - - + - }} - converter={{ - //@ts-ignore - fromStringUI: (v): AbsoluteTime => { - if (!v) return AbsoluteTime.never(); - const t_ms = parse(v, pattern, Date.now()).getTime(); - return AbsoluteTime.fromMilliseconds(t_ms); - }, - //@ts-ignore - toStringUI: (v: AbsoluteTime) => { - return !v || !v.t_ms - ? "" - : v.t_ms === "never" - ? "never" - : format(v.t_ms, pattern); - }, - }} - {...props} - /> + + 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) + }} /> + + } + ); } -- cgit v1.2.3