react-masked-field
Version:
A masked field component built in React
92 lines (91 loc) • 2.9 kB
TypeScript
/**
* Copyright (c) 2015 ZenPayroll
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import React from 'react';
import PropTypes from 'prop-types';
declare type InputProps = React.InputHTMLAttributes<HTMLInputElement>;
export interface AlwaysMaskedFieldProps extends InputProps {
mask: string;
translations?: {
[char: string]: RegExp;
};
value?: string;
onComplete?: (val: string) => void;
valueLink?: {
value?: string;
requestChange: (newVal: string) => void;
};
onChange?: (e: {
target: {
id?: string;
name?: string;
value: string;
};
}) => void;
inputRef?: (node: HTMLInputElement | null) => any;
}
interface MaskedFieldState {
value: string;
}
declare class AlwaysMaskedField extends React.Component<AlwaysMaskedFieldProps, MaskedFieldState> {
static propTypes: {
mask: PropTypes.Requireable<string>;
translations: PropTypes.Requireable<{
[x: string]: RegExp | null | undefined;
}>;
value: PropTypes.Requireable<string>;
placeholder: PropTypes.Requireable<string>;
onChange: PropTypes.Requireable<(...args: any[]) => any>;
onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
onComplete: PropTypes.Requireable<(...args: any[]) => any>;
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
valueLink: PropTypes.Requireable<PropTypes.InferProps<{
value: PropTypes.Validator<string>;
requestChange: PropTypes.Validator<(...args: any[]) => any>;
}>>;
};
static defaultProps: {
mask: undefined;
translations: undefined;
value: undefined;
placeholder: undefined;
onChange: undefined;
onKeyDown: undefined;
onComplete: undefined;
onFocus: undefined;
onBlur: undefined;
valueLink: undefined;
};
private buffer;
private firstNonMaskIdx;
private cursorPos;
private input;
constructor(props: Readonly<AlwaysMaskedFieldProps>);
componentDidMount(): void;
componentDidUpdate({ value: prevValue }: AlwaysMaskedFieldProps): void;
private getSelection;
private getPropsValue;
private getPattern;
private setSelection;
private setValue;
private handleFocus;
private handleBlur;
private handleKeyDown;
private handleChange;
private resetBuffer;
private initialBuffer;
private bufferString;
private isBufferEmpty;
private isBufferFull;
private nextNonMaskIdx;
private prevNonMaskIdx;
private callOnChange;
private callOnComplete;
private maskedValue;
render(): JSX.Element;
}
export default AlwaysMaskedField;