This commit is contained in:
Basil Hosmer 2015-03-23 00:46:11 -07:00
Родитель 05409868b6
Коммит 45a7b5cdcb
14 изменённых файлов: 45 добавлений и 28 удалений

Просмотреть файл

@ -1,6 +1,7 @@
/** /**
* * Copyright 2004-present Facebook. All Rights Reserved. * Copyright 2004-present Facebook. All Rights Reserved.
* */ * @flow
*/
'use strict'; 'use strict';
var React = require('react-native'); var React = require('react-native');
@ -103,10 +104,10 @@ exports.description = 'Interface to show iOS\' action sheets';
exports.examples = [ exports.examples = [
{ {
title: 'Show Action Sheet', title: 'Show Action Sheet',
render() { return <ActionSheetExample />; } render(): ReactElement { return <ActionSheetExample />; }
}, },
{ {
title: 'Show Share Action Sheet', title: 'Show Share Action Sheet',
render() { return <ShareActionSheetExample />; } render(): ReactElement { return <ShareActionSheetExample />; }
} }
]; ];

Просмотреть файл

@ -1,5 +1,6 @@
/** /**
* Copyright 2004-present Facebook. All Rights Reserved. * Copyright 2004-present Facebook. All Rights Reserved.
* @flow
*/ */
'use strict'; 'use strict';
@ -128,7 +129,7 @@ exports.examples = [
}, },
{ {
title: 'Start/stop', title: 'Start/stop',
render: function() { render: function(): ReactElement {
return <ToggleAnimatingActivityIndicator />; return <ToggleAnimatingActivityIndicator />;
} }
}, },

Просмотреть файл

