Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RNMobile] - Layout Picker - Keyboard visibility improvements #21463

Merged
merged 3 commits into from
Apr 8, 2020

Conversation

geriux
Copy link
Member

@geriux geriux commented Apr 7, 2020

Gutenberg Mobile PR-> wordpress-mobile/gutenberg-mobile#2123

Description

While testing the picker functionality it was found that on some smaller devices the picker would cover part of the editor.

It was agreed to tweak the visibility of the picker depending on:

  • If the keyboard is closed: Display the template picker buttons normally
  • If the keyboard is open: Check if window height is enough(detect a good enough threshold), if not, just hide the buttons.

From wordpress-mobile/gutenberg-mobile#2088 (comment)

Screenshots

iPhone 6S
iPhone 11
iPad
Android

How has this been tested?

On a mobile device

  • Open the WordPress app with metro running
  • Double check that you have the keyboard turned on in the simulator
  • With the device on Portrait, go to pages and create a new one
  • Tap on the first Paragraph block
  • Expect to see the layout template picker
  • Rotate the simulator to landscape
  • Expect to not see the layout template picker
  • Hide the keyboard with the toolbar button
  • Expect to see the layout picker to be visible
  • Tap on the paragraph block
  • Expect to not see the layout picker

On a tablet

  • Open the WordPress app with metro running
  • Double check that you have the keyboard turned on in the simulator
  • With the device on Portrait, go to pages and create a new one
  • Tap on the first Paragraph block
  • Expect to see the layout template picker
  • Rotate the simulator to landscape
  • Expect to see the buttons
  • Hide the keyboard with the toolbar button
  • Expect to see the layout picker to be visible
  • Tap on the paragraph block
  • Expect to see the layout picker

Note: While on portrait the only time the picker should be hidden is when there is content in the editor. E.g the first Paragraph block with some text.

Types of changes

Improvement

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

@geriux geriux added the Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change) label Apr 7, 2020
@geriux geriux marked this pull request as ready for review April 7, 2020 15:05
@@ -8,7 +8,7 @@ import { useDispatch, useSelect } from '@wordpress/data';
* External dependencies
*/
import { logUserEvent, userEvents } from 'react-native-gutenberg-bridge';
import { Animated } from 'react-native';
import { Animated, Dimensions, Keyboard } from 'react-native';
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note: Didn't use useWindowDimensions because there's a bug that will be fixed for 0.62

@geriux geriux requested a review from chipsnyder April 7, 2020 15:12
@github-actions
Copy link

github-actions bot commented Apr 7, 2020

Size Change: -240 B (0%)

Total Size: 889 kB

Filename Size Change
build/block-editor/index.js 102 kB -54 B (0%)
build/block-library/index.js 110 kB +2 B (0%)
build/block-library/style-rtl.css 7.42 kB -115 B (1%)
build/block-library/style.css 7.43 kB -118 B (1%)
build/components/index.js 195 kB -15 B (0%)
build/editor/editor-styles-rtl.css 428 B +29 B (6%) 🔍
build/editor/editor-styles.css 431 B +31 B (7%) 🔍
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.02 kB 0 B
build/annotations/index.js 3.4 kB 0 B
build/api-fetch/index.js 3.79 kB 0 B
build/autop/index.js 2.58 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 6.03 kB 0 B
build/block-directory/style-rtl.css 760 B 0 B
build/block-directory/style.css 760 B 0 B
build/block-editor/style-rtl.css 10.2 kB 0 B
build/block-editor/style.css 10.2 kB 0 B
build/block-library/editor-rtl.css 7.22 kB 0 B
build/block-library/editor.css 7.22 kB 0 B
build/block-library/theme-rtl.css 669 B 0 B
build/block-library/theme.css 671 B 0 B
build/block-serialization-default-parser/index.js 1.65 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 57.5 kB 0 B
build/components/style-rtl.css 16.6 kB 0 B
build/components/style.css 16.5 kB 0 B
build/compose/index.js 6.21 kB 0 B
build/core-data/index.js 10.7 kB 0 B
build/data-controls/index.js 1.04 kB 0 B
build/data/index.js 8.23 kB 0 B
build/date/index.js 5.36 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 569 B 0 B
build/dom/index.js 3.05 kB 0 B
build/edit-navigation/index.js 2.75 kB 0 B
build/edit-navigation/style-rtl.css 279 B 0 B
build/edit-navigation/style.css 280 B 0 B
build/edit-post/index.js 92.9 kB 0 B
build/edit-post/style-rtl.css 12.3 kB 0 B
build/edit-post/style.css 12.3 kB 0 B
build/edit-site/index.js 10.1 kB 0 B
build/edit-site/style-rtl.css 5.02 kB 0 B
build/edit-site/style.css 5.02 kB 0 B
build/edit-widgets/index.js 7.17 kB 0 B
build/edit-widgets/style-rtl.css 3.74 kB 0 B
build/edit-widgets/style.css 3.73 kB 0 B
build/editor/index.js 42.8 kB 0 B
build/editor/style-rtl.css 3.49 kB 0 B
build/editor/style.css 3.49 kB 0 B
build/element/index.js 4.44 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 6.95 kB 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/hooks/index.js 1.93 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.57 kB 0 B
build/is-shallow-equal/index.js 710 B 0 B
build/keyboard-shortcuts/index.js 2.3 kB 0 B
build/keycodes/index.js 1.7 kB 0 B
build/list-reusable-blocks/index.js 2.99 kB 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/media-utils/index.js 4.84 kB 0 B
build/notices/index.js 1.57 kB 0 B
build/nux/index.js 3.01 kB 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/plugins/index.js 2.54 kB 0 B
build/primitives/index.js 1.5 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/rich-text/index.js 14.5 kB 0 B
build/server-side-render/index.js 2.54 kB 0 B
build/shortcode/index.js 1.69 kB 0 B
build/token-list/index.js 1.28 kB 0 B
build/url/index.js 4.01 kB 0 B
build/viewport/index.js 1.6 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

