Merge branch 'feat/inda-383-daily-stat' into 'main'
[ProtonMail-WebClient.git] / packages / pass / components / Form / Field / MaskedTextField.tsx
blobc40d1985ef94e6dc7345943a6a09ea0ba54c6ccb
1 import { type FC, type RefObject } from 'react';
3 import { type FactoryOpts } from 'imask/esm/masked/factory';
5 import noop from '@proton/utils/noop';
7 import { useFieldMask } from '../../../hooks/useFieldMask';
8 import { FieldBox, type FieldBoxProps } from './Layout/FieldBox';
9 import { BaseTextField, type BaseTextFieldProps } from './TextField';
11 export type MaskedTextFieldProps = FieldBoxProps &
12     BaseTextFieldProps & {
13         mask: FactoryOpts;
14     };
16 export const MaskedTextField: FC<MaskedTextFieldProps> = (props) => {
17     const { actions, actionsContainerClassName, className, icon, mask, ...rest } = props;
18     const { inputRef, maskedValue } = useFieldMask(props, mask);
20     return (
21         <FieldBox
22             actions={actions}
23             actionsContainerClassName={actionsContainerClassName}
24             className={className}
25             icon={icon}
26         >
27             <BaseTextField
28                 {...rest}
29                 field={{
30                     ...props.field,
31                     onChange: noop,
32                     value: maskedValue,
33                 }}
34                 ref={inputRef as RefObject<HTMLInputElement>}
35             />
36         </FieldBox>
37     );