Migrated RequiredParametersDialog to TypeScript

Summary: Migrated RequiredParametersDialog.js to RequiredParametersDialog.tsx

Reviewed By: danielbuechele

Differential Revision: D17132223

fbshipit-source-id: a4a592ba58b8c8b94b3106c3a2c0916b2776697f
This commit is contained in:
Benjamin Elo
2019-09-02 03:54:48 -07:00
committed by Facebook Github Bot
parent d957f45314
commit 0a9c4bdcf4
4 changed files with 20 additions and 18 deletions

View File

@@ -3,7 +3,6 @@
* This source code is licensed under the MIT license found in the * This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* @format * @format
* @flow strict-local
*/ */
import {Button, FlexColumn, Input, Sheet, styled, Glyph, colors} from 'flipper'; import {Button, FlexColumn, Input, Sheet, styled, Glyph, colors} from 'flipper';
@@ -13,18 +12,19 @@ import {
parameterIsBooleanType, parameterIsBooleanType,
validateParameter, validateParameter,
liveEdit, liveEdit,
} from '../util/uri.tsx'; } from '../util/uri';
import {useRequiredParameterFormValidator} from '../hooks/requiredParameters.tsx'; import {useRequiredParameterFormValidator} from '../hooks/requiredParameters';
import React from 'react';
import type {URI} from '../flow-types'; import {URI} from '../types';
type Props = {| type Props = {
uri: string, uri: string;
requiredParameters: Array<string>, requiredParameters: Array<string>;
shouldShow: boolean, shouldShow: boolean;
onHide: ?() => void, onHide?: () => void;
onSubmit: URI => void, onSubmit: (uri: URI) => void;
|}; };
const Container = styled(FlexColumn)({ const Container = styled(FlexColumn)({
padding: 10, padding: 10,
@@ -72,7 +72,7 @@ const WarningIconContainer = styled('span')({
export default (props: Props) => { export default (props: Props) => {
const {shouldShow, onHide, onSubmit, uri, requiredParameters} = props; const {shouldShow, onHide, onSubmit, uri, requiredParameters} = props;
const [isValid, values, setValuesArray] = useRequiredParameterFormValidator( const {isValid, values, setValuesArray} = useRequiredParameterFormValidator(
requiredParameters, requiredParameters,
); );
if (uri == null || !shouldShow) { if (uri == null || !shouldShow) {
@@ -80,7 +80,7 @@ export default (props: Props) => {
} else { } else {
return ( return (
<Sheet onHideSheet={onHide}> <Sheet onHideSheet={onHide}>
{hide => { {(hide: () => void) => {
return ( return (
<Container> <Container>
<Title> <Title>
@@ -99,7 +99,7 @@ export default (props: Props) => {
{requiredParameters.map((paramater, idx) => ( {requiredParameters.map((paramater, idx) => (
<div key={idx}> <div key={idx}>
<RequiredParameterInput <RequiredParameterInput
onChange={event => onChange={(event: React.ChangeEvent<HTMLInputElement>) =>
setValuesArray([ setValuesArray([
...values.slice(0, idx), ...values.slice(0, idx),
event.target.value, event.target.value,
@@ -138,7 +138,7 @@ export default (props: Props) => {
Cancel Cancel
</Button> </Button>
<Button <Button
type={isValid ? 'primary' : null} type={isValid ? 'primary' : undefined}
onClick={() => { onClick={() => {
onSubmit(replaceRequiredParametersWithValues(uri, values)); onSubmit(replaceRequiredParametersWithValues(uri, values));
if (onHide != null) { if (onHide != null) {

View File

@@ -11,7 +11,9 @@ export {default as BookmarksSidebar} from './BookmarksSidebar.tsx';
export {default as FavoriteButton} from './FavoriteButton.tsx'; export {default as FavoriteButton} from './FavoriteButton.tsx';
export {default as IconButton} from './IconButton.tsx'; export {default as IconButton} from './IconButton.tsx';
export {default as NavigationInfoBox} from './NavigationInfoBox.tsx'; export {default as NavigationInfoBox} from './NavigationInfoBox.tsx';
export {default as RequiredParametersDialog} from './RequiredParametersDialog'; export {
default as RequiredParametersDialog,
} from './RequiredParametersDialog.tsx';
export {default as SaveBookmarkDialog} from './SaveBookmarkDialog'; export {default as SaveBookmarkDialog} from './SaveBookmarkDialog';
export {default as ScrollableFlexColumn} from './ScrollableFlexColumn'; export {default as ScrollableFlexColumn} from './ScrollableFlexColumn';
export {default as SearchBar} from './SearchBar'; export {default as SearchBar} from './SearchBar';

View File

@@ -29,5 +29,5 @@ export const useRequiredParameterFormValidator = (
setIsValid(false); setIsValid(false);
} }
}); });
return [isValid, values, setValuesArray]; return {isValid, values, setValuesArray};
}; };

View File

@@ -24,7 +24,7 @@ type OwnProps = {
* the sheet. * the sheet.
*/ */
children: (onHide: () => void) => React.ReactNode | undefined; children: (onHide: () => void) => React.ReactNode | undefined;
onHideSheet: () => void; onHideSheet?: () => void;
}; };
type StateFromProps = { type StateFromProps = {