@chipsnyder
Copy link
Contributor

chipsnyder commented Apr 7, 2020

Checked on a few simulators and it looks good there.

  • iPhone 6 (Simulator)
  • iPhone 11 Pro Max (Simulator)
  • iPad (Simulator)
  • Pixel 2 (Emulator)
  • Pixel 3a (Physical Device)

I also tested on an iPhone 11 (Physical Device). When testing on my physical device I noticed a bit of a flash of the toolbar on the rotate it's really quick. It's hard to see in a Gif so I uploaded a video you can see the flash at 0:05 and again at 0:09
PR_21463_Rotate.MP4.zip


I also noticed a few things in portrait mode. I know this issue is focusing on landscape mode but wanted to get your thoughts.

On an iPhone 5s (Simulator) and iPhone SE (Simulator), the controls still cover the editor a little bit. However, this might be acceptable to not completely disable the feature for users.

iPhone 5s iPhone SE

Although the overlap is a bit more pronounced on smaller Android devices like this Nexus One

What are your thoughts on these @geriux?

@geriux
Copy link
Member Author

geriux commented Apr 8, 2020

Hey @chipsnyder ! Thank you for testing and reviewing!

I also tested on an iPhone 11 (Physical Device). When testing on my physical device I noticed a bit of a flash of the toolbar on the rotate it's really quick. It's hard to see in a Gif so I uploaded a video you can see the flash at 0:05 and again at 0:09

Nice catch! I did some changes so it would fade out instead of flash like in the video, here's how is looking now:

Simulator:

AnimationFadout

Real device:

FadeOutTest.MP4.zip

Note that we are testing in DEV mode. When this ships, all performance improvements and animations optimizations will be turned on so it will run even smoother.

I also noticed a few things in portrait mode. I know this issue is focusing on landscape mode but wanted to get your thoughts.

On an iPhone 5s (Simulator) and iPhone SE (Simulator), the controls still cover the editor a little bit. However, this might be acceptable to not completely disable the feature for users.

For these cases the issue is different because there is more room to scroll so I think we are ok:

AndroidScroll

Still, if you think it doesn't look right we can talk about it and find an improvement for it 😃

Copy link
Contributor

@chipsnyder chipsnyder left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did some changes so it would fade out instead of flash like in the video, here's how is looking now:

This animation looks a lot better now! 🎉

Note that we are testing in DEV mode. When this ships, all performance improvements and animations optimizations will be turned on so it will run even smoother.

That's a great point I wasn't thinking about that.
TIL Common sources of performance problems. Running in development mode (dev=true)

For these cases the issue is different because there is more room to scroll so I think we are ok:

That's another good point!

LGTM!

@geriux geriux merged commit 521f2c2 into master Apr 8, 2020
@geriux geriux deleted the rnmobile/layout-picker-keyboard branch April 8, 2020 13:51
@github-actions github-actions bot added this to the Gutenberg 7.9 milestone Apr 8, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants