mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
8cdc9e7f04
Summary: React Native's TS definitions are currently mostly stored in one monolithic file. This change splits the definitions up to correspond to the source files they came from, and are placed next to the source files. I think this should help inform, and make it easy to update the TS declarations when touching the Flow file. I noticed as part of the change that the typings have not yet removed many APIs that were removed from RN. This is bad, since it means using the removed/non-functional API doesn't cause typechecker errors. Locating typings next to source should prevent that from being able to happen. The organization here means individual TS declarations can declare what will be in the RN entrypoint, which is a little confusing. Seems like a good potential next refactor, beyond the literal translation I did. Changelog: [General][Changed] - Place TS Declarations Alongside Source Files Reviewed By: lunaleaps, rshest Differential Revision: D39796598 fbshipit-source-id: b36366466fd1976bdd2d4c8f7a4104a33c457a07
115 lines
4.5 KiB
TypeScript
115 lines
4.5 KiB
TypeScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @format
|
|
*/
|
|
|
|
import type * as React from 'react';
|
|
import {Constructor} from 'Utilities';
|
|
import {ColorValue} from '../../StyleSheet/StyleSheet';
|
|
import {TouchableMixin} from './Touchable';
|
|
|
|
import type {TVProps} from './TouchableOpacity';
|
|
import {TouchableWithoutFeedbackProps} from './TouchableWithoutFeedback';
|
|
|
|
interface BaseBackgroundPropType {
|
|
type: string;
|
|
rippleRadius?: number | null | undefined;
|
|
}
|
|
|
|
interface RippleBackgroundPropType extends BaseBackgroundPropType {
|
|
type: 'RippleAndroid';
|
|
borderless: boolean;
|
|
color?: number | null | undefined;
|
|
}
|
|
|
|
interface ThemeAttributeBackgroundPropType extends BaseBackgroundPropType {
|
|
type: 'ThemeAttrAndroid';
|
|
attribute: string;
|
|
}
|
|
|
|
type BackgroundPropType =
|
|
| RippleBackgroundPropType
|
|
| ThemeAttributeBackgroundPropType;
|
|
|
|
/**
|
|
* @see https://reactnative.dev/docs/touchablenativefeedback#props
|
|
*/
|
|
export interface TouchableNativeFeedbackProps
|
|
extends TouchableWithoutFeedbackProps,
|
|
TVProps {
|
|
/**
|
|
* Determines the type of background drawable that's going to be used to display feedback.
|
|
* It takes an object with type property and extra data depending on the type.
|
|
* It's recommended to use one of the following static methods to generate that dictionary:
|
|
* 1) TouchableNativeFeedback.SelectableBackground() - will create object that represents android theme's
|
|
* default background for selectable elements (?android:attr/selectableItemBackground)
|
|
* 2) TouchableNativeFeedback.SelectableBackgroundBorderless() - will create object that represent android
|
|
* theme's default background for borderless selectable elements
|
|
* (?android:attr/selectableItemBackgroundBorderless). Available on android API level 21+
|
|
* 3) TouchableNativeFeedback.Ripple(color, borderless) - will create object that represents ripple drawable
|
|
* with specified color (as a string). If property borderless evaluates to true the ripple will render
|
|
* outside of the view bounds (see native actionbar buttons as an example of that behavior). This background
|
|
* type is available on Android API level 21+
|
|
*/
|
|
background?: BackgroundPropType | undefined;
|
|
useForeground?: boolean | undefined;
|
|
}
|
|
|
|
/**
|
|
* A wrapper for making views respond properly to touches (Android only).
|
|
* On Android this component uses native state drawable to display touch feedback.
|
|
* At the moment it only supports having a single View instance as a child node,
|
|
* as it's implemented by replacing that View with another instance of RCTView node with some additional properties set.
|
|
*
|
|
* Background drawable of native feedback touchable can be customized with background property.
|
|
*
|
|
* @see https://reactnative.dev/docs/touchablenativefeedback#content
|
|
*/
|
|
declare class TouchableNativeFeedbackComponent extends React.Component<TouchableNativeFeedbackProps> {}
|
|
declare const TouchableNativeFeedbackBase: Constructor<TouchableMixin> &
|
|
typeof TouchableNativeFeedbackComponent;
|
|
export class TouchableNativeFeedback extends TouchableNativeFeedbackBase {
|
|
/**
|
|
* Creates an object that represents android theme's default background for
|
|
* selectable elements (?android:attr/selectableItemBackground).
|
|
*
|
|
* @param rippleRadius The radius of ripple effect
|
|
*/
|
|
static SelectableBackground(
|
|
rippleRadius?: number | null,
|
|
): ThemeAttributeBackgroundPropType;
|
|
|
|
/**
|
|
* Creates an object that represent android theme's default background for borderless
|
|
* selectable elements (?android:attr/selectableItemBackgroundBorderless).
|
|
* Available on android API level 21+.
|
|
*
|
|
* @param rippleRadius The radius of ripple effect
|
|
*/
|
|
static SelectableBackgroundBorderless(
|
|
rippleRadius?: number | null,
|
|
): ThemeAttributeBackgroundPropType;
|
|
|
|
/**
|
|
* Creates an object that represents ripple drawable with specified color (as a
|
|
* string). If property `borderless` evaluates to true the ripple will
|
|
* render outside of the view bounds (see native actionbar buttons as an
|
|
* example of that behavior). This background type is available on Android
|
|
* API level 21+.
|
|
*
|
|
* @param color The ripple color
|
|
* @param borderless If the ripple can render outside it's bounds
|
|
* @param rippleRadius The radius of ripple effect
|
|
*/
|
|
static Ripple(
|
|
color: ColorValue,
|
|
borderless: boolean,
|
|
rippleRadius?: number | null,
|
|
): RippleBackgroundPropType;
|
|
static canUseNativeForeground(): boolean;
|
|
}
|