diff --git a/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js b/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js index 734a59abf72cf4..5f888502ef14b3 100644 --- a/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +++ b/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js @@ -5,17 +5,38 @@ * LICENSE file in the root directory of this source tree. * * @format - * @flow + * @flow strict-local */ 'use strict'; const DatePickerModule = require('NativeModules').DatePickerAndroid; +type Options = $ReadOnly<{| + date?: ?(Date | number), + minDate?: ?(Date | number), + maxDate?: ?(Date | number), + mode?: ?('calender' | 'spinner' | 'default'), +|}>; + +type DatePickerOpenAction = + | {| + action: 'dateSetAction', + year: number, + month: number, + day: number, + |} + | {| + action: 'dismissedAction', + year: typeof undefined, + month: typeof undefined, + day: typeof undefined, + |}; + /** * Convert a Date to a timestamp. */ -function _toMillis(options: Object, key: string) { +function _toMillis(options: Options, key: string) { const dateVal = options[key]; // Is it a Date object? if (typeof dateVal === 'object' && typeof dateVal.getMonth === 'function') { @@ -65,7 +86,7 @@ class DatePickerAndroid { * Note the native date picker dialog has some UI glitches on Android 4 and lower * when using the `minDate` and `maxDate` options. */ - static async open(options: Object): Promise { + static async open(options: Options): Promise { const optionsMs = options; if (optionsMs) { _toMillis(options, 'date'); @@ -78,15 +99,11 @@ class DatePickerAndroid { /** * A date has been selected. */ - static get dateSetAction() { - return 'dateSetAction'; - } + static dateSetAction = 'dateSetAction'; /** * The dialog has been dismissed. */ - static get dismissedAction() { - return 'dismissedAction'; - } + static dismissedAction = 'dismissedAction'; } module.exports = DatePickerAndroid; diff --git a/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js b/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js index bb6442b5262c79..01c45302fcdf25 100644 --- a/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js +++ b/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js @@ -5,13 +5,20 @@ * LICENSE file in the root directory of this source tree. * * @format - * @flow + * @flow strict-local */ 'use strict'; +type Options = $ReadOnly<{| + date?: ?(Date | number), + minDate?: ?(Date | number), + maxDate?: ?(Date | number), + mode?: ?('calender' | 'spinner' | 'default'), +|}>; + const DatePickerAndroid = { - async open(options: Object): Promise { + async open(options: Options): Promise { return Promise.reject({ message: 'DatePickerAndroid is not supported on this platform.', });