Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 1x 1x 1x 1x 1x 1x | import { memo } from 'react';
import { Input, type InputProps } from '@allshares/studio-design-system';
import { useFormikFieldAdapter, type FormikFieldProps } from '@amalia/ext/formik';
export type InputTypeProp = 'email' | 'number' | 'password' | 'text' | 'url' | undefined;
export type FormikInputProps<TType extends InputTypeProp = 'text'> = FormikFieldProps<InputProps, TType>;
const FormikInputBase = function FormikInput<TType extends InputTypeProp = 'text'>({
validate, // Omit validate and any props not passed to Input.
type = 'text' as TType,
...props
}: FormikInputProps<TType>) {
const { onChange, ...formikFieldProps } = useFormikFieldAdapter<InputProps['value'], TType>({
...props,
validate,
type,
});
return (
<Input
{...props}
{...formikFieldProps}
type={type}
onChange={onChange as (value: string) => void}
/>
);
};
export const FormikInput = Object.assign(memo(FormikInputBase) as typeof FormikInputBase, {
Action: Input.Action,
ClearAction: Input.ClearAction,
styles: Input.styles,
});
|