From 8400faad1f27a9bc128610e485bdcbcf6e4608b4 Mon Sep 17 00:00:00 2001 From: Paul Von Schrottky Date: Wed, 31 Mar 2021 12:46:52 -0400 Subject: [PATCH 01/12] Release script: Update react-native-editor version to 1.50.0 --- packages/react-native-aztec/package.json | 2 +- packages/react-native-bridge/package.json | 2 +- packages/react-native-editor/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react-native-aztec/package.json b/packages/react-native-aztec/package.json index bbd87100b2f0e6..815e2cac3b63f5 100644 --- a/packages/react-native-aztec/package.json +++ b/packages/react-native-aztec/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/react-native-aztec", - "version": "1.49.0", + "version": "1.50.0", "description": "Aztec view for react-native.", "private": true, "author": "The WordPress Contributors", diff --git a/packages/react-native-bridge/package.json b/packages/react-native-bridge/package.json index 3bb0db42bd2885..e64ec1780b3f5b 100644 --- a/packages/react-native-bridge/package.json +++ b/packages/react-native-bridge/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/react-native-bridge", - "version": "1.49.0", + "version": "1.50.0", "description": "Native bridge library used to integrate the block editor into a native App.", "private": true, "author": "The WordPress Contributors", diff --git a/packages/react-native-editor/package.json b/packages/react-native-editor/package.json index 08c90f761514ba..1a5fae78c15ffb 100644 --- a/packages/react-native-editor/package.json +++ b/packages/react-native-editor/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/react-native-editor", - "version": "1.49.0", + "version": "1.50.0", "description": "Mobile WordPress gutenberg editor.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", From 6821a9c2fdeaee6a581dac7e545ceae9af2fc5c0 Mon Sep 17 00:00:00 2001 From: Paul Von Schrottky Date: Wed, 31 Mar 2021 12:47:14 -0400 Subject: [PATCH 02/12] Release script: Update with changes from 'npm run core preios' --- packages/react-native-editor/ios/Gemfile.lock | 5 ++++- packages/react-native-editor/ios/Podfile.lock | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/react-native-editor/ios/Gemfile.lock b/packages/react-native-editor/ios/Gemfile.lock index 8537a61386f86b..cd2c385ba653bc 100644 --- a/packages/react-native-editor/ios/Gemfile.lock +++ b/packages/react-native-editor/ios/Gemfile.lock @@ -1,3 +1,6 @@ +GEM + specs: + GEM remote: https://rubygems.org/ specs: @@ -80,4 +83,4 @@ DEPENDENCIES cocoapods (~> 1.8.0)! BUNDLED WITH - 2.0.2 + 2.2.10 diff --git a/packages/react-native-editor/ios/Podfile.lock b/packages/react-native-editor/ios/Podfile.lock index bb43afd0154c5d..949515bc92a06c 100644 --- a/packages/react-native-editor/ios/Podfile.lock +++ b/packages/react-native-editor/ios/Podfile.lock @@ -21,7 +21,7 @@ PODS: - DoubleConversion - glog - glog (0.3.5) - - Gutenberg (1.49.0): + - Gutenberg (1.50.0): - React-Core (= 0.61.5) - React-CoreModules (= 0.61.5) - React-RCTImage (= 0.61.5) @@ -253,7 +253,7 @@ PODS: - React-Core - RNSVG (9.13.6-gb): - React-Core - - RNTAztecView (1.49.0): + - RNTAztecView (1.50.0): - React-Core - WordPress-Aztec-iOS (~> 1.19.4) - WordPress-Aztec-iOS (1.19.4) @@ -402,7 +402,7 @@ SPEC CHECKSUMS: FBReactNativeSpec: 118d0d177724c2d67f08a59136eb29ef5943ec75 Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51 glog: 1f3da668190260b06b429bb211bfbee5cd790c28 - Gutenberg: a6a27f9f3b421da20f0ea091da6779f3ec036696 + Gutenberg: 3fb0791ec50a4bfb82d53ee47d57b413229d3a97 RCTRequired: b153add4da6e7dbc44aebf93f3cf4fcae392ddf1 RCTTypeSafety: 9aa1b91d7f9310fc6eadc3cf95126ffe818af320 React: b6a59ef847b2b40bb6e0180a97d0ca716969ac78 @@ -435,7 +435,7 @@ SPEC CHECKSUMS: RNReanimated: f05baf4cd76b6eab2e4d7e2b244424960b968918 RNScreens: 953633729a42e23ad0c93574d676b361e3335e8b RNSVG: 46c4b680fe18237fa01eb7d7b311d77618fde31f - RNTAztecView: 9fa0a3430874ae395e3e3efa728919c749d6bf9e + RNTAztecView: 7552d3a49d7958b422dc089ae5e1d91b8300f58d WordPress-Aztec-iOS: 870c93297849072aadfc2223e284094e73023e82 Yoga: f2a7cd4280bfe2cca5a7aed98ba0eb3d1310f18b From a6f7c9463187409f5dc28b2204ab391d0b660cc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Zi=C3=B3=C5=82kowski?= Date: Wed, 31 Mar 2021 19:02:09 +0200 Subject: [PATCH 03/12] Gutenberg Plugin: Remove deprecations planned for 10.3 release (#30417) * Gutenberg Plugin: Remove deprecations planned for 10.3 release * Docs: Add changelog entry --- packages/interface/CHANGELOG.md | 4 ++++ .../interface/src/components/action-item/index.js | 15 +-------------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/packages/interface/CHANGELOG.md b/packages/interface/CHANGELOG.md index b7e838b04ad30b..8fe1eb16ff1a96 100644 --- a/packages/interface/CHANGELOG.md +++ b/packages/interface/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Breaking Changes + +- Passing a tuple of components with `as` prop to `ActionItem.Slot` component is no longer supported. Please pass a component with `as` prop instead ([#30417](https://github.com/WordPress/gutenberg/pull/30417)). + ## 1.1.0 (2021-03-17) ### Deprecations diff --git a/packages/interface/src/components/action-item/index.js b/packages/interface/src/components/action-item/index.js index 23d3e147eefe3c..b19a573f1016b0 100644 --- a/packages/interface/src/components/action-item/index.js +++ b/packages/interface/src/components/action-item/index.js @@ -1,13 +1,12 @@ /** * External dependencies */ -import { isArray, isEmpty, noop } from 'lodash'; +import { isEmpty, noop } from 'lodash'; /** * WordPress dependencies */ import { ButtonGroup, Button, Slot, Fill } from '@wordpress/components'; -import deprecated from '@wordpress/deprecated'; import { Children } from '@wordpress/element'; function ActionItemSlot( { @@ -17,18 +16,6 @@ function ActionItemSlot( { bubblesVirtually, ...props } ) { - if ( isArray( Component ) ) { - deprecated( - 'Passing a tuple of components with `as` prop to `ActionItem.Slot` component', - { - since: '10.2', - plugin: 'Gutenberg', - alternative: 'a component with `as` prop', - version: '10.3', - } - ); - Component = Component[ 0 ]; - } return ( Date: Wed, 31 Mar 2021 17:09:18 -0400 Subject: [PATCH 04/12] Closed changelog for 1.50.0 --- packages/react-native-editor/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/react-native-editor/CHANGELOG.md b/packages/react-native-editor/CHANGELOG.md index de522914b7c4be..4bbf6f4ae9db1d 100644 --- a/packages/react-native-editor/CHANGELOG.md +++ b/packages/react-native-editor/CHANGELOG.md @@ -11,6 +11,8 @@ For each user feature we should also add a importance categorization label to i ## Unreleased +## 1.50.0 + - [***] a11y: Screenreader improvements for the UnitControl component [#29741] ## 1.49.0 From 8499c7a16a7bbb4101ca462e53ef4b0cf4175184 Mon Sep 17 00:00:00 2001 From: Paul Von Schrottky Date: Fri, 9 Apr 2021 16:17:30 -0400 Subject: [PATCH 05/12] Release script: Update react-native-editor version to 1.50.1 --- packages/react-native-aztec/package.json | 2 +- packages/react-native-bridge/package.json | 2 +- packages/react-native-editor/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react-native-aztec/package.json b/packages/react-native-aztec/package.json index 815e2cac3b63f5..7c03276bcef6a1 100644 --- a/packages/react-native-aztec/package.json +++ b/packages/react-native-aztec/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/react-native-aztec", - "version": "1.50.0", + "version": "1.50.1", "description": "Aztec view for react-native.", "private": true, "author": "The WordPress Contributors", diff --git a/packages/react-native-bridge/package.json b/packages/react-native-bridge/package.json index e64ec1780b3f5b..d087ba0eb70455 100644 --- a/packages/react-native-bridge/package.json +++ b/packages/react-native-bridge/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/react-native-bridge", - "version": "1.50.0", + "version": "1.50.1", "description": "Native bridge library used to integrate the block editor into a native App.", "private": true, "author": "The WordPress Contributors", diff --git a/packages/react-native-editor/package.json b/packages/react-native-editor/package.json index 1a5fae78c15ffb..dc761ebe3a2ef4 100644 --- a/packages/react-native-editor/package.json +++ b/packages/react-native-editor/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/react-native-editor", - "version": "1.50.0", + "version": "1.50.1", "description": "Mobile WordPress gutenberg editor.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", From ff5d5ec78a1b99b1474615403e55c169aed27f3a Mon Sep 17 00:00:00 2001 From: Paul Von Schrottky Date: Fri, 9 Apr 2021 16:17:52 -0400 Subject: [PATCH 06/12] Release script: Update with changes from 'npm run core preios' --- packages/react-native-editor/ios/Podfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/react-native-editor/ios/Podfile.lock b/packages/react-native-editor/ios/Podfile.lock index 949515bc92a06c..36829628d6db01 100644 --- a/packages/react-native-editor/ios/Podfile.lock +++ b/packages/react-native-editor/ios/Podfile.lock @@ -21,7 +21,7 @@ PODS: - DoubleConversion - glog - glog (0.3.5) - - Gutenberg (1.50.0): + - Gutenberg (1.50.1): - React-Core (= 0.61.5) - React-CoreModules (= 0.61.5) - React-RCTImage (= 0.61.5) @@ -253,7 +253,7 @@ PODS: - React-Core - RNSVG (9.13.6-gb): - React-Core - - RNTAztecView (1.50.0): + - RNTAztecView (1.50.1): - React-Core - WordPress-Aztec-iOS (~> 1.19.4) - WordPress-Aztec-iOS (1.19.4) @@ -402,7 +402,7 @@ SPEC CHECKSUMS: FBReactNativeSpec: 118d0d177724c2d67f08a59136eb29ef5943ec75 Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51 glog: 1f3da668190260b06b429bb211bfbee5cd790c28 - Gutenberg: 3fb0791ec50a4bfb82d53ee47d57b413229d3a97 + Gutenberg: 62fc73dafa850e4e5ae259d36503f5ab9cb4799b RCTRequired: b153add4da6e7dbc44aebf93f3cf4fcae392ddf1 RCTTypeSafety: 9aa1b91d7f9310fc6eadc3cf95126ffe818af320 React: b6a59ef847b2b40bb6e0180a97d0ca716969ac78 @@ -435,7 +435,7 @@ SPEC CHECKSUMS: RNReanimated: f05baf4cd76b6eab2e4d7e2b244424960b968918 RNScreens: 953633729a42e23ad0c93574d676b361e3335e8b RNSVG: 46c4b680fe18237fa01eb7d7b311d77618fde31f - RNTAztecView: 7552d3a49d7958b422dc089ae5e1d91b8300f58d + RNTAztecView: f33408723146b0ea91645f0730efd69e26031a9d WordPress-Aztec-iOS: 870c93297849072aadfc2223e284094e73023e82 Yoga: f2a7cd4280bfe2cca5a7aed98ba0eb3d1310f18b From 176eb8e6f21db0432f24469e558c19dbf9c45652 Mon Sep 17 00:00:00 2001 From: Paul Von Schrottky Date: Fri, 9 Apr 2021 12:34:43 -0400 Subject: [PATCH 07/12] RNMobile: Truncate rangecell screenreader decimals (#30678) Screenreaders (VoiceOver and TalkBack) were reading values of range-cells with too much precision. For example, a Column block with three columns would read widths as 33.33333333 when it should be read as 33.3. --- .../components/src/mobile/bottom-sheet/range-cell.native.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/components/src/mobile/bottom-sheet/range-cell.native.js b/packages/components/src/mobile/bottom-sheet/range-cell.native.js index ab3827843fa10e..78c5e6399ac869 100644 --- a/packages/components/src/mobile/bottom-sheet/range-cell.native.js +++ b/packages/components/src/mobile/bottom-sheet/range-cell.native.js @@ -160,7 +160,7 @@ class BottomSheetRangeCell extends Component { __( '%1$s. %2$s is %3$s %4$s.' ), cellProps.label, settingLabel, - value, + toFixed( value, decimalNum ), unitLabel ); }; From 1b3afd3ed3f7f60212ea6d733f8f655b1ff7cab6 Mon Sep 17 00:00:00 2001 From: Joel Dean Date: Fri, 9 Apr 2021 00:19:30 -0500 Subject: [PATCH 08/12] [RNMobile] react native bridge UBE path fix (#30650) * Fixed the asset path for the unsupported-block-editor * symlink update. --- .../android/react-native-bridge/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native-bridge/android/react-native-bridge/build.gradle b/packages/react-native-bridge/android/react-native-bridge/build.gradle index 2d7de665e67351..1e018263e34386 100644 --- a/packages/react-native-bridge/android/react-native-bridge/build.gradle +++ b/packages/react-native-bridge/android/react-native-bridge/build.gradle @@ -59,7 +59,7 @@ android { // Despite being in a folder called "resources", the files in // unsupported-block-editor are accessed as assets by their // consumers: the WordPressEditor library. - assets.srcDirs += '../../../../resources/unsupported-block-editor' + assets.srcDirs += '../../../../../resources/unsupported-block-editor' } } } From f7f15d5cc5c26015e471898d2c00d0beb358fb70 Mon Sep 17 00:00:00 2001 From: Paul Von Schrottky Date: Thu, 8 Apr 2021 22:34:52 -0400 Subject: [PATCH 09/12] Use the default div tagName on native (#30645) Co-authored-by: Ceyhun Ozugur --- packages/block-library/src/quote/edit.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/block-library/src/quote/edit.js b/packages/block-library/src/quote/edit.js index e4337960ad652e..036bceec59b11e 100644 --- a/packages/block-library/src/quote/edit.js +++ b/packages/block-library/src/quote/edit.js @@ -15,6 +15,9 @@ import { } from '@wordpress/block-editor'; import { BlockQuotation } from '@wordpress/components'; import { createBlock } from '@wordpress/blocks'; +import { Platform } from '@wordpress/element'; + +const isWebPlatform = Platform.OS === 'web'; export default function QuoteEdit( { attributes, @@ -82,7 +85,7 @@ export default function QuoteEdit( { { ( ! RichText.isEmpty( citation ) || isSelected ) && ( From bed8bd997a64d8eaf71400e4da57531efa4fae27 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Thu, 8 Apr 2021 18:25:36 -0500 Subject: [PATCH 10/12] Fix crash from non-adjustable unit RangeCell a11y activation (#30636) * Avoid invoking possible null callback Previously, the unit picker callback was always invoked when a11y tools activated the element. This caused the app to crash whenever the element did not have adjustable units. * Add test coverage for RangeCell accessibility actions --- .../mobile/bottom-sheet/range-cell.native.js | 4 +- .../bottom-sheet/test/range-cell.native.js | 71 +++++++++++++++++++ test/native/setup.js | 31 +++++++- 3 files changed, 102 insertions(+), 4 deletions(-) create mode 100644 packages/components/src/mobile/bottom-sheet/test/range-cell.native.js diff --git a/packages/components/src/mobile/bottom-sheet/range-cell.native.js b/packages/components/src/mobile/bottom-sheet/range-cell.native.js index 78c5e6399ac869..49931aa74bcdcf 100644 --- a/packages/components/src/mobile/bottom-sheet/range-cell.native.js +++ b/packages/components/src/mobile/bottom-sheet/range-cell.native.js @@ -188,7 +188,9 @@ class BottomSheetRangeCell extends Component { this.a11yDecrementValue(); break; case 'activate': - openUnitPicker(); + if ( openUnitPicker ) { + openUnitPicker(); + } break; } } } diff --git a/packages/components/src/mobile/bottom-sheet/test/range-cell.native.js b/packages/components/src/mobile/bottom-sheet/test/range-cell.native.js new file mode 100644 index 00000000000000..7e20f682a4b96e --- /dev/null +++ b/packages/components/src/mobile/bottom-sheet/test/range-cell.native.js @@ -0,0 +1,71 @@ +/** + * External dependencies + */ +import { AccessibilityInfo } from 'react-native'; +import { create, act } from 'react-test-renderer'; + +/** + * Internal dependencies + */ +import RangeCell from '../range-cell'; + +// Avoid errors due to mocked stylesheet files missing required selectors +jest.mock( '@wordpress/compose', () => ( { + ...jest.requireActual( '@wordpress/compose' ), + withPreferredColorScheme: jest.fn( ( Component ) => ( props ) => ( + ( {} ) ) } + /> + ) ), +} ) ); + +const isScreenReaderEnabled = Promise.resolve( true ); +beforeAll( () => { + // Mock async native module to avoid act warning + AccessibilityInfo.isScreenReaderEnabled = jest.fn( + () => isScreenReaderEnabled + ); +} ); + +it( 'allows modifying units via a11y actions', async () => { + const mockOpenUnitPicker = jest.fn(); + const renderer = create( + + ); + // Await async update to component state to avoid act warning + await act( () => isScreenReaderEnabled ); + const { onAccessibilityAction } = renderer.toJSON().props; + + onAccessibilityAction( { nativeEvent: { actionName: 'activate' } } ); + expect( mockOpenUnitPicker ).toHaveBeenCalled(); +} ); + +describe( 'when range lacks an adjustable unit', () => { + it( 'disallows modifying units via a11y actions', async () => { + const renderer = create( + + ); + // Await async update to component state to avoid act warning + await act( () => isScreenReaderEnabled ); + const { onAccessibilityAction } = renderer.toJSON().props; + + expect( () => + onAccessibilityAction( { nativeEvent: { actionName: 'activate' } } ) + ).not.toThrow(); + } ); +} ); diff --git a/test/native/setup.js b/test/native/setup.js index 6e6534d70d8711..9ef6952aa80204 100644 --- a/test/native/setup.js +++ b/test/native/setup.js @@ -3,6 +3,15 @@ */ import 'react-native-gesture-handler/jestSetup'; +// Mock component to render with props rather than merely a string name so that +// we may assert against it. ...args is used avoid warnings about ignoring +// forwarded refs if React.forwardRef happens to be used. +const mockComponent = ( element ) => ( ...args ) => { + const [ props ] = args; + const React = require( 'react' ); + return React.createElement( element, props, props.children ); +}; + jest.mock( '@wordpress/element', () => { return { __esModule: true, @@ -81,9 +90,14 @@ jest.mock( 'react-native-safe-area', () => { }; } ); -jest.mock( '@react-native-community/slider', () => () => 'Slider', { - virtual: true, -} ); +jest.mock( + '@react-native-community/slider', + () => { + const { forwardRef } = require( 'react' ); + return forwardRef( mockComponent( 'Slider' ) ); + }, + { virtual: true } +); if ( ! global.window.matchMedia ) { global.window.matchMedia = () => ( { @@ -126,3 +140,14 @@ jest.mock( 'react-native/Libraries/Animated/src/NativeAnimatedHelper' ); // undefined." The private module referenced could possibly be replaced with // a React ref instead. We could then remove this internal mock. jest.mock( 'react-native/Libraries/Components/TextInput/TextInputState' ); + +// Mock native modules incompatible with testing environment +jest.mock( + 'react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo', + () => ( { + addEventListener: jest.fn(), + announceForAccessibility: jest.fn(), + removeEventListener: jest.fn(), + isScreenReaderEnabled: jest.fn( () => Promise.resolve( false ) ), + } ) +); From e3515d3e0825003823a1f25dff520f635ef128ed Mon Sep 17 00:00:00 2001 From: Joel Dean Date: Fri, 9 Apr 2021 16:21:53 -0500 Subject: [PATCH 11/12] Re-added symlink update. --- .../src/main/assets/gutenberg-web-single-block | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native-bridge/android/react-native-bridge/src/main/assets/gutenberg-web-single-block b/packages/react-native-bridge/android/react-native-bridge/src/main/assets/gutenberg-web-single-block index 705d9aaab8f96f..a55e9b1da662cf 120000 --- a/packages/react-native-bridge/android/react-native-bridge/src/main/assets/gutenberg-web-single-block +++ b/packages/react-native-bridge/android/react-native-bridge/src/main/assets/gutenberg-web-single-block @@ -1 +1 @@ -../../../../common/gutenberg-web-single-block \ No newline at end of file +../../../../../common/gutenberg-web-single-block \ No newline at end of file From 464f116cff24945f5c84d2f2d2087692f2cde946 Mon Sep 17 00:00:00 2001 From: Paul Von Schrottky Date: Fri, 9 Apr 2021 18:44:52 -0400 Subject: [PATCH 12/12] Update changelog for react-native-editor --- packages/react-native-editor/CHANGELOG.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/react-native-editor/CHANGELOG.md b/packages/react-native-editor/CHANGELOG.md index 4bbf6f4ae9db1d..a1c6791367c0d3 100644 --- a/packages/react-native-editor/CHANGELOG.md +++ b/packages/react-native-editor/CHANGELOG.md @@ -11,13 +11,20 @@ For each user feature we should also add a importance categorization label to i ## Unreleased +## 1.50.1 + +- [x] Truncate rangecell screenreader decimals] [#30678] +- [x] Fix Quote block citation [#30548] +- [xx] Fix crash from non-adjustable unit RangeCell a11y activation [#30636] +- [xx] Fix Unsupported Block Editor on Android [#30650] + ## 1.50.0 - [***] a11y: Screenreader improvements for the UnitControl component [#29741] ## 1.49.0 -* [*] Remove the cancel button from settings options (Android only) [https://github.com/WordPress/gutenberg/pull/29599] +- [*] Remove the cancel button from settings options (Android only) [https://github.com/WordPress/gutenberg/pull/29599] ## 1.48.0