import type { ForwardedRef } from 'react'; import React, { forwardRef } from 'react'; import type { Complete, Exact } from '../../../types'; import { destruct } from '../../../utils/destruct'; import { omit } from '../../../utils/omit'; import { pick } from '../../../utils/pick'; import type { FormRowProps } from '../../FormRow/FormRow'; import { FormRow } from '../../FormRow/FormRow'; import type { FormRowHelperTextOwnProps } from '../../FormRow/FormRowHelperText'; import { EmailInput, type EmailInputProps } from '../../Inputs/EmailInput/EmailInput'; import { InputLoader } from '../../Inputs/InputLoader'; import type { LabelAfterProps } from '../../LabelAfter/LabelAfter'; import { LabelAfter } from '../../LabelAfter/LabelAfter'; interface EmailFieldContainerProps extends Omit {} interface EmailFieldHelperTextProps extends Partial {} interface EmailFieldInputProps extends Omit {} /** @inheritdoc */ export interface EmailFieldProps extends EmailFieldContainerProps, EmailFieldHelperTextProps, EmailFieldInputProps { /** * Display loading indicator. */ loading?: boolean; /** * Label displayed after the input element. */ labelAfter?: LabelAfterProps['label']; } export const EmailField: React.FC = forwardRef(function EmailField( props: EmailFieldProps, forwardedRef: ForwardedRef ) { const [formRowProps, helperTextProps, inputProps] = destruct( props, ['as', 'justify', 'labelHidden', 'required', 'tooltip'], ['error', 'warning', 'hint'] ); formRowProps satisfies Exact, typeof formRowProps>; helperTextProps satisfies Exact, typeof helperTextProps>; inputProps satisfies Exact< Complete & Pick>, typeof inputProps >; return (
{inputProps.labelAfter && }
); });