import dayjs from 'dayjs' import { Eye, EyeOff } from 'lucide-react' import { useEffect, useState } from 'react' import ReactMarkdown from 'react-markdown' import { Markdown } from 'components/interfaces/Markdown' import { DatePicker } from 'components/ui/DatePicker' import { BASE_PATH } from 'lib/constants' import { Button, Input, InputNumber, Listbox, Toggle } from 'ui' import { InfoTooltip } from 'ui-patterns/info-tooltip' import type { Enum } from './AuthProvidersForm.types' interface FormFieldProps { name: string properties: any formValues: any setFieldValue: (field: string, v: any) => any disabled?: boolean } function formatDate(date: Date): string { return dayjs(date).format('dddd, MMMM D, YYYY HH:mm:ss Z') } const FormField = ({ name, properties, formValues, disabled = false, setFieldValue, }: FormFieldProps) => { const [hidden, setHidden] = useState(!!properties.isSecret) const [dateAsText, setDateAsText] = useState( formValues[name] ? formatDate(new Date(formValues[name])) : '' ) useEffect(() => { if (properties.show && properties.show.key && !formValues[properties.show.key]) { setFieldValue(name, '') setDateAsText('') } }, [properties.show && properties.show.key && !formValues[properties.show.key]]) if (properties.show) { if (properties.show.matches) { if (!properties.show.matches.includes(formValues[properties.show.key])) { return null } } else if (!formValues[properties.show.key]) { return null } } switch (properties.type) { case 'datetime': return ( {properties.descriptionOptional} ) : null } descriptionText={ properties.description ? ( {properties.description} ) : null } actions={ { if (date && date.to) { setFieldValue(name, date.to) setDateAsText(formatDate(new Date(date.to))) } else { setDateAsText('') setFieldValue(name, '') } }} > Pick } /> ) case 'string': return ( ) : null } descriptionText={ properties.description ? ( ) : null } actions={ !!properties.isSecret ? (