@ -1,5 +1,6 @@
/** /**
* Copyright 2004-present Facebook. All Rights Reserved. * Copyright 2004-present Facebook. All Rights Reserved.
* @flow
*/ */
'use strict'; 'use strict';
@ -19,7 +20,7 @@ exports.description = 'Example of using the ad support API.';
exports.examples = [ exports.examples = [
{ {
title: 'Ad Support IOS', title: 'Ad Support IOS',
render: function() { render: function(): ReactElement {
return <AdSupportIOSExample />; return <AdSupportIOSExample />;
}, },
} }

Просмотреть файл

@ -1,5 +1,6 @@
/** /**
* Copyright 2004-present Facebook. All Rights Reserved. * Copyright 2004-present Facebook. All Rights Reserved.
* @flow
*/ */
'use strict'; 'use strict';

Просмотреть файл

@ -1,5 +1,6 @@
/** /**
* Copyright 2004-present Facebook. All Rights Reserved. * Copyright 2004-present Facebook. All Rights Reserved.
* @flow
*/ */
'use strict'; 'use strict';

Просмотреть файл

@ -2,6 +2,7 @@
* Copyright 2004-present Facebook. All Rights Reserved. * Copyright 2004-present Facebook. All Rights Reserved.
* *
* @providesModule AppStateIOSExample * @providesModule AppStateIOSExample
* @flow
*/ */
'use strict'; 'use strict';
@ -60,10 +61,10 @@ exports.examples = [
{ {
title: 'Subscribed AppStateIOS:', title: 'Subscribed AppStateIOS:',
description: 'This changes according to the current state, so you can only ever see it rendered as "active"', description: 'This changes according to the current state, so you can only ever see it rendered as "active"',
render() { return <AppStateSubscription showCurrentOnly={true} />; } render(): ReactElement { return <AppStateSubscription showCurrentOnly={true} />; }
}, },
{ {
title: 'Previous states:', title: 'Previous states:',
render() { return <AppStateSubscription showCurrentOnly={false} />; } render(): ReactElement { return <AppStateSubscription showCurrentOnly={false} />; }
}, },
]; ];

Просмотреть файл

@ -1,5 +1,6 @@
/** /**
* Copyright 2004-present Facebook. All Rights Reserved. * Copyright 2004-present Facebook. All Rights Reserved.
* @flow
*/ */
'use strict'; 'use strict';
@ -98,6 +99,6 @@ exports.description = 'Asynchronous local disk storage.';
exports.examples = [ exports.examples = [
{ {
title: 'Basics - getItem, setItem, removeItem', title: 'Basics - getItem, setItem, removeItem',
render() { return <BasicStorageExample />; } render(): ReactElement { return <BasicStorageExample />; }
}, },
]; ];

Просмотреть файл

@ -1,5 +1,6 @@
/** /**
* Copyright 2004-present Facebook. All Rights Reserved. * Copyright 2004-present Facebook. All Rights Reserved.
* @flow
*/ */
'use strict'; 'use strict';
@ -108,6 +109,6 @@ exports.description = 'Example component that uses CameraRoll to list user\'s ph
exports.examples = [ exports.examples = [
{ {
title: 'Photos', title: 'Photos',
render() { return <CameraRollExample />; } render(): ReactElement { return <CameraRollExample />; }
} }
]; ];

Просмотреть файл

@ -2,6 +2,7 @@
* Copyright 2004-present Facebook. All Rights Reserved. * Copyright 2004-present Facebook. All Rights Reserved.
* *
* @providesModule CameraRollView * @providesModule CameraRollView
* @flow
*/ */
'use strict'; 'use strict';
@ -53,7 +54,7 @@ var propTypes = {
var CameraRollView = React.createClass({ var CameraRollView = React.createClass({
propTypes: propTypes, propTypes: propTypes,
getDefaultProps: function() { getDefaultProps: function(): Object {
return { return {
groupTypes: 'SavedPhotos', groupTypes: 'SavedPhotos',
batchSize: 5, batchSize: 5,
@ -75,9 +76,9 @@ var CameraRollView = React.createClass({
var ds = new ListView.DataSource({rowHasChanged: this._rowHasChanged}); var ds = new ListView.DataSource({rowHasChanged: this._rowHasChanged});
return { return {
assets: [], assets: ([]: Array<Image>),
groupTypes: this.props.groupTypes, groupTypes: this.props.groupTypes,
lastCursor: null, lastCursor: (null : ?string),
noMore: false, noMore: false,
loadingMore: false, loadingMore: false,
dataSource: ds, dataSource: ds,
@ -99,21 +100,21 @@ var CameraRollView = React.createClass({
this.fetch(); this.fetch();
}, },
componentWillReceiveProps: function(nextProps) { componentWillReceiveProps: function(nextProps: {groupTypes?: string}) {
if (this.props.groupTypes !== nextProps.groupTypes) { if (this.props.groupTypes !== nextProps.groupTypes) {
this.fetch(true); this.fetch(true);
} }
}, },
_fetch: function(clear) { _fetch: function(clear?: boolean) {
if (clear) { if (clear) {
this.setState(this.getInitialState(), this.fetch); this.setState(this.getInitialState(), this.fetch);
return; return;
} }
var fetchParams = { var fetchParams: Object = {
first: this.props.batchSize, first: this.props.batchSize,
groupTypes: this.props.groupTypes, groupTypes: this.props.groupTypes
}; };
if (this.state.lastCursor) { if (this.state.lastCursor) {
fetchParams.after = this.state.lastCursor; fetchParams.after = this.state.lastCursor;
@ -126,7 +127,7 @@ var CameraRollView = React.createClass({
* Fetches more images from the camera roll. If clear is set to true, it will * Fetches more images from the camera roll. If clear is set to true, it will
* set the component to its initial state and re-fetch the images. * set the component to its initial state and re-fetch the images.
*/ */
fetch: function(clear) { fetch: function(clear?: boolean) {
if (!this.state.loadingMore) { if (!this.state.loadingMore) {
this.setState({loadingMore: true}, () => { this._fetch(clear); }); this.setState({loadingMore: true}, () => { this._fetch(clear); });
} }
@ -144,7 +145,7 @@ var CameraRollView = React.createClass({
); );
}, },
_rowHasChanged: function(r1, r2) { _rowHasChanged: function(r1: Array<Image>, r2: Array<Image>): boolean {
if (r1.length !== r2.length) { if (r1.length !== r2.length) {
return true; return true;
} }
@ -166,7 +167,7 @@ var CameraRollView = React.createClass({
}, },
// rowData is an array of images // rowData is an array of images
_renderRow: function(rowData, sectionID, rowID) { _renderRow: function(rowData: Array<Image>, sectionID: string, rowID: string) {
var images = rowData.map((image) => { var images = rowData.map((image) => {
if (image === null) { if (image === null) {
return null; return null;
@ -181,9 +182,9 @@ var CameraRollView = React.createClass({
); );
}, },
_appendAssets: function(data) { _appendAssets: function(data: Object) {
var assets = data.edges; var assets = data.edges;
var newState = { loadingMore: false }; var newState: Object = { loadingMore: false };
if (!data.page_info.has_next_page) { if (!data.page_info.has_next_page) {
newState.noMore = true; newState.noMore = true;

Просмотреть файл

@ -1,5 +1,6 @@
/** /**
* Copyright 2004-present Facebook. All Rights Reserved. * Copyright 2004-present Facebook. All Rights Reserved.
* @flow
*/ */
'use strict'; 'use strict';
@ -118,7 +119,7 @@ exports.description = 'Select dates and times using the native UIDatePicker.';
exports.examples = [ exports.examples = [
{ {
title: '<DatePickerIOS>', title: '<DatePickerIOS>',
render: function() { render: function(): ReactElement {
return <DatePickerExample />; return <DatePickerExample />;
}, },
}]; }];

Просмотреть файл

@ -1,5 +1,6 @@
/** /**
* Copyright 2004-present Facebook. All Rights Reserved. * Copyright 2004-present Facebook. All Rights Reserved.
* @flow
*/ */
/* eslint no-console: 0 */ /* eslint no-console: 0 */
'use strict'; 'use strict';
@ -19,13 +20,15 @@ exports.description = 'Examples of using the Geolocation API.';
exports.examples = [ exports.examples = [
{ {
title: 'navigator.geolocation', title: 'navigator.geolocation',
render: function() { render: function(): ReactElement {
return <GeolocationExample />; return <GeolocationExample />;
}, },
} }
]; ];
var GeolocationExample = React.createClass({ var GeolocationExample = React.createClass({
watchID: (null: ?number),
getInitialState: function() { getInitialState: function() {
return { return {
initialPosition: 'unknown', initialPosition: 'unknown',

Просмотреть файл

@ -1,5 +1,6 @@
/** /**
* Copyright 2004-present Facebook. All Rights Reserved. * Copyright 2004-present Facebook. All Rights Reserved.
* @flow
*/ */
'use strict'; 'use strict';

Просмотреть файл

@ -1,5 +1,6 @@
/** /**
* Copyright 2004-present Facebook. All Rights Reserved. * Copyright 2004-present Facebook. All Rights Reserved.
* @flow
*/ */
'use strict'; 'use strict';
@ -28,6 +29,8 @@ var ListViewSimpleExample = React.createClass({
}; };
}, },
_pressData: ({}: {[key: number]: boolean}),
componentWillMount: function() { componentWillMount: function() {
this._pressData = {}; this._pressData = {};
}, },
@ -46,7 +49,7 @@ var ListViewSimpleExample = React.createClass({
); );
}, },
_renderRow: function(rowData, sectionID, rowID) { _renderRow: function(rowData: string, sectionID: number, rowID: number) {
var rowHash = Math.abs(hashCode(rowData)); var rowHash = Math.abs(hashCode(rowData));
var imgSource = { var imgSource = {
uri: THUMB_URLS[rowHash % THUMB_URLS.length], uri: THUMB_URLS[rowHash % THUMB_URLS.length],
@ -66,7 +69,7 @@ var ListViewSimpleExample = React.createClass({
); );
}, },
_genRows: function(pressData) { _genRows: function(pressData: {[key: number]: boolean}): Array<string> {
var dataBlob = []; var dataBlob = [];
for (var ii = 0; ii < 100; ii++) { for (var ii = 0; ii < 100; ii++) {
var pressedText = pressData[ii] ? ' (pressed)' : ''; var pressedText = pressData[ii] ? ' (pressed)' : '';
@ -75,7 +78,7 @@ var ListViewSimpleExample = React.createClass({
return dataBlob; return dataBlob;
}, },
_pressRow: function(rowID) { _pressRow: function(rowID: number) {
this._pressData[rowID] = !this._pressData[rowID]; this._pressData[rowID] = !this._pressData[rowID];
this.setState({dataSource: this.state.dataSource.cloneWithRows( this.setState({dataSource: this.state.dataSource.cloneWithRows(
this._genRows(this._pressData) this._genRows(this._pressData)

Просмотреть файл

@ -44,7 +44,7 @@ class AlertIOS {
static alert( static alert(
title: ?string, title: ?string,
message: ?string, message: ?string,
buttons: ?Array<{ buttons?: Array<{
text: ?string; text: ?string;
onPress: ?Function; onPress: ?Function;
}> }>