diff --git a/types/react-bootstrap-table/index.d.ts b/types/react-bootstrap-table/index.d.ts index 159470878a..8286d28980 100644 --- a/types/react-bootstrap-table/index.d.ts +++ b/types/react-bootstrap-table/index.d.ts @@ -17,64 +17,23 @@ import { EventEmitter } from 'events'; * Consult [documentation](https://allenfang.github.io/react-bootstrap-table/docs.html#remote) * for more info * - * @interface RemoteObjSpec */ export interface RemoteObjSpec { - /** - * If set, cell edits will be handled remotely - * - * @type {boolean} - * @memberof RemoteObjSpec - */ + /** If set, cell edits will be handled remotely */ cellEdit?: boolean; - /** - * If set insertions will be handled remotely - * - * @type {boolean} - * @memberof RemoteObjSpec - */ + /** If set insertions will be handled remotely */ insertRow?: boolean; - /** - * If set deletion will be handled remotely - * - * @type {boolean} - * @memberof RemoteObjSpec - */ + /** If set deletion will be handled remotely */ dropRow?: boolean; - /** - * If set filters will be handled remotely - * - * @type {boolean} - * @memberof RemoteObjSpec - */ + /** If set filters will be handled remotely */ filter?: boolean; - /** - * If set search will be handled remotely - * - * @type {boolean} - * @memberof RemoteObjSpec - */ + /** If set search will be handled remotely */ search?: boolean; - /** - * If set, exporting CSV will be handled remotely - * - * @type {boolean} - * @memberof RemoteObjSpec - */ + /** If set, exporting CSV will be handled remotely */ exportCSV?: boolean; - /** - * If set sorting will be handled remotely - * - * @type {boolean} - * @memberof RemoteObjSpec - */ + /** If set sorting will be handled remotely */ sort?: boolean; - /** - * If set pagination will be handled remotely - * - * @type {boolean} - * @memberof RemoteObjSpec - */ + /** If set pagination will be handled remotely */ pagination?: boolean; } @@ -474,7 +433,6 @@ export interface Options { * * https://allenfang.github.io/react-bootstrap-table/example.html#remote * - * @memberof BootstrapTableProps */ onCellEdit?: (row: any, field: string, value: any) => any; /** @@ -482,7 +440,6 @@ export interface Options { * * https://github.com/AllenFang/react-bootstrap-table/blob/master/examples/js/remote/remote-store-filtering.js#L67 * - * @memberof BootstrapTableProps */ onFilterChange?: (filterObj: any) => any; /** @@ -490,7 +447,6 @@ export interface Options { * * https://github.com/AllenFang/react-bootstrap-table/blob/master/examples/js/remote/remote-store-delete-row.js#L27 * - * @memberof BootstrapTableProps */ onDeleteRow?: (rows: any) => any; /** @@ -498,7 +454,6 @@ export interface Options { * * https://github.com/AllenFang/react-bootstrap-table/blob/master/examples/js/remote/remote-store-paging.js#L30 * - * @memberof BootstrapTableProps */ onpageChange?: (page: any, sizePerPage: number) => any; } diff --git a/types/react-foundation/utils.d.ts b/types/react-foundation/utils.d.ts index b80b4879b0..ecb1abd683 100644 --- a/types/react-foundation/utils.d.ts +++ b/types/react-foundation/utils.d.ts @@ -7,7 +7,6 @@ export interface ClassNameProps { /** * Property types for general properties. * - * @returns {Object} */ export declare const GeneralPropTypes: { showFor: PropTypes.Requireable; @@ -40,8 +39,6 @@ export interface GeneralPropTypes extends ClassNameProps { /** * Creates class names from the given arguments. * - * @param {*} args - * @returns {string} */ export declare function createClassName(...args: any[]): string; /** @@ -78,46 +75,32 @@ export declare function objectKeys(object: object): string[]; * Returns the values for the given object. * This method is used for getting the values for enumerables. * - * @param {Object} object - * @returns {Array} */ export declare function objectValues(object: object): any[]; /** * Removes properties from the given object. * This method is used for removing valid attributes from component props prior to rendering. * - * @param {Object} object - * @param {Array} remove - * @returns {Object} */ export declare function removeProps(object: object, remove: string[]): object; /** * Returns whether or not the given value is defined. * - * @param {*} value - * @returns {boolean} */ export declare function isDefined(value: any): boolean; /** * Adds a breakpoint to a class if breakpoint is specified. * - * @param {String} prop - * @param {String} size - * @returns {string} */ export declare function addBreakpoint(prop: string, size: string): string; /** * Sets direction for grid and gutters (horizontal or vertical). * - * @param {boolean} isVertical - * @param {String} gutters - * @returns {string} */ export declare function setDirection(isVertical?: boolean, gutters?: string | null): string; /** * Property types for flexbox utilities. * - * @returns {Object} */ export declare const FlexboxPropTypes: { alignX: PropTypes.Requireable; @@ -156,8 +139,6 @@ export interface FlexboxPropTypes extends GeneralPropTypes { /** * Parses the flexbox class names from the given properties. * - * @param {Object} props - * @returns {Object} */ export declare function flexboxClassNames(props: FlexboxPropTypes): { [name: string]: boolean | undefined; diff --git a/types/react-native-doc-viewer/react-native-doc-viewer-tests.tsx b/types/react-native-doc-viewer/react-native-doc-viewer-tests.tsx index 630b78a75d..cdc7e3980e 100644 --- a/types/react-native-doc-viewer/react-native-doc-viewer-tests.tsx +++ b/types/react-native-doc-viewer/react-native-doc-viewer-tests.tsx @@ -70,9 +70,7 @@ export default class DocViewerExample extends React.Component { OpenFile.openDocb64( [ { - // tslint:disable-next-line:max-line-length - base64: - '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', + base64: '<', fileName: 'sample.png', fileType: 'png', }, diff --git a/types/react-native-elements/index.d.ts b/types/react-native-elements/index.d.ts index d8d6c9d68b..b3f9b37a07 100644 --- a/types/react-native-elements/index.d.ts +++ b/types/react-native-elements/index.d.ts @@ -851,8 +851,6 @@ export interface GridProps extends ViewProperties { /** * Opacity on pressing * - * @type {number} - * @memberof GridProps */ activeOpacity?: number; diff --git a/types/react-native-fetch-blob/index.d.ts b/types/react-native-fetch-blob/index.d.ts index cb9af73ef8..910fa4dba9 100644 --- a/types/react-native-fetch-blob/index.d.ts +++ b/types/react-native-fetch-blob/index.d.ts @@ -66,34 +66,33 @@ export interface FetchBlobResponse { taskId: string; /** * get path of response temp file - * @return {string} File path of temp file. + * @return File path of temp file. */ path(): string; type: "base64" | "path" | "utf8"; data: any; /** * Convert result to javascript RNFetchBlob object. - * @return {Promise} Return a promise resolves Blob object. + * @return Return a promise resolves Blob object. */ blob(contentType: string, sliceSize: number): Promise; /** * Convert result to text. - * @return {string} Decoded base64 string. + * @return Decoded base64 string. */ text(): string | Promise; /** * Convert result to JSON object. - * @return {object} Parsed javascript object. + * @return Parsed javascript object. */ json(): any; /** * Return BASE64 string directly. - * @return {string} BASE64 string of response body. + * @return BASE64 string of response body. */ base64(): any; /** * Remove cahced file - * @return {Promise} */ flush(): void; respInfo: RNFetchBlobResponseInfo; @@ -101,12 +100,12 @@ export interface FetchBlobResponse { /** * Read file content with given encoding, if the response does not contains * a file path, show warning message - * @param {String} encode Encode type, should be one of `base64`, `ascrii`, `utf8`. + * @param encode Encode type, should be one of `base64`, `ascrii`, `utf8`. */ readFile(encode: Encoding): Promise | null; /** * Start read stream from cached file - * @param {String} encode Encode type, should be one of `base64`, `ascrii`, `utf8`. + * @param encode Encode type, should be one of `base64`, `ascrii`, `utf8`. */ readStream(encode: Encoding): RNFetchBlobStream | null; } @@ -154,15 +153,15 @@ export declare class PolyfillBlob extends EventTarget { * * @param data Content of Blob object * @param cType Content type settings of Blob object, `text/plain` by default - * @param {boolean} defer When this argument set to `true`, blob constructor will not invoke blob created event automatically. + * @param defer When this argument set to `true`, blob constructor will not invoke blob created event automatically. */ constructor(data: any, cType: any, defer: boolean); /** * Since Blob content will asynchronously write to a file during creation, * use this method to register an event handler for Blob initialized event. - * @param {(b:Blob) => void} fn An event handler invoked when Blob created - * @return {Blob} The Blob object instance itself + * @param fn An event handler invoked when Blob created + * @return The Blob object instance itself */ onCreated(fn: () => void): PolyfillBlob; @@ -170,30 +169,27 @@ export declare class PolyfillBlob extends EventTarget { /** * Get file reference of the Blob object. - * @return {string} Blob file reference which can be consumed by RNFetchBlob fs + * @return Blob file reference which can be consumed by RNFetchBlob fs */ getRNFetchBlobRef(): string; /** * Create a Blob object which is sliced from current object - * @param {number} start Start byte number - * @param {number} end End byte number - * @param {string} contentType Optional, content type of new Blob object - * @return {Blob} + * @param start Start byte number + * @param end End byte number + * @param contentType Optional, content type of new Blob object */ slice(start?: number, end?: number, contentType?: string): PolyfillBlob; /** * Read data of the Blob object, this is not standard method. - * @param {string} encoding Read data with encoding - * @return {Promise} + * @param encoding Read data with encoding */ readBlob(encoding: string): Promise; /** * Release the resource of the Blob object. * @nonstandard - * @return {Promise} */ close(): Promise; } @@ -220,9 +216,9 @@ export interface PolyfillXMLHttpRequest extends PolyfillXMLHttpRequestEventTarge /** * XMLHttpRequest.open, always async, user and password not supported. When * this method invoked, headers should becomes empty again. - * @param {string} method Request method - * @param {string} url Request URL - * @param {boolean} async Always async + * @param method Request method + * @param url Request URL + * @param async Always async * @param user NOT SUPPORTED * @param password NOT SUPPORTED */ @@ -284,16 +280,15 @@ export interface PolyfillXMLHttpRequestEventTarget extends EventTarget { export interface Net { /** * Get cookie according to the given url. - * @param {string} domain Domain of the cookies to be removed, remove all - * @return {Promise>} Cookies of a specific domain. + * @param domain Domain of the cookies to be removed, remove all + * @return Cookies of a specific domain. */ getCookies(domain: string): Promise; /** * Remove cookies for a specific domain - * @param {?string} domain Domain of the cookies to be removed, remove all + * @param domain Domain of the cookies to be removed, remove all * cookies when this is null. - * @return {Promise} */ removeCookies(domain?: string): Promise; } @@ -303,22 +298,19 @@ export interface FS { /** * Remove file at path. - * @param {string} path:string Path of target file. - * @return {Promise} + * @param path:string Path of target file. */ unlink(path: string): Promise; /** * Create a directory. - * @param {string} path Path of directory to be created - * @return {Promise} + * @param path Path of directory to be created */ mkdir(path: string): Promise; /** * Get a file cache session - * @param {string} name Stream ID - * @return {RNFetchBlobSession} + * @param name Stream ID */ session(name: string): RNFetchBlobSession; @@ -326,10 +318,10 @@ export interface FS { /** * Create file stream from file at `path`. - * @param {string} path The file path. - * @param {string} encoding Data encoding, should be one of `base64`, `utf8`, `ascii` - * @param {boolean} bufferSize Size of stream buffer. - * @return {RNFetchBlobStream} RNFetchBlobStream stream instance. + * @param path The file path. + * @param encoding Data encoding, should be one of `base64`, `utf8`, `ascii` + * @param bufferSize Size of stream buffer. + * @return RNFetchBlobStream stream instance. */ readStream(path: string, encoding: Encoding, bufferSize?: number, tick?: number): Promise; @@ -339,19 +331,18 @@ export interface FS { /** * Create write stream to a file. - * @param {string} path Target path of file stream. - * @param {string} encoding Encoding of input data. - * @param {boolean} append A flag represent if data append to existing ones. - * @return {Promise<{}>} A promise resolves a `WriteStream` object. + * @param path Target path of file stream. + * @param encoding Encoding of input data. + * @param append A flag represent if data append to existing ones. + * @return A promise resolves a `WriteStream` object. */ writeStream(path: string, encoding: Encoding, append?: boolean): Promise; /** * Write data to file. - * @param {string} path Path of the file. - * @param {string | number[]} data Data to write to the file. - * @param {string} encoding Encoding of data (Optional). - * @return {Promise} + * @param path Path of the file. + * @param data Data to write to the file. + * @param encoding Encoding of data (Optional). */ writeFile(path: string, data: string | number[], encoding?: Encoding): Promise; @@ -359,15 +350,13 @@ export interface FS { /** * Wrapper method of readStream. - * @param {string} path Path of the file. - * @param {'base64' | 'utf8' | 'ascii'} encoding Encoding of read stream. - * @return {Promise | string>} + * @param path Path of the file. + * @param encoding Encoding of read stream. */ readFile(path: string, encoding: Encoding, bufferSize?: number): Promise; /** * Check if file exists and if it is a folder. - * @param {string} path Path to check - * @return {Promise} + * @param path Path to check */ exists(path: string): Promise; @@ -377,8 +366,7 @@ export interface FS { /** * Show statistic data of a path. - * @param {string} path Target path - * @return {RNFetchBlobStat} + * @param path Target path */ stat(path: string): Promise; @@ -386,8 +374,7 @@ export interface FS { /** * Android only method, request media scanner to scan the file. - * @param {Array>} pairs Array contains Key value pairs with key `path` and `mime`. - * @return {Promise} + * @param pairs Array contains Key value pairs with key `path` and `mime`. */ scanFile(pairs: Array<{ [key: string]: string }>): Promise; diff --git a/types/react-native-google-analytics-bridge/index.d.ts b/types/react-native-google-analytics-bridge/index.d.ts index a30f49cb2a..4a1db944e6 100644 --- a/types/react-native-google-analytics-bridge/index.d.ts +++ b/types/react-native-google-analytics-bridge/index.d.ts @@ -39,8 +39,7 @@ export interface EventPurchaseTransaction { export class GoogleAnalyticsTracker { /** * Save all tracker related data that is needed to call native methods with proper data. - * @param trackerId {String} - * @param customDimensionsFieldsIndexMap {{fieldName: fieldIndex}} Custom dimensions field/index pairs + * @param customDimensionsFieldsIndexMap Custom dimensions field/index pairs */ constructor(trackerId: string, customDimensionsFieldsIndexMap?: { [s: string]: number }) @@ -51,39 +50,37 @@ export class GoogleAnalyticsTracker { * Underlay native methods will transform provided customDimensions map to expected format. * Google analytics expect dimensions to be tracker with 'dimension{index}' keys, * not dimension field names. - * @param customDimensions {Object} - * @returns {Object} */ transformCustomDimensionsFieldsToIndexes(customDimensions: {}): void; /** * Track the current screen/view Important: Calling this will also set the "current view" for * other calls. So events tracked will be tagged as having occured on the current view. - * @param {String} screenName The name of the current screen + * @param screenName The name of the current screen */ trackScreenView(screenName: string): void; /** * Track an event that has occured - * @param {String} category The event category - * @param {String} action The event action - * @param {EventOptionalValues} optionalValues An object containing optional label and value + * @param category The event category + * @param action The event action + * @param optionalValues An object containing optional label and value */ trackEvent(category: string, action: string, optionalValues?: EventOptionalValues): void; /** * Track the current screen/view with custom dimension values - * @param {String} screenName The name of the current screen - * @param {Object} customDimensionValues An object containing custom dimension key/value pairs + * @param screenName The name of the current screen + * @param customDimensionValues An object containing custom dimension key/value pairs */ trackScreenViewWithCustomDimensionValues(screenName: string, customDimensionValues: {}): void; /** * Track an event that has occured with custom dimension values - * @param {String} category The event category - * @param {String} action The event action - * @param {EventOptionalValues} optionalValues An object containing optional label and value - * @param {Object} customDimensionValues An object containing custom dimension key/value pairs + * @param category The event category + * @param action The event action + * @param optionalValues An object containing optional label and value + * @param customDimensionValues An object containing custom dimension key/value pairs */ trackEventWithCustomDimensionValues( category: string, @@ -94,18 +91,18 @@ export class GoogleAnalyticsTracker { /** * Track an event that has occured - * @param {String} category The event category - * @param {Number} value The timing measurement in milliseconds - * @param {TimeTrackingOptionalValues} optionalValues An object containing optional name and label + * @param category The event category + * @param value The timing measurement in milliseconds + * @param optionalValues An object containing optional name and label */ trackTiming(category: string, value: number, optionalValues?: TimeTrackingOptionalValues): void; /** * Track a purchase event. This uses the Enhanced Ecommerce GA feature. - * @param {EventPurchaseProduct} product An object with product values - * @param {EventPurchaseTransaction} transaction An object with transaction values - * @param {String} eventCategory The event category, defaults to Ecommerce - * @param {String} eventAction The event action, defaults to Purchase + * @param product An object with product values + * @param transaction An object with transaction values + * @param eventCategory The event category, defaults to Ecommerce + * @param eventAction The event action, defaults to Purchase */ trackPurchaseEvent( product: EventPurchaseProduct, @@ -116,10 +113,10 @@ export class GoogleAnalyticsTracker { /** * Track a purchase event. This uses the Enhanced Ecommerce GA feature. - * @param {EventPurchaseProduct[]} products An array with products - * @param {EventPurchaseTransaction} transaction An object with transaction values - * @param {String} eventCategory The event category, defaults to Ecommerce - * @param {String} eventAction The event action, defaults to Purchase + * @param products An array with products + * @param transaction An object with transaction values + * @param eventCategory The event category, defaults to Ecommerce + * @param eventAction The event action, defaults to Purchase */ trackMultiProductsPurchaseEvent( products: EventPurchaseProduct[], @@ -130,11 +127,11 @@ export class GoogleAnalyticsTracker { /** * Track a purchase event with custom dimensions. This uses the Enhanced Ecommerce GA feature. - * @param {EventPurchaseProduct[]} products An array with products - * @param {EventPurchaseTransaction} transaction An object with transaction values - * @param {String} eventCategory The event category, defaults to Ecommerce - * @param {String} eventAction The event action, defaults to Purchase - * @param {Object} customDimensionValues An object containing custom dimension key/value pairs + * @param products An array with products + * @param transaction An object with transaction values + * @param eventCategory The event category, defaults to Ecommerce + * @param eventAction The event action, defaults to Purchase + * @param customDimensionValues An object containing custom dimension key/value pairs */ trackMultiProductsPurchaseEventWithCustomDimensionValues( products: EventPurchaseProduct[], @@ -146,15 +143,15 @@ export class GoogleAnalyticsTracker { /** * Track an exception - * @param {String} error The description of the error - * @param {Boolean} fatal A value indiciating if the error was fatal, defaults to false + * @param error The description of the error + * @param fatal A value indiciating if the error was fatal, defaults to false */ trackException(error: string, fatal?: boolean): void; /** * Sets the Google Analytics User-ID for the current user for tracking. * The userId should be an anonymous identifier that complies with Google Analytic's User-ID policy. - * @param {String} userId The current userId, + * @param userId The current userId, */ setUser(userId: string): void; @@ -166,54 +163,48 @@ export class GoogleAnalyticsTracker { * Important: For iOS you can only use this method if you have done the optional step 6 from the installation * guide. Only enable this (and link the appropriate libraries) if you plan to use advertising features * in your app, or else your app may get rejected from the AppStore. - * @param {Boolean} enabled Defaults to true + * @param enabled Defaults to true */ allowIDFA(enabled?: boolean): void; /** * Track a social interaction, Facebook, Twitter, etc. - * @param {String} network - * @param {String} action - * @param {String} targetUrl */ trackSocialInteraction(network: string, action: string, targetUrl: string): void; /** * Sets if uncaught exceptions should be tracked - * @param {Boolean} enabled */ setTrackUncaughtExceptions(enabled: boolean): void; /** * Sets the trackers appName * The Bundle name is used by default - * @param {String} appName */ setAppName(appName: string): void; /** * Sets the trackers appVersion - * @param {String} appVersion */ setAppVersion(appVersion: string): void; /** * Sets if AnonymizeIp is enabled * If enabled the last octet of the IP address will be removed - * @param {Boolean} enabled disabled by default + * @param enabled disabled by default */ setAnonymizeIp(enabled: string): void; /** * Sets the tracker currency property. See accepted currency codes here * https://developers.google.com/analytics/devguides/platform/features/currencies - * @param {string} currencyCode ISO 4217 currency code + * @param currencyCode ISO 4217 currency code */ setCurrency(currencyCode: string): void; /** * Sets tracker sampling rate. - * @param {Float} sampleRatio Percentage 0 - 100 + * @param sampleRatio Percentage 0 - 100 */ setSamplingRate(sampleRatio: number): void; } @@ -223,49 +214,44 @@ export interface GAEvent { payload: T; } -export class GoogleTagManager { +export namespace GoogleTagManager { /** * Call once to open the container for all subsequent static calls. - * @param {String} containerId */ - static openContainerWithId(containerId: string): Promise; + function openContainerWithId(containerId: string): Promise; /** * Retrieves a boolean value with the given key from the opened container. - * @param {String} key */ - static boolForKey(key: string): Promise; + function boolForKey(key: string): Promise; /** * Retrieves a string with the given key from the opened container. - * @param {String} key */ - static stringForKey(key: string): Promise; + function stringForKey(key: string): Promise; /** * Retrieves a number with the given key from the opened container. - * @param {String} key */ - static doubleForKey(key: string): Promise; + function doubleForKey(key: string): Promise; /** * push a datalayer event for Google Analytics through Google Tag Manager. - * @param {Object} dictionary An Map containing key and value pairs. + * @param dictionary An Map containing key and value pairs. * it must have at least one key "event" with event name * example: {event: "eventName", pageId: "/home"} */ - static pushDataLayerEvent(dictionary: GAEvent): Promise; + function pushDataLayerEvent(dictionary: GAEvent): Promise; } -export class GoogleAnalyticsSettings { +export namespace GoogleAnalyticsSettings { /** * Sets if OptOut is active and disables Google Analytics * This has to be set each time the App starts * * Disabled by default. - * @param {Boolean} enabled */ - static setOptOut(enabled: boolean): void; + function setOptOut(enabled: boolean): void; /** * Sets the trackers dispatch interval @@ -278,16 +264,14 @@ export class GoogleAnalyticsSettings { * * This is set to 20 seconds by default. * - * @param {Number} intervalInSeconds */ - static setDispatchInterval(intervalInSeconds: number): void; + function setDispatchInterval(intervalInSeconds: number): void; /** * When enabled the native library prevents any data from being sent to Google Analytics. * This allows you to test or debug the implementation, without your test data appearing in * your Google Analytics reports. * - * @param {Boolean} enabled */ - static setDryRun(enabled: boolean): void; + function setDryRun(enabled: boolean): void; } diff --git a/types/react-native-modal/index.d.ts b/types/react-native-modal/index.d.ts index c01c636dae..979efc3578 100644 --- a/types/react-native-modal/index.d.ts +++ b/types/react-native-modal/index.d.ts @@ -11,8 +11,6 @@ export interface ReactNativeModalProps { * Modal show animation * * @default 'slideInUp' - * @type {(SlidingEntrances | string)} - * @memberof ReactNativeModalProps */ animationIn?: SlidingEntrances | string; @@ -20,8 +18,6 @@ export interface ReactNativeModalProps { * Timing for the modal show animation (in ms) * * @default 300 - * @type {number} - * @memberof ReactNativeModalProps */ animationInTiming?: number; @@ -29,8 +25,6 @@ export interface ReactNativeModalProps { * Modal hide animation * * @default 'slideOutDown' - * @type {(SlidingExits | string)} - * @memberof ReactNativeModalProps */ animationOut?: SlidingExits | string; @@ -38,8 +32,6 @@ export interface ReactNativeModalProps { * Timing for the modal hide animation (in ms) * * @default 300 - * @type {number} - * @memberof ReactNativeModalProps */ animationOutTiming?: number; @@ -47,8 +39,6 @@ export interface ReactNativeModalProps { * Move the modal up if the keyboard is open * * @default false - * @type {boolean} - * @memberof ReactNativeModalProps */ avoidKeyboard?: boolean; @@ -56,8 +46,6 @@ export interface ReactNativeModalProps { * The backdrop background color * * @default 'black' - * @type {string} - * @memberof ReactNativeModalProps */ backdropColor?: string; @@ -65,8 +53,6 @@ export interface ReactNativeModalProps { * The backdrop opacity when the modal is visible * * @default 0.70 - * @type {number} - * @memberof ReactNativeModalProps */ backdropOpacity?: number; @@ -74,8 +60,6 @@ export interface ReactNativeModalProps { * The backdrop show timing (in ms) * * @default 300 - * @type {number} - * @memberof ReactNativeModalProps */ backdropTransitionInTiming?: number; @@ -83,16 +67,12 @@ export interface ReactNativeModalProps { * The backdrop hide timing (in ms) * * @default 300 - * @type {number} - * @memberof ReactNativeModalProps */ backdropTransitionOutTiming?: number; /** * The modal content * - * @type {(ReactNode[] | ReactNode)} - * @memberof ReactNativeModalProps */ children: ReactNode[] | ReactNode; @@ -100,8 +80,6 @@ export interface ReactNativeModalProps { * Show the modal? * * @default false - * @type {boolean} - * @memberof ReactNativeModalProps */ isVisible: boolean; @@ -109,7 +87,6 @@ export interface ReactNativeModalProps { * Style applied to the modal * * @default null - * @memberof ReactNativeModalProps */ style?: ViewStyle[] | ViewStyle; @@ -117,7 +94,6 @@ export interface ReactNativeModalProps { * Called when the modal is completely visible * * @default () => {} - * @memberof ReactNativeModalProps */ onModalShow?(): void; @@ -125,7 +101,6 @@ export interface ReactNativeModalProps { * Called when the modal is completely hidden * * @default () => {} - * @memberof ReactNativeModalProps */ onModalHide?(): void; @@ -133,7 +108,6 @@ export interface ReactNativeModalProps { * Called when the Android back button is pressed * * @default () => {} - * @memberof ReactNativeModalProps */ onBackButtonPress?(): void; @@ -141,7 +115,6 @@ export interface ReactNativeModalProps { * Called when the backdrop is pressed * * @default () => {} - * @memberof ReactNativeModalProps */ onBackdropPress?(): void; } diff --git a/types/react-native-modalbox/index.d.ts b/types/react-native-modalbox/index.d.ts index 04dea6fdaf..07ddebca2b 100644 --- a/types/react-native-modalbox/index.d.ts +++ b/types/react-native-modalbox/index.d.ts @@ -13,8 +13,6 @@ export interface ModalProps extends ViewProperties { * * Default is false * - * @type {boolean} - * @memberof ModalProps */ isOpen?: boolean; @@ -23,8 +21,6 @@ export interface ModalProps extends ViewProperties { * * Default is false * - * @type {boolean} - * @memberof ModalProps */ isDisabled?: boolean; @@ -33,8 +29,6 @@ export interface ModalProps extends ViewProperties { * * Default is true * - * @type {boolean} - * @memberof ModalProps */ backdropPressToClose?: boolean; @@ -43,8 +37,6 @@ export interface ModalProps extends ViewProperties { * * Default is true * - * @type {boolean} - * @memberof ModalProps */ swipeToClose?: boolean; @@ -53,8 +45,6 @@ export interface ModalProps extends ViewProperties { * * Default is 50 * - * @type {number} - * @memberof ModalProps */ swipeThreshold?: number; @@ -63,8 +53,6 @@ export interface ModalProps extends ViewProperties { * * Default is the Window Height * - * @type {number} - * @memberof ModalProps */ swipeArea?: number; @@ -74,8 +62,6 @@ export interface ModalProps extends ViewProperties { * * Default is center * - * @type {string} - * @memberof ModalProps */ position?: 'top' | 'center' | 'bottom' | string; @@ -84,8 +70,6 @@ export interface ModalProps extends ViewProperties { * * Default is bottom * - * @type {('top' | 'bottom' | string)} - * @memberof ModalProps */ entry?: 'top' | 'bottom' | string; @@ -94,8 +78,6 @@ export interface ModalProps extends ViewProperties { * * Default is true * - * @type {boolean} - * @memberof ModalProps */ backdrop?: boolean; @@ -104,8 +86,6 @@ export interface ModalProps extends ViewProperties { * * Default is 0.5 * - * @type {number} - * @memberof ModalProps */ backdropOpacity?: number; @@ -114,8 +94,6 @@ export interface ModalProps extends ViewProperties { * * Default is black * - * @type {string} - * @memberof ModalProps */ backdropColor?: string; @@ -124,8 +102,6 @@ export interface ModalProps extends ViewProperties { * * Default is null * - * @type {JSX.Element} - * @memberof ModalProps */ backdropContent?: React.ReactNode; @@ -134,8 +110,6 @@ export interface ModalProps extends ViewProperties { * * Default is 400ms * - * @type {number} - * @memberof ModalProps */ animationDuration?: number; @@ -144,16 +118,12 @@ export interface ModalProps extends ViewProperties { * * Default is false * - * @type {boolean} - * @memberof ModalProps */ backButtonClose?: boolean; /** * * Default is false - * @type {boolean} - * @memberof ModalProps */ coverScreen?: boolean; @@ -162,22 +132,18 @@ export interface ModalProps extends ViewProperties { * * Default is false * - * @type {boolean} - * @memberof ModalProps */ startOpen?: boolean; /** * Event fired when the modal is closed and the animation is complete * - * @memberof ModalProps */ onClosed?(): void; /** * Event fired when the modal is opened and the animation is complete * - * @memberof ModalProps */ onOpened?(): void; @@ -185,9 +151,7 @@ export interface ModalProps extends ViewProperties { * When the state of the swipe to close feature has changed * (useful to change the content of the modal, display a message for example) * - * @param {boolean} state * - * @memberof ModalProps */ onClosingState?(state: boolean): void; } @@ -196,18 +160,14 @@ export default class Modal extends React.Component { /** * Open the modal * - * @static * - * @memberof Modal */ open(): void; /** * Close the modal * - * @static * - * @memberof Modal */ close(): void; } diff --git a/types/react-native-safari-view/index.d.ts b/types/react-native-safari-view/index.d.ts index 6370d4c1ab..b1f68aa245 100644 --- a/types/react-native-safari-view/index.d.ts +++ b/types/react-native-safari-view/index.d.ts @@ -9,71 +9,57 @@ export interface SafariViewOptions { /** * A String containing the url you want to load in the Safari View * - * @type {string} - * @memberof SafariViewOptions */ url: string; /** * A Boolean indicating to use Safari's Reader Mode if available * - * @type {boolean} - * @memberof SafariViewOptions */ readerMode?: boolean; /** * A String containing a hex or rgba color to use for the browser controls * - * @type {string} - * @memberof SafariViewOptions */ tintColor?: string; /** * A String containing a hex or rgba color to use for the background of the browser controls (only available on iOS 10 and higher) * - * @type {string} - * @memberof SafariViewOptions */ barTintColor?: string; /** * A Boolean indicating to open the Safari View from the bottom * - * @type {boolean} - * @memberof SafariViewOptions */ fromBottom?: boolean; } -export default class SafariView { +declare namespace SafariView { /** * Displays a Safari View with the provided URL * - * @param {SafariViewOptions} options */ - static show(options: SafariViewOptions): Promise; + function show(options: SafariViewOptions): Promise; /** * Dismisses the currently active Safari View */ - static dismiss(): void; + function dismiss(): void; /** * Checks if Safari View is available on the device */ - static isAvailable(): Promise; + function isAvailable(): Promise; /** - * @param {string} event - * @param {function} listener */ - static addEventListener(event: string, listener: () => void): EmitterSubscription; + function addEventListener(event: string, listener: () => void): EmitterSubscription; /** - * @param {string} event - * @param {function} listener */ - static removeEventListener(event: string, listener: () => void): void; + function removeEventListener(event: string, listener: () => void): void; } +export default SafariView; diff --git a/types/react-native-vector-icons/Icon.d.ts b/types/react-native-vector-icons/Icon.d.ts index d178837626..98bda708b3 100644 --- a/types/react-native-vector-icons/Icon.d.ts +++ b/types/react-native-vector-icons/Icon.d.ts @@ -14,8 +14,6 @@ export interface IconProps extends TextProperties { * Size of the icon, can also be passed as fontSize in the style object. * * @default 12 - * @type {string} - * @memberof IconProps */ size?: number; @@ -24,16 +22,12 @@ export interface IconProps extends TextProperties { * * See Icon Explorer app * {@link https://github.com/oblador/react-native-vector-icons/tree/master/Examples/IconExplorer} - * @type {string} - * @memberof IconProps */ name: string; /** * Color of the icon * - * @type {string} - * @memberof IconProps */ color?: string; } @@ -44,8 +38,6 @@ export interface IconButtonProps extends IconProps, TouchableHighlightProperties * Use iconStyle or nest a Text component if you need different colors. * * @default 'white' - * @type {string} - * @memberof IconButtonProps */ color?: string; @@ -54,8 +46,6 @@ export interface IconButtonProps extends IconProps, TouchableHighlightProperties * Set to 0 to disable. * * @default 5 - * @type {number} - * @memberof IconButtonProps */ borderRadius?: number; @@ -64,8 +54,6 @@ export interface IconButtonProps extends IconProps, TouchableHighlightProperties * Good for setting margins or a different color. * * @default {marginRight: 10} - * @type {ViewStyle} - * @memberof IconButtonProps */ iconStyle?: ViewStyle; @@ -73,8 +61,6 @@ export interface IconButtonProps extends IconProps, TouchableHighlightProperties * Style prop inherited from TextProperties and TouchableWithoutFeedbackProperties * Only exist here so we can have ViewStyle or TextStyle * - * @type {(ViewStyle | TextStyle)} - * @memberof IconButtonProps */ style?: ViewStyle | TextStyle; @@ -82,8 +68,6 @@ export interface IconButtonProps extends IconProps, TouchableHighlightProperties * Background color of the button * * @default '#007AFF' - * @type {string} - * @memberof IconButtonProps */ backgroundColor?: string; } @@ -95,8 +79,6 @@ export interface ToolbarAndroidProps extends ToolbarAndroidProperties { * Name of the navigation logo icon * (similar to ToolbarAndroid logo) * - * @type {string} - * @memberof ToolbarAndroidProps */ logoName: string; @@ -104,8 +86,6 @@ export interface ToolbarAndroidProps extends ToolbarAndroidProperties { * Name of the navigation icon * (similar to ToolbarAndroid navIcon) * - * @type {string} - * @memberof ToolbarAndroidProps */ navIconName: string; @@ -113,8 +93,6 @@ export interface ToolbarAndroidProps extends ToolbarAndroidProperties { * Name of the overflow icon * (similar to ToolbarAndroid overflowIcon) * - * @type {string} - * @memberof ToolbarAndroidProps */ overflowIconName: string; @@ -122,8 +100,6 @@ export interface ToolbarAndroidProps extends ToolbarAndroidProperties { * Size of the icons * * @default 24 - * @type {number} - * @memberof ToolbarAndroidProps */ iconSize: number; @@ -131,8 +107,6 @@ export interface ToolbarAndroidProps extends ToolbarAndroidProperties { * Color of the icons * * @default 'black' - * @type {string} - * @memberof ToolbarAndroidProps */ iconColor: string; } @@ -141,8 +115,6 @@ export interface TabBarItemIOSProps extends TabBarItemProperties { /** * Name of the default icon (similar to TabBarIOS.Item icon) * - * @type {string} - * @memberof TabBarIOSItemProps */ iconName: string; @@ -151,8 +123,6 @@ export interface TabBarItemIOSProps extends TabBarItemProperties { * * Defaults to iconName * - * @type {string} - * @memberof TabBarIOSItemProps */ selectedIconName?: string; @@ -160,16 +130,12 @@ export interface TabBarItemIOSProps extends TabBarItemProperties { * Size of the icon * * @default 30 - * @type {number} - * @memberof TabBarIOSItemProps */ iconSize?: number; /** * Color of the icon * - * @type {string} - * @memberof TabBarIOSItemProps */ iconColor?: string; @@ -178,8 +144,6 @@ export interface TabBarItemIOSProps extends TabBarItemProperties { * * Defaults to iconColor * - * @type {string} - * @memberof TabBarIOSItemProps */ selectedIconColor?: string; } diff --git a/types/react-native-vector-icons/index.d.ts b/types/react-native-vector-icons/index.d.ts index 9569cd3866..0495a97966 100644 --- a/types/react-native-vector-icons/index.d.ts +++ b/types/react-native-vector-icons/index.d.ts @@ -16,9 +16,6 @@ import { TextProperties } from 'react-native'; * Optionally pass the third fontFile argument for android support, it should be a path * to the font file in you asset folder. * - * @param glyphMap - * @param fontFamily - * @param fontFile */ export function createIconSet( glyphMap: {}, @@ -38,8 +35,6 @@ export function createIconSet( * * @see http://fontello.com * @export - * @param {{}} config - * @returns {Icon} */ export function createIconSetFromFontello(config: {}): typeof Icon; @@ -56,7 +51,5 @@ export function createIconSetFromFontello(config: {}): typeof Icon; * * @see https://icomoon.io/app * @export - * @param {{}} config - * @returns {Icon} */ export function createIconSetFromIcoMoon(config: {}): typeof Icon; diff --git a/types/react-native/index.d.ts b/types/react-native/index.d.ts index 3f02a5f6c5..fe95b306e0 100644 --- a/types/react-native/index.d.ts +++ b/types/react-native/index.d.ts @@ -58,7 +58,7 @@ interface EventSubscription { subscriber: EventSubscriptionVendor; /** - * @param {EventSubscriptionVendor} subscriber the subscriber that controls + * @param subscriber the subscriber that controls * this subscription. */ new(subscriber: EventSubscriptionVendor): EventSubscription @@ -80,15 +80,13 @@ interface EventSubscriptionVendor { /** * Adds a subscription keyed by an event type. * - * @param {string} eventType - * @param {EventSubscription} subscription */ addSubscription(eventType: string, subscription: EventSubscription): EventSubscription /** * Removes a bulk set of the subscriptions. * - * @param {?string} eventType - Optional name of the event type whose + * @param eventType - Optional name of the event type whose * registered supscriptions to remove, if null remove all subscriptions. */ removeAllSubscriptions(eventType?: string): void @@ -97,7 +95,6 @@ interface EventSubscriptionVendor { * Removes a specific subscription. Instead of calling this function, call * `subscription.remove()` directly. * - * @param {object} subscription */ removeSubscription(subscription: any): void @@ -108,8 +105,6 @@ interface EventSubscriptionVendor { * Note: This array can be potentially sparse as subscriptions are deleted * from it when they are removed. * - * @param {string} eventType - * @returns {?array} */ getSubscriptionsForType(eventType: string): EventSubscription[] } @@ -123,13 +118,13 @@ interface EmitterSubscription extends EventSubscription { context: any /** - * @param {EventEmitter} emitter - The event emitter that registered this + * @param emitter - The event emitter that registered this * subscription - * @param {EventSubscriptionVendor} subscriber - The subscriber that controls + * @param subscriber - The subscriber that controls * this subscription - * @param {function} listener - Function to invoke when the specified event is + * @param listener - Function to invoke when the specified event is * emitted - * @param {*} context - Optional context object to use when invoking the + * @param context - Optional context object to use when invoking the * listener */ new(emitter: EventEmitter, subscriber: EventSubscriptionVendor, listener: () => any, context: any): EmitterSubscription @@ -149,10 +144,10 @@ interface EventEmitterListener { * emitted. An optional calling context may be provided. The data arguments * emitted will be passed to the listener function. * - * @param {string} eventType - Name of the event to listen to - * @param {function} listener - Function to invoke when the specified event is + * @param eventType - Name of the event to listen to + * @param listener - Function to invoke when the specified event is * emitted - * @param {*} context - Optional context object to use when invoking the + * @param context - Optional context object to use when invoking the * listener */ addListener(eventType: string, listener: (...args: any[]) => any, context?: any): EmitterSubscription @@ -160,9 +155,8 @@ interface EventEmitterListener { interface EventEmitter extends EventEmitterListener { /** - * @constructor * - * @param {EventSubscriptionVendor} subscriber - Optional subscriber instance + * @param subscriber - Optional subscriber instance * to use. If omitted, a new subscriber will be created for the emitter. */ new(subscriber?: EventSubscriptionVendor): EventEmitter @@ -171,10 +165,10 @@ interface EventEmitter extends EventEmitterListener { * Similar to addListener, except that the listener is removed after it is * invoked once. * - * @param {string} eventType - Name of the event to listen to - * @param {function} listener - Function to invoke only once when the + * @param eventType - Name of the event to listen to + * @param listener - Function to invoke only once when the * specified event is emitted - * @param {*} context - Optional context object to use when invoking the + * @param context - Optional context object to use when invoking the * listener */ once(eventType: string, listener: (...args: any[]) => any, context: any): EmitterSubscription @@ -183,7 +177,7 @@ interface EventEmitter extends EventEmitterListener { * Removes all of the registered listeners, including those registered as * listener maps. * - * @param {?string} eventType - Optional name of the event whose registered + * @param eventType - Optional name of the event whose registered * listeners to remove */ removeAllListeners(eventType?: string): void @@ -221,8 +215,7 @@ interface EventEmitter extends EventEmitterListener { * Returns an array of listeners that are currently registered for the given * event. * - * @param {string} eventType - Name of the event to query - * @returns {array} + * @param eventType - Name of the event to query */ listeners(eventType: string): EmitterSubscription[] @@ -230,8 +223,8 @@ interface EventEmitter extends EventEmitterListener { * Emits an event of the given type with the given data. All handlers of that * particular type will be notified. * - * @param {string} eventType - Name of the event to emit - * @param {...*} Arbitrary arguments to be passed to each registered listener + * @param eventType - Name of the event to emit + * @param Arbitrary arguments to be passed to each registered listener * * @example * emitter.addListener('someEvent', function(message) { @@ -245,8 +238,8 @@ interface EventEmitter extends EventEmitterListener { /** * Removes the given listener for event of specific type. * - * @param {string} eventType - Name of the event to emit - * @param {function} listener - Function to invoke when the specified event is + * @param eventType - Name of the event to emit + * @param listener - Function to invoke when the specified event is * emitted * * @example @@ -468,18 +461,18 @@ export type AppConfig = { * sure the JS execution environment is setup before other modules are * `require`d. */ -export class AppRegistry { - static registerConfig(config: AppConfig[]): void; +export namespace AppRegistry { + function registerConfig(config: AppConfig[]): void; - static registerComponent( appKey: string, getComponentFunc: ComponentProvider ): string; + function registerComponent( appKey: string, getComponentFunc: ComponentProvider ): string; - static registerRunnable(appKey: string, func: Runnable): string; + function registerRunnable(appKey: string, func: Runnable): string; - static getAppKeys(): string[]; + function getAppKeys(): string[]; - static unmountApplicationComponentAtRootTag(rootTag: number): void; + function unmountApplicationComponentAtRootTag(rootTag: number): void; - static runApplication(appKey: string, appParameters: any): void; + function runApplication(appKey: string, appParameters: any): void; } export interface LayoutAnimationTypes { @@ -929,8 +922,6 @@ export interface DocumentSelectionState extends EventEmitter { * Apply an update to the state. If either offset value has changed, * set the values and emit the `change` event. Otherwise no-op. * - * @param {number} anchor - * @param {number} focus */ update(anchor: number, focus: number): void @@ -938,7 +929,6 @@ export interface DocumentSelectionState extends EventEmitter { * Given a max text length, constrain our selection offsets to ensure * that the selection remains strictly within the text range. * - * @param {number} maxLength */ constrainLength(maxLength: number): void @@ -1255,14 +1245,14 @@ interface TextInputState { currentlyFocusedField(): number /** - * @param {number} TextInputID id of the text field to focus + * @param TextInputID id of the text field to focus * Focuses the specified text field * noop if the text field was already focused */ focusTextInput(textFieldID?: number): void /** - * @param {number} textFieldID id of the text field to focus + * @param textFieldID id of the text field to focus * Unfocuses the specified text field * noop if it wasn't focused */ @@ -2216,13 +2206,11 @@ export interface SegmentedControlIOSProperties extends ViewProperties { /** * Callback that is called when the user taps a segment; * passes the event as an argument - * @param event */ onChange?: (event: NativeSyntheticEvent) => void /** * Callback that is called when the user taps a segment; passes the segment's value as an argument - * @param value */ onValueChange?: (value: string) => void @@ -2582,7 +2570,6 @@ export interface DrawerLayoutAndroidProperties extends ViewProperties { /** * Function called whenever there is an interaction with the navigation view. - * @param event */ onDrawerSlide?: (event: DrawerSlideEvent) => void @@ -2596,7 +2583,6 @@ export interface DrawerLayoutAndroidProperties extends ViewProperties { * - settling, meaning that there was an interaction with the * navigation view, and the navigation view is now finishing * it's closing or opening animation - * @param event */ onDrawerStateChanged?: (event: "Idle" | "Dragging" | "Settling") => void @@ -2710,8 +2696,6 @@ export interface PickerProperties extends PickerPropertiesIOS, PickerPropertiesA * following parameters: * - itemValue: the value prop of the item that was selected * - itemPosition: the index of the selected item in this picker - * @param itemValue - * @param itemPosition */ onValueChange?: (itemValue: any, itemPosition: number) => void @@ -3035,13 +3019,11 @@ export interface SliderProperties extends SliderPropertiesIOS, SliderPropertiesA /** * Callback called when the user finishes changing the value (e.g. when the slider is released). - * @param value */ onSlidingComplete?: (value: number) => void /** * Callback continuously called while the user is dragging the slider. - * @param value */ onValueChange?: (value: number) => void @@ -4456,8 +4438,6 @@ export interface TouchableWithoutFeedbackAndroidProperties { /** * Indicates to accessibility services to treat UI component like a native one. * Works for Android only. - * - * @enum('none', 'button', 'radiobutton_checked', 'radiobutton_unchecked' ) */ accessibilityComponentType?: 'none' | 'button' | 'radiobutton_checked' | 'radiobutton_unchecked' } @@ -4846,8 +4826,6 @@ export interface NavigatorProperties { * corresponds to the current scene being rendered by the `Navigator` and * `routeStack` is the set of currently mounted routes that the navigator * could transition to. The function should return a scene configuration object. - * @param route - * @param routeStack */ configureScene?: (route: Route, routeStack: Route[]) => SceneConfig /** @@ -4887,8 +4865,6 @@ export interface NavigatorProperties { /** * Required function which renders the scene for a given route. * Will be invoked with the route and the navigator object - * @param route - * @param navigator */ renderScene: ( route: Route, navigator: Navigator ) => React.ReactElement @@ -4918,7 +4894,6 @@ interface InteractionMixin { /** * Schedule work for after all interactions have completed. * - * @param {function} callback */ runAfterInteractions(callback: () => any): void } @@ -4932,10 +4907,10 @@ interface SubscribableMixin { * the subscription and therefore can guarantee it is retained in a way that * will be cleaned up. * - * @param {EventEmitter} eventEmitter emitter to subscribe to. - * @param {string} eventType Type of event to listen to. - * @param {function} listener Function to invoke when event occurs. - * @param {object} context Object to use as listener context. + * @param eventEmitter emitter to subscribe to. + * @param eventType Type of event to listen to. + * @param listener Function to invoke when event occurs. + * @param context Object to use as listener context. */ addListenerOn( eventEmitter: any, eventType: string, listener: () => any, context: any ): void } @@ -4989,7 +4964,7 @@ export interface NavigatorStatic extends TimerMixin, InteractionMixin, Subscriba /** * Go back N scenes at once. When N=1, behavior matches `pop()`. * When N is invalid(negative or bigger than current routes count), do nothing. - * @param {number} n The number of scenes to pop. Should be an integer. + * @param n The number of scenes to pop. Should be an integer. */ popN(n: number): void @@ -5298,8 +5273,6 @@ export interface SystraceStatic { * Measures multiple methods of a class. For example, you can do: * Systrace.measureMethods(JSON, 'JSON', ['parse', 'stringify']); * - * @param object - * @param objectName * @param methodNames Map from method names to method display names. */ measureMethods(object: any, objectName: string, methodNames: Array): void @@ -5308,10 +5281,7 @@ export interface SystraceStatic { * Returns an profiled version of the input function. For example, you can: * JSON.parse = Systrace.measure('JSON', 'parse', JSON.parse); * - * @param objName - * @param fnName - * @param {function} func - * @return {function} replacement function + * @return replacement function */ measure(objName: string, fnName: string, func: T): T } @@ -5589,7 +5559,6 @@ export interface PixelRatioStatic { /** * Converts a layout size (dp) to pixel size (px). * Guaranteed to return an integer number. - * @param layoutSize */ getPixelSizeForLayoutSize(layoutSize: number): number @@ -5599,7 +5568,6 @@ export interface PixelRatioStatic { * on a device with a PixelRatio of 3, * PixelRatio.roundToNearestPixel(8.4) = 8.33, * which corresponds to exactly (8.33 * 3) = 25 pixels. - * @param layoutSize */ roundToNearestPixel(layoutSize: number): number @@ -5659,8 +5627,8 @@ export interface ScaledSize { * * Example: `var {height, width} = Dimensions.get('window');` * - * @param {string} dim Name of dimension as defined when calling `set`. - * @returns {Object?} Value for the dimension. + * @param dim Name of dimension as defined when calling `set`. + * @returns Value for the dimension. * @see https://facebook.github.io/react-native/docs/dimensions.html#content */ export interface Dimensions { @@ -5675,30 +5643,30 @@ export interface Dimensions { * example, using inline styles rather than setting a value in a * StyleSheet). * Example: var {height, width} = Dimensions.get('window'); - @param {string} dim Name of dimension as defined when calling set. - @returns {Object?} Value for the dimension. + @param dim Name of dimension as defined when calling set. + @returns Value for the dimension. */ get(dim: "window" | "screen"): ScaledSize; /** * This should only be called from native code by sending the didUpdateDimensions event. - * @param {object} dims Simple string-keyed object of dimensions to set + * @param dims Simple string-keyed object of dimensions to set */ set( dims: {[key: string]: any} ): void; /** * Add an event listener for dimension changes * - * @param {string} type the type of event to listen to - * @param {function} handler the event handler + * @param type the type of event to listen to + * @param handler the event handler */ addEventListener(type: "change", handler: () => void): void; /** * Remove an event listener * - * @param {string} type the type of event - * @param {function} handler the event handler + * @param type the type of event + * @param handler the event handler */ removeEventListener(type: "change", handler: () => void): void; } @@ -5723,7 +5691,6 @@ export interface InteractionManagerStatic extends EventEmitterListener { /** * Schedule a function to run after all interactions have completed. * Returns a cancellable - * @param fn */ runAfterInteractions(task?: (() => any) | SimpleTask | PromiseTask): { then: (onfulfilled?: () => any, onrejected?: () => any) => Promise, @@ -5861,7 +5828,7 @@ interface ScrollResponderMixin extends SubscribableMixin { /** * Invoke this from an `onTouchEnd` event. * - * @param {SyntheticEvent} e Event. + * @param e Event. */ scrollResponderHandleTouchEnd(e: ScrollResponderEvent): void @@ -5910,7 +5877,7 @@ interface ScrollResponderMixin extends SubscribableMixin { * responder). The `onResponderReject` won't fire in that case - it only * fires when a *current* responder rejects our request. * - * @param {SyntheticEvent} e Touch Start event. + * @param e Touch Start event. */ scrollResponderHandleTouchStart(e: ScrollResponderEvent): void @@ -5923,7 +5890,7 @@ interface ScrollResponderMixin extends SubscribableMixin { * responder). The `onResponderReject` won't fire in that case - it only * fires when a *current* responder rejects our request. * - * @param {SyntheticEvent} e Touch Start event. + * @param e Touch Start event. */ scrollResponderHandleTouchMove(e: ScrollResponderEvent): void @@ -5969,10 +5936,10 @@ interface ScrollResponderMixin extends SubscribableMixin { * This method should be used as the callback to onFocus in a TextInputs' * parent view. Note that any module using this mixin needs to return * the parent view's ref in getScrollViewRef() in order to use this method. - * @param {any} nodeHandle The TextInput node handle - * @param {number} additionalOffset The scroll view's top "contentInset". + * @param nodeHandle The TextInput node handle + * @param additionalOffset The scroll view's top "contentInset". * Default is 0. - * @param {bool} preventNegativeScrolling Whether to allow pulling the content + * @param preventNegativeScrolling Whether to allow pulling the content * down to make it meet the keyboard's top. Default is false. */ scrollResponderScrollNativeHandleToKeyboard(nodeHandle: any, additionalOffset?: number, preventNegativeScrollOffset?: boolean): void @@ -5982,10 +5949,10 @@ interface ScrollResponderMixin extends SubscribableMixin { * screen - even if has some content inset. We then measure the offsets of the * keyboard, and compensate both for the scroll view's "contentInset". * - * @param {number} left Position of input w.r.t. table view. - * @param {number} top Position of input w.r.t. table view. - * @param {number} width Width of the text input. - * @param {number} height Height of the text input. + * @param left Position of input w.r.t. table view. + * @param top Position of input w.r.t. table view. + * @param width Width of the text input. + * @param height Height of the text input. */ scrollResponderInputMeasureAndScrollToKeyboard(left: number, top: number, width: number, height: number): void @@ -6708,7 +6675,6 @@ export interface AlertIOSStatic { /** * Create and display a popup alert. - * @static * @method alert * @param title The dialog's title. * @param message An optional message that appears below @@ -6726,7 +6692,6 @@ export interface AlertIOSStatic { /** * Create and display a prompt to enter some text. - * @static * @method prompt * @param title The dialog's title. * @param message An optional message that appears above the text @@ -7016,7 +6981,7 @@ export interface CameraRollStatic { /** * Invokes callback with photo identifier objects from the local camera roll of the device matching shape defined by getPhotosReturnChecker. * - * @param {object} params See getPhotosParamChecker. + * @param params See getPhotosParamChecker. */ getPhotos(params: GetPhotosParamType): Promise; } @@ -7325,7 +7290,7 @@ export interface PanResponderInstance { */ export interface PanResponderStatic { /** - * @param {PanResponderCallbacks} config Enhanced versions of all of the responder callbacks + * @param config Enhanced versions of all of the responder callbacks * that provide not only the typical `ResponderSyntheticEvent`, but also the * `PanResponder` gesture state. Simply replace the word `Responder` with * `PanResponder` in each of the typical `onResponder*` callbacks. For @@ -7616,14 +7581,10 @@ export interface SettingsStatic { } -/** - * @enum('default', 'light-content', 'dark-content') - */ + export type StatusBarStyle = "default" | "light-content" | "dark-content" -/** - * @enum('fade', 'slide') - */ + export type StatusBarAnimation = "none" | "fade" | "slide" export interface StatusBarPropertiesIOS { diff --git a/types/react-navigation/index.d.ts b/types/react-navigation/index.d.ts index 43e8c6054d..fdbf8b2e62 100644 --- a/types/react-navigation/index.d.ts +++ b/types/react-navigation/index.d.ts @@ -32,7 +32,7 @@ import { // @todo when we split types into common, native and web, // we can properly change Animated.Value to its real value -type AnimatedValue = any; +export type AnimatedValue = any; export type HeaderMode = 'float' | 'screen' | 'none'; @@ -67,7 +67,7 @@ export interface NavigationState { * Index refers to the active child route in the routes array. */ index: number; - routes: Array; + routes: any[]; } export type NavigationRoute = NavigationLeafRoute | NavigationStateRoute; @@ -157,7 +157,7 @@ export interface NavigationScreenDetails { } export interface NavigationScreenOptions { - title?: string, + title?: string; } export interface NavigationScreenConfigProps { @@ -189,7 +189,7 @@ export interface NavigationNavigator extends React.Co } export interface NavigationParams { - [key: string]: any, + [key: string]: any; } export interface NavigationNavigateActionPayload { @@ -235,7 +235,7 @@ export interface NavigationInitAction extends NavigationInitActionPayload { export interface NavigationResetActionPayload { index: number; key?: string | null; - actions: Array; + actions: NavigationNavigateAction[]; } export interface NavigationResetAction extends NavigationResetActionPayload { @@ -319,7 +319,7 @@ export interface NavigationTabRouterConfig { initialRouteName?: string; paths?: NavigationPathsConfig; navigationOptions?: NavigationScreenConfig; - order?: Array; // todo: type these as the real route names rather than 'string' + order?: string[]; // todo: type these as the real route names rather than 'string' // Does the back button cause the router to switch to the initial tab backBehavior?: 'none' | 'initialRoute'; // defaults `initialRoute` @@ -422,7 +422,7 @@ export interface NavigationTransitionProps { progress: AnimatedValue; // All the scenes of the transitioner. - scenes: Array; + scenes: NavigationScene[]; // The active scene, corresponding to the route at // `navigation.state.routes[navigation.state.index]`. When rendering @@ -486,12 +486,10 @@ export interface LayoutEvent { * END FLOW TYPEDEFINITION.JS PORT */ - /** * BEGIN MANUAL DEFINITIONS OUTSIDE OF TYPEDEFINITION.JS */ - // From navigators/NavigatorTypes.js export type NavigatorType = | 'react-navigation/STACK' @@ -502,7 +500,7 @@ export type NavigatorType = export function addNavigationHelpers(navigation: NavigationProp): NavigationScreenProp; // From createNavigationContainer.js -interface NavigationContainerProps { +export interface NavigationContainerProps { uriPrefix?: string | RegExp; onNavigationStateChange?: ( prevNavigationState: NavigationState, @@ -522,11 +520,11 @@ export interface NavigationContainer extends React.ComponentClass< } export interface StackNavigatorConfig extends NavigationStackViewConfig, NavigationStackRouterConfig { - containerOptions?: any, + containerOptions?: any; } // Return createNavigationContainer -export function StackNavigator( +export function StackNavigator( routeConfigMap: NavigationRouteConfigMap, stackConfig?: StackNavigatorConfig, ): NavigationContainer; @@ -534,7 +532,6 @@ export function StackNavigator( // DrawerItems export const DrawerItems: React.ComponentClass; - /** * Drawer Navigator */ @@ -557,7 +554,7 @@ export interface DrawerNavigatorConfig extends NavigationTabRouterConfig, Drawer }; } -export function DrawerNavigator( +export function DrawerNavigator( routeConfigMap: NavigationRouteConfigMap, drawerConfig?: DrawerNavigatorConfig, ): NavigationContainer; @@ -597,7 +594,7 @@ export interface TabViewConfig { export interface TabNavigatorConfig extends NavigationTabRouterConfig, TabViewConfig { } // From navigators/TabNavigator.js -export function TabNavigator( +export function TabNavigator( routeConfigMap: NavigationRouteConfigMap, drawConfig?: TabNavigatorConfig, ): NavigationContainer; @@ -609,18 +606,18 @@ export const TabBarBottom: React.ComponentClass; * NavigationActions */ export namespace NavigationActions { - export function init(options?: NavigationInitActionPayload): NavigationInitAction; - export function navigate(options: NavigationNavigateActionPayload): NavigationNavigateAction; - export function reset(options: NavigationResetActionPayload): NavigationResetAction; - export function back(options?: NavigationBackActionPayload): NavigationBackAction; - export function setParams(options: NavigationSetParamsActionPayload): NavigationSetParamsAction; + function init(options?: NavigationInitActionPayload): NavigationInitAction; + function navigate(options: NavigationNavigateActionPayload): NavigationNavigateAction; + function reset(options: NavigationResetActionPayload): NavigationResetAction; + function back(options?: NavigationBackActionPayload): NavigationBackAction; + function setParams(options: NavigationSetParamsActionPayload): NavigationSetParamsAction; } /** * Transitioner * @desc From react-navigation/src/views/Transitioner.js */ -interface TransitionerProps { +export interface TransitionerProps { configureTransition: ( transitionProps: NavigationTransitionProps, prevTransitionProps?: NavigationTransitionProps @@ -635,11 +632,11 @@ interface TransitionerProps { style?: StyleProp; } -interface TransitionerState { +export interface TransitionerState { layout: NavigationLayout; position: Animated.Value; progress: Animated.Value; - scenes: Array; + scenes: NavigationScene[]; } export class Transitioner extends React.Component< @@ -647,42 +644,37 @@ export class Transitioner extends React.Component< TransitionerState > { } - /** * Tab Router * * @desc from react-navigation/src/routers/TabRouter.js - * @param routeConfigs - * @param config */ export function TabRouter( routeConfigs: NavigationRouteConfigMap, config: NavigationTabRouterConfig -): NavigationRouter +): NavigationRouter; /** * Stack Router * * @desc from react-navigation/src/routers/StackRouter.js - * @param routeConfigs - * @param config */ export function StackRouter( routeConfigs: NavigationRouteConfigMap, config: NavigationTabRouterConfig -): NavigationRouter +): NavigationRouter; /** * Create Navigator * * @see https://github.com/react-community/react-navigation/blob/master/src/navigators/createNavigator.js */ -export function createNavigator( +export function createNavigator( router: NavigationRouter, routeConfigs?: NavigationRouteConfigMap, - navigatorConfig?: NavigatorConfig, + navigatorConfig?: {} | null, navigatorType?: NavigatorType -): (NavigationView: React.ComponentClass) => NavigationNavigator +): (NavigationView: React.ComponentClass) => NavigationNavigator; /** * Create an HOC that injects the navigation and manages the navigation state @@ -692,14 +684,13 @@ export function createNavigator( * * @see https://github.com/react-community/react-navigation/blob/master/src/createNavigationContainer.js */ -export function createNavigationContainer( - Component: NavigationNavigator -): React.Component +export function createNavigationContainer( + Component: NavigationNavigator +): React.Component; /** * END MANUAL DEFINITIONS OUTSIDE OF TYPEDEFINITION.JS */ - /** * BEGIN CUSTOM CONVENIENCE INTERFACES */ @@ -714,7 +705,6 @@ export interface NavigationScreenProps { * END CUSTOM CONVENIENCE INTERFACES */ - /* * Header */ diff --git a/types/react-navigation/react-navigation-tests.tsx b/types/react-navigation/react-navigation-tests.tsx index ef29bac820..8abbb3f697 100644 --- a/types/react-navigation/react-navigation-tests.tsx +++ b/types/react-navigation/react-navigation-tests.tsx @@ -38,19 +38,17 @@ const viewStyle: ViewStyle = { backgroundColor: "white", }; - -/** - * @class StartScreen @extends React.Component - * @desc Simple screen component class with typed component props that should - * receive the navigation prop from the AppNavigator. - */ const ROUTE_NAME_START_SCREEN = "StartScreen"; interface StartScreenNavigationParams { - id: number, - s: string, + id: number; + s: string; } interface StartScreenProps extends NavigationScreenProps { } +/** + * @desc Simple screen component class with typed component props that should + * receive the navigation prop from the AppNavigator. + */ class StartScreen extends React.Component { render() { // Implicit type checks. @@ -65,24 +63,18 @@ class StartScreen extends React.Component { ); } private navigateToNextScreen = (): void => { - this.props.navigation.navigate( - ROUTE_NAME_NEXT_SCREEN, - { - id: this.props.navigation.state.params.id, - name: this.props.navigation.state.params.s, - } as NextScreenNavigationParams, - ); - + const params: NextScreenNavigationParams = { + id: this.props.navigation.state.params.id, + name: this.props.navigation.state.params.s, + }; + this.props.navigation.navigate(ROUTE_NAME_NEXT_SCREEN, params); } } -/** - * @class NextScreen @extends React.Component - */ const ROUTE_NAME_NEXT_SCREEN = "NextScreen"; interface NextScreenNavigationParams { - id: number, - name: string, + id: number; + name: string; } interface NextScreenProps extends NavigationScreenProps { } class NextScreen extends React.Component { @@ -138,7 +130,6 @@ const Router = (props: any) => ( /> ); - /** * Tab navigator. */ @@ -170,7 +161,6 @@ function renderBasicTabNavigator(): JSX.Element { ); } - /** * Stack navigator. */ @@ -199,14 +189,12 @@ function renderBasicStackNavigator(): JSX.Element { ); } - +interface CustomTransitionerProps { + navigation: NavigationScreenProp; +} /** - * @class CustomTransitioner @extends React.Component * @desc Custom transitioner component. Follows react-navigation/src/views/CardStackTransitioner.js. */ -interface CustomTransitionerProps { - navigation: NavigationScreenProp -} class CustomTransitioner extends React.Component { render() { return ( @@ -228,7 +216,7 @@ class CustomTransitioner extends React.Component _transitionProps: NavigationTransitionProps, _prevTransitionProps: NavigationTransitionProps ) => { - return {} + return {}; } } @@ -257,12 +245,11 @@ function renderHeaderBackButton(schema: string): JSX.Element { } } - const initAction: NavigationInitAction = NavigationActions.init({ params: { foo: "bar" } -}) +}); const navigateAction: NavigationNavigateAction = NavigationActions.navigate({ routeName: "FooScreen", @@ -270,7 +257,7 @@ const navigateAction: NavigationNavigateAction = NavigationActions.navigate({ foo: "bar" }, action: NavigationActions.navigate({ routeName: "BarScreen" }) -}) +}); const resetAction: NavigationResetAction = NavigationActions.reset({ index: 0, @@ -278,15 +265,15 @@ const resetAction: NavigationResetAction = NavigationActions.reset({ actions: [ NavigationActions.navigate({ routeName: "FooScreen" }) ] -}) +}); const backAction: NavigationBackAction = NavigationActions.back({ key: "foo" -}) +}); const setParamsAction: NavigationSetParamsAction = NavigationActions.setParams({ key: "foo", params: { foo: "bar" } -}) +}); diff --git a/types/react-navigation/tslint.json b/types/react-navigation/tslint.json index bb8ee9cb60..3db14f85ea 100644 --- a/types/react-navigation/tslint.json +++ b/types/react-navigation/tslint.json @@ -1,23 +1 @@ -{ - "extends": "dtslint/dt.json", - "rules": { - // Lowercase `object` is available in TypeScript 2.2 only. - "ban-types": false, - // Below are all TODO - "align": false, - "array-type": false, - "comment-format": false, - "jsdoc-format": false, - "no-misused-new": false, - "no-consecutive-blank-lines": false, - "no-empty-interface": false, - "no-object-literal-type-assertion": false, - "no-padding": false, - "no-var": false, - "prefer-declare-function": false, - "prefer-method-signature": false, - "semicolon": false, - "strict-export-declare-modifiers": false, - "no-unnecessary-generics": false - } -} +{ "extends": "dtslint/dt.json" } diff --git a/types/react-relay/tslint.json b/types/react-relay/tslint.json index 3db14f85ea..6a82dd0467 100644 --- a/types/react-relay/tslint.json +++ b/types/react-relay/tslint.json @@ -1 +1,7 @@ -{ "extends": "dtslint/dt.json" } +{ + "extends": "dtslint/dt.json", + "rules": { + // TODO + "no-unnecessary-class": false + } +} diff --git a/types/react-tooltip/index.d.ts b/types/react-tooltip/index.d.ts index c8a19073b1..093c08ebf1 100644 --- a/types/react-tooltip/index.d.ts +++ b/types/react-tooltip/index.d.ts @@ -11,7 +11,6 @@ declare class ReactTooltip extends React.Component { } declare namespace ReactTooltip { /** * Hide the tooltip manually, the target is optional, if no target passed in, all existing tooltips will be hidden - * @param {Element} target */ function hide(target?: Element): void; diff --git a/types/react-virtualized/tslint.json b/types/react-virtualized/tslint.json index 815be0b5f3..e0ac4d06fb 100644 --- a/types/react-virtualized/tslint.json +++ b/types/react-virtualized/tslint.json @@ -10,6 +10,7 @@ "prefer-method-signature": false, "prefer-declare-function": false, "no-padding": false, + "no-redundant-jsdoc-2": false, "array-type": [true, "array"] } }