ghost-portal/packages/react-hooks/src/useFormField.ts
Keith Ingram 2081464de8
Rewrite & update to page-contracts (#2873)
* 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>
2020-06-09 14:56:10 +02:00

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
];
}