From fcfba4322ad0e27d7912fe5fcda6f4f362442e03 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Thu, 11 May 2023 15:49:28 -0300 Subject: fix some ui in arrays and created input file --- .../src/forms/InputArray.tsx | 191 +++++++++++---------- 1 file changed, 103 insertions(+), 88 deletions(-) (limited to 'packages/exchange-backoffice-ui/src/forms/InputArray.tsx') diff --git a/packages/exchange-backoffice-ui/src/forms/InputArray.tsx b/packages/exchange-backoffice-ui/src/forms/InputArray.tsx index 2447c9989..b2905a2a7 100644 --- a/packages/exchange-backoffice-ui/src/forms/InputArray.tsx +++ b/packages/exchange-backoffice-ui/src/forms/InputArray.tsx @@ -4,6 +4,72 @@ import { FormProvider } from "./FormProvider.js"; import { LabelWithTooltipMaybeRequired, UIFormProps } from "./InputLine.js"; import { RenderAllFieldsByUiConfig, UIFormField } from "./forms.js"; import { useField } from "./useField.js"; +import { TranslatedString } from "@gnu-taler/taler-util"; + +function Option({ + label, + disabled, + isFirst, + isLast, + isSelected, + onClick, +}: { + label: TranslatedString; + isFirst?: boolean; + isLast?: boolean; + isSelected?: boolean; + disabled?: boolean; + onClick: () => void; +}): VNode { + let clazz = "relative flex border p-4 focus:outline-none disabled:text-grey"; + if (isFirst) { + clazz += " rounded-tl-md rounded-tr-md "; + } + if (isLast) { + clazz += " rounded-bl-md rounded-br-md "; + } + if (isSelected) { + clazz += " z-10 border-indigo-200 bg-indigo-50 "; + } else { + clazz += " border-gray-200"; + } + if (disabled) { + clazz += + " cursor-not-allowed bg-gray-50 text-gray-500 ring-gray-200 text-gray"; + } else { + clazz += " cursor-pointer"; + } + return ( + + ); +} export function InputArray( props: { @@ -17,10 +83,7 @@ export function InputArray( const [selectedIndex, setSelected] = useState(undefined); const selected = selectedIndex === undefined ? undefined : list[selectedIndex]; - const [subForm, updateSubForm] = useState(selected ?? {}); - useEffect(() => { - updateSubForm(selected); - }, [selected]); + return (
-
-
- {selectedIndex !== undefined && ( - - )} -
-
- {selectedIndex === undefined && ( - - )} -
-
{list.map((v, idx) => { - const isFirst = idx === 0; - const isLast = idx === list.length - 1; - const isSelected = selectedIndex === idx; - const disabled = selectedIndex !== undefined && !isSelected; - let clazz = - "relative flex border p-4 focus:outline-none disabled:text-grey"; - if (isFirst) { - clazz += " rounded-tl-md rounded-tr-md "; - } - if (isLast) { - clazz += " rounded-bl-md rounded-br-md "; - } - if (isSelected) { - clazz += " z-10 border-indigo-200 bg-indigo-50 "; - } else { - clazz += " border-gray-200"; - } - if (disabled) { - clazz += - " cursor-not-allowed bg-gray-50 text-gray-500 ring-gray-200 text-gray"; - } else { - clazz += " cursor-pointer"; - } return ( - +
{selectedIndex !== undefined && ( - + { + const newValue = [...list]; + newValue.splice(selectedIndex, 1, v); + onChange(newValue); + }} + >
@@ -143,7 +158,7 @@ export function InputArray( )}
-
+ {/*
-
+
*/}
)}
-- cgit v1.2.3