* first commit * finish * InputMegaGas, use BN consts' * update util' * tags issue * manifest * import bn_zero * rm * restore contract tags * fix tags onClose * sec to ms * ms -> sec Co-authored-by: Jaco Greeff <jacogr@gmail.com>
28 lines
797 B
TypeScript
28 lines
797 B
TypeScript
// Copyright 2017-2020 @polkadot/react-hooks authors & contributors
|
|
// This software may be modified and distributed under the terms
|
|
// of the Apache-2.0 license. See the LICENSE file for details.
|
|
|
|
import { useMemo, useState } from 'react';
|
|
import { isUndefined } from '@polkadot/util';
|
|
|
|
export type FormField<T> = [
|
|
T | null,
|
|
boolean,
|
|
(_?: T | null) => void
|
|
];
|
|
|
|
export default function useFormField<T> (defaultValue: T | null, validate: (_: T) => boolean = (): boolean => true): FormField<T> {
|
|
const [value, setValue] = useState<T | null>(defaultValue);
|
|
const isValid = useMemo(
|
|
(): boolean => !!value && validate(value),
|
|
[validate, value]
|
|
);
|
|
const setter = (value?: T | null) => !isUndefined(value) && setValue(value);
|
|
|
|
return [
|
|
value,
|
|
isValid,
|
|
setter
|
|
];
|
|
}
|