react-native
Version:
A framework for building native apps using React
142 lines (140 loc) • 4.51 kB
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.
*
* @generated SignedSource<<82ea140681109134dc500b32ad91fc88>>
*
* This file was translated from Flow by scripts/js-api/build-types/index.js.
* Original file: packages/react-native/Libraries/Components/Switch/Switch.js
*/
import type { HostInstance } from "../../../src/private/types/HostInstance";
import type { ColorValue } from "../../StyleSheet/StyleSheet";
import type { NativeSyntheticEvent } from "../../Types/CoreEventTypes";
import type { ViewProps } from "../View/ViewPropTypes";
import * as React from "react";
export type SwitchInstance = HostInstance;
export type SwitchPropsIOS = {
/**
* Background color when the switch is turned on.
*
* @deprecated use trackColor instead
*/
onTintColor?: ColorValue | undefined;
/**
* Color of the foreground switch grip.
*
* @deprecated use thumbColor instead
*/
thumbTintColor?: ColorValue | undefined;
/**
* Background color when the switch is turned off.
*
* @deprecated use trackColor instead
*/
tintColor?: ColorValue | undefined;
};
type SwitchChangeEventData = Readonly<{
target: number;
value: boolean;
}>;
export type SwitchChangeEvent = NativeSyntheticEvent<SwitchChangeEventData>;
type SwitchPropsBase = {
/**
* If true, the user won't be able to toggle the switch.
*
* @default `false`
*/
disabled?: boolean | undefined;
/**
* The value of the switch. If true the switch will be turned on.
*
* @default `false`
*/
value?: boolean | undefined;
/**
* Color of the foreground switch grip. If set on iOS, the switch grip
* loses its drop shadow.
*/
thumbColor?: ColorValue | undefined;
/**
* Custom colors for the switch track. On iOS, when the switch value is
* false, the track shrinks into the border.
*/
trackColor?: Readonly<{
false?: ColorValue | undefined;
true?: ColorValue | undefined;
}> | undefined;
/**
* Custom color for the background. Can be seen when the switch value is
* false or when the switch is disabled (and the switch is translucent).
*
* @platform ios
*/
ios_backgroundColor?: ColorValue | undefined;
/**
* Invoked when the user tries to change the value of the switch. Receives
* the change event as an argument. Use `onValueChange` to receive just
* the new value instead.
*/
onChange?: ((event: SwitchChangeEvent) => Promise<void> | void) | undefined;
/**
* Invoked when the user tries to change the value of the switch. Receives
* the new value as an argument. Use `onChange` to receive the event
* instead.
*/
onValueChange?: ((value: boolean) => Promise<void> | void) | undefined;
};
export interface SwitchProps extends Readonly<Omit<ViewProps, keyof SwitchPropsIOS | keyof SwitchPropsBase | keyof {}> & Omit<SwitchPropsIOS, keyof SwitchPropsBase | keyof {}> & Omit<SwitchPropsBase, keyof {}>> {}
declare const Switch: (props: Omit<SwitchProps, "ref"> & {
ref?: React.Ref<SwitchInstance> | undefined;
}) => React.ReactNode;
/**
* Renders a boolean input.
*
* This is a controlled component that requires an `onValueChange` callback
* that updates the `value` prop in order for the component to reflect user
* actions. If the `value` prop is not updated, the component will continue to
* render the supplied `value` prop instead of the expected result of any user
* actions.
*
* Example:
*
* ```tsx
* import React, {useState} from 'react';
* import {View, Switch, StyleSheet} from 'react-native';
*
* const App = () => {
* const [isEnabled, setIsEnabled] = useState(false);
* const toggleSwitch = () => setIsEnabled(previousState => !previousState);
*
* return (
* <View style={styles.container}>
* <Switch
* trackColor={{false: '#767577', true: '#81b0ff'}}
* thumbColor={isEnabled ? '#f5dd4b' : '#f4f3f4'}
* ios_backgroundColor="#3e3e3e"
* onValueChange={toggleSwitch}
* value={isEnabled}
* />
* </View>
* );
* };
*
* const styles = StyleSheet.create({
* container: {
* flex: 1,
* alignItems: 'center',
* justifyContent: 'center',
* },
* });
*
* export default App;
* ```
*
* @see https://reactnative.dev/docs/switch
*/
declare const $$Switch: typeof Switch;
declare type $$Switch = typeof $$Switch;
export default $$Switch;