Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 40 additions & 41 deletions Libraries/Components/Button.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
const ColorPropType = require('ColorPropType');
const Platform = require('Platform');
const React = require('React');
const PropTypes = require('prop-types');
const StyleSheet = require('StyleSheet');
const Text = require('Text');
const TouchableNativeFeedback = require('TouchableNativeFeedback');
Expand All @@ -22,6 +21,45 @@ const View = require('View');

const invariant = require('fbjs/lib/invariant');

import type {PressEvent} from 'CoreEventTypes';

type ButtonProps = $ReadOnly<{|
/**
* Text to display inside the button
*/
title: string,

/**
* Handler to be called when the user taps the button
*/
onPress: (event?: PressEvent) => mixed,

/**
* Color of the text (iOS), or background color of the button (Android)
*/
color?: ?string,

/**
* TV preferred focus (see documentation for the View component).
*/
hasTVPreferredFocus?: ?boolean,

/**
* Text to display for blindness accessibility features
*/
accessibilityLabel?: ?string,

/**
* If true, disable all interactions for this component.
*/
disabled?: ?boolean,

/**
* Used to locate this view in end-to-end tests.
*/
testID?: ?string,
|}>;

/**
* A basic button component that should render nicely on any platform. Supports
* a minimal level of customization.
Expand Down Expand Up @@ -50,46 +88,7 @@ const invariant = require('fbjs/lib/invariant');
*
*/

class Button extends React.Component<{
title: string,
onPress: () => any,
color?: ?string,
hasTVPreferredFocus?: ?boolean,
accessibilityLabel?: ?string,
disabled?: ?boolean,
testID?: ?string,
}> {
static propTypes = {
/**
* Text to display inside the button
*/
title: PropTypes.string.isRequired,
/**
* Text to display for blindness accessibility features
*/
accessibilityLabel: PropTypes.string,
/**
* Color of the text (iOS), or background color of the button (Android)
*/
color: ColorPropType,
/**
* If true, disable all interactions for this component.
*/
disabled: PropTypes.bool,
/**
* TV preferred focus (see documentation for the View component).
*/
hasTVPreferredFocus: PropTypes.bool,
/**
* Handler to be called when the user taps the button
*/
onPress: PropTypes.func.isRequired,
/**
* Used to locate this view in end-to-end tests.
*/
testID: PropTypes.string,
};

class Button extends React.Component<ButtonProps> {
render() {
const {
accessibilityLabel,
Expand Down