From a33c32215292edf39dbd94cd855e25faf2836b0d Mon Sep 17 00:00:00 2001 From: Nicolas Gallagher Date: Thu, 1 Sep 2022 15:08:39 -0700 Subject: [PATCH] [change] Deprecate Touchables and Button components These components have been replaced by Pressable and will be removed from React Native. Fix #2382 --- .../__snapshots__/index-test.js.snap | 20 +++-- .../src/__tests__/index-test.js | 8 +- packages/benchmarks/src/app/App.js | 16 ++-- .../src/pages/docs/components/button.md | 58 -------------- .../src/pages/docs/components/touchables.md | 25 ------ .../pages/button/index.js | 36 --------- .../pages/flatlist/index.js | 6 +- .../pages/scroll-view/index.js | 6 +- .../__snapshots__/index-test.js.snap | 78 ------------------- .../exports/Button/__tests__/index-test.js | 48 ------------ .../src/exports/Button/index.js | 3 + .../src/exports/Touchable/index.js | 6 ++ .../src/exports/TouchableHighlight/index.js | 6 ++ .../src/exports/TouchableOpacity/index.js | 6 ++ .../exports/TouchableWithoutFeedback/index.js | 6 ++ 15 files changed, 51 insertions(+), 277 deletions(-) delete mode 100644 packages/react-native-web-docs/src/pages/docs/components/button.md delete mode 100644 packages/react-native-web-docs/src/pages/docs/components/touchables.md delete mode 100644 packages/react-native-web-examples/pages/button/index.js delete mode 100644 packages/react-native-web/src/exports/Button/__tests__/__snapshots__/index-test.js.snap delete mode 100644 packages/react-native-web/src/exports/Button/__tests__/index-test.js diff --git a/packages/babel-plugin-react-native-web/src/__tests__/__snapshots__/index-test.js.snap b/packages/babel-plugin-react-native-web/src/__tests__/__snapshots__/index-test.js.snap index 5b3a1fbb..670b06b5 100644 --- a/packages/babel-plugin-react-native-web/src/__tests__/__snapshots__/index-test.js.snap +++ b/packages/babel-plugin-react-native-web/src/__tests__/__snapshots__/index-test.js.snap @@ -71,7 +71,7 @@ import * as ReactNativeModules from 'react-native-web/dist/cjs/index'; exports[`Rewrite react-native to react-native-web import from "react-native-web": import from "react-native-web" 1`] = ` import { unstable_createElement } from 'react-native-web'; -import { StyleSheet, View, TouchableOpacity, processColor } from 'react-native-web'; +import { StyleSheet, View, Pressable, processColor } from 'react-native-web'; import * as ReactNativeModules from 'react-native-web'; ↓ ↓ ↓ ↓ ↓ ↓ @@ -79,7 +79,7 @@ import * as ReactNativeModules from 'react-native-web'; import unstable_createElement from 'react-native-web/dist/exports/createElement'; import StyleSheet from 'react-native-web/dist/exports/StyleSheet'; import View from 'react-native-web/dist/exports/View'; -import TouchableOpacity from 'react-native-web/dist/exports/TouchableOpacity'; +import Pressable from 'react-native-web/dist/exports/Pressable'; import processColor from 'react-native-web/dist/exports/processColor'; import * as ReactNativeModules from 'react-native-web/dist/index'; @@ -90,7 +90,7 @@ exports[`Rewrite react-native to react-native-web require "react-native": requir const ReactNative = require('react-native'); const { View } = require('react-native'); -const { StyleSheet, TouchableOpacity } = require('react-native'); +const { StyleSheet, Pressable } = require('react-native'); ↓ ↓ ↓ ↓ ↓ ↓ @@ -100,8 +100,7 @@ const View = require('react-native-web/dist/exports/View').default; const StyleSheet = require('react-native-web/dist/exports/StyleSheet').default; -const TouchableOpacity = - require('react-native-web/dist/exports/TouchableOpacity').default; +const Pressable = require('react-native-web/dist/exports/Pressable').default; `; @@ -110,7 +109,7 @@ exports[`Rewrite react-native to react-native-web require "react-native": requir const ReactNative = require('react-native'); const { View } = require('react-native'); -const { StyleSheet, TouchableOpacity } = require('react-native'); +const { StyleSheet, Pressable } = require('react-native'); ↓ ↓ ↓ ↓ ↓ ↓ @@ -121,8 +120,8 @@ const View = require('react-native-web/dist/cjs/exports/View').default; const StyleSheet = require('react-native-web/dist/cjs/exports/StyleSheet').default; -const TouchableOpacity = - require('react-native-web/dist/cjs/exports/TouchableOpacity').default; +const Pressable = + require('react-native-web/dist/cjs/exports/Pressable').default; `; @@ -131,7 +130,7 @@ exports[`Rewrite react-native to react-native-web require "react-native-web": re const ReactNative = require('react-native-web'); const { unstable_createElement } = require('react-native-web'); -const { StyleSheet, View, TouchableOpacity, processColor } = require('react-native-web'); +const { StyleSheet, View, Pressable, processColor } = require('react-native-web'); ↓ ↓ ↓ ↓ ↓ ↓ @@ -144,8 +143,7 @@ const StyleSheet = require('react-native-web/dist/exports/StyleSheet').default; const View = require('react-native-web/dist/exports/View').default; -const TouchableOpacity = - require('react-native-web/dist/exports/TouchableOpacity').default; +const Pressable = require('react-native-web/dist/exports/Pressable').default; const processColor = require('react-native-web/dist/exports/processColor').default; diff --git a/packages/babel-plugin-react-native-web/src/__tests__/index-test.js b/packages/babel-plugin-react-native-web/src/__tests__/index-test.js index 84c10eef..9ef03779 100644 --- a/packages/babel-plugin-react-native-web/src/__tests__/index-test.js +++ b/packages/babel-plugin-react-native-web/src/__tests__/index-test.js @@ -24,7 +24,7 @@ import * as ReactNativeModules from 'react-native';`, { title: 'import from "react-native-web"', code: `import { unstable_createElement } from 'react-native-web'; -import { StyleSheet, View, TouchableOpacity, processColor } from 'react-native-web'; +import { StyleSheet, View, Pressable, processColor } from 'react-native-web'; import * as ReactNativeModules from 'react-native-web';`, snapshot: true }, @@ -45,14 +45,14 @@ export { StyleSheet, Text, unstable_createElement } from 'react-native-web';`, title: 'require "react-native"', code: `const ReactNative = require('react-native'); const { View } = require('react-native'); -const { StyleSheet, TouchableOpacity } = require('react-native');`, +const { StyleSheet, Pressable } = require('react-native');`, snapshot: true }, { title: 'require "react-native"', code: `const ReactNative = require('react-native'); const { View } = require('react-native'); -const { StyleSheet, TouchableOpacity } = require('react-native');`, +const { StyleSheet, Pressable } = require('react-native');`, snapshot: true, pluginOptions: { commonjs: true } }, @@ -60,7 +60,7 @@ const { StyleSheet, TouchableOpacity } = require('react-native');`, title: 'require "react-native-web"', code: `const ReactNative = require('react-native-web'); const { unstable_createElement } = require('react-native-web'); -const { StyleSheet, View, TouchableOpacity, processColor } = require('react-native-web');`, +const { StyleSheet, View, Pressable, processColor } = require('react-native-web');`, snapshot: true } ]; diff --git a/packages/benchmarks/src/app/App.js b/packages/benchmarks/src/app/App.js index 56b15f8b..1728c049 100644 --- a/packages/benchmarks/src/app/App.js +++ b/packages/benchmarks/src/app/App.js @@ -1,11 +1,5 @@ import Benchmark from './Benchmark'; -import { - Picker, - StyleSheet, - ScrollView, - TouchableOpacity, - View -} from 'react-native'; +import { Picker, StyleSheet, ScrollView, Pressable, View } from 'react-native'; import React, { Component } from 'react'; import Button from './Button'; import { IconClear, IconEye } from './Icons'; @@ -100,9 +94,9 @@ export default class App extends Component { - + - + @@ -134,9 +128,9 @@ export default class App extends Component { viewPanel={ - + - + diff --git a/packages/react-native-web-docs/src/pages/docs/components/button.md b/packages/react-native-web-docs/src/pages/docs/components/button.md deleted file mode 100644 index 34b79d00..00000000 --- a/packages/react-native-web-docs/src/pages/docs/components/button.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Button -date: Last Modified -permalink: /docs/button/index.html -eleventyNavigation: - key: Button - parent: Components ---- - -{% import "fragments/macros.html" as macro with context %} - -:::lead -A basic button component. Supports a minimal level of customization. -::: - -You can also build a custom button using `Pressable`. - -```jsx -import { Button } from 'react-native'; - - -`; - -exports[`components/Button prop "color" 1`] = ` - -`; - -exports[`components/Button prop "disabled" 1`] = ` - -`; - -exports[`components/Button prop "testID" 1`] = ` - -`; - -exports[`components/Button prop "title" 1`] = ` - -`; diff --git a/packages/react-native-web/src/exports/Button/__tests__/index-test.js b/packages/react-native-web/src/exports/Button/__tests__/index-test.js deleted file mode 100644 index 8b3e223a..00000000 --- a/packages/react-native-web/src/exports/Button/__tests__/index-test.js +++ /dev/null @@ -1,48 +0,0 @@ -import Button from '..'; -import React from 'react'; -import { createEventTarget } from 'dom-event-testing-library'; -import { act, render } from '@testing-library/react'; - -describe('components/Button', () => { - test('prop "accessibilityLabel"', () => { - const { container } = render( -