import type { FieldProps, FieldValidator } from "formik"; import { Field } from "formik"; import { classNames } from "../../utils"; import { useToggle } from "../../hooks/hooks"; import { EyeIcon, EyeSlashIcon } from "@heroicons/react/24/solid"; import { Switch } from "@headlessui/react"; import { ErrorField, RequiredField } from "./common"; import Select, { components, ControlProps, InputProps, MenuProps, OptionProps } from "react-select"; import { SelectFieldProps } from "./select"; import { CustomTooltip } from "../tooltips/CustomTooltip"; interface TextFieldWideProps { name: string; label?: string; help?: string; placeholder?: string; defaultValue?: string; required?: boolean; hidden?: boolean; tooltip?: JSX.Element; validate?: FieldValidator; } export const TextFieldWide = ({ name, label, help, placeholder, defaultValue, required, tooltip, hidden, validate }: TextFieldWideProps) => ( ); interface PasswordFieldWideProps { name: string; label?: string; placeholder?: string; defaultValue?: string; help?: string; required?: boolean; defaultVisible?: boolean; tooltip?: JSX.Element; validate?: FieldValidator; } export const PasswordFieldWide = ({ name, label, placeholder, defaultValue, help, required, defaultVisible, tooltip, validate }: PasswordFieldWideProps) => { const [isVisible, toggleVisibility] = useToggle(defaultVisible); return (
{({ field, meta }: FieldProps) => (
{!isVisible ?
)}
{help && (

{help}

)}
); }; interface NumberFieldWideProps { name: string; label?: string; help?: string; placeholder?: string; defaultValue?: number; required?: boolean; tooltip?: JSX.Element; } export const NumberFieldWide = ({ name, label, placeholder, help, defaultValue, tooltip, required }: NumberFieldWideProps) => (
{({ field, meta, form }: FieldProps) => ( { form.setFieldValue(field.name, parseInt(e.target.value)); }} className={classNames( meta.touched && meta.error ? "focus:ring-red-500 focus:border-red-500 border-red-500" : "focus:ring-blue-500 dark:focus:ring-blue-500 focus:border-blue-500 dark:focus:border-blue-500 border-gray-300 dark:border-gray-700", "block w-full shadow-sm dark:bg-gray-800 sm:text-sm dark:text-white rounded-md" )} placeholder={placeholder} /> )} {help && (

{help}

)}
); interface SwitchGroupWideProps { name: string; label: string; description?: string; defaultValue?: boolean; className?: string; tooltip?: JSX.Element; } export const SwitchGroupWide = ({ name, label, description, tooltip, defaultValue }: SwitchGroupWideProps) => ( ); interface SwitchGroupWideRedProps { name: string; label: string; description?: string; defaultValue?: boolean; className?: string; } export const SwitchGroupWideRed = ({ name, label, description, defaultValue }: SwitchGroupWideRedProps) => ( ); const Input = (props: InputProps) => { return ( ); }; const Control = (props: ControlProps) => { return ( ); }; const Menu = (props: MenuProps) => { return ( ); }; const Option = (props: OptionProps) => { return ( ); }; export const SelectFieldWide = ({ name, label, optionDefaultText, tooltip, options }: SelectFieldProps) => (
{({ field, form: { setFieldValue } }: FieldProps) => (