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] - Starter Page Templates - Picker and Preview design updates #20959

Merged
merged 4 commits into from
Mar 27, 2020

Conversation

geriux
Copy link
Member

@geriux geriux commented Mar 17, 2020

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

Description

This PR addresses some design feedback for the Starter Page Templates Picker and Preview Modal:

  • [iOS] Dark Mode: border-bottom on the navigation bar is a bit too strong. We can probably dim it down a bit?
  • [iOS] Dark Mode: I wonder if we should apply a dark gray bg on the Navigation Bar to match the native one.
  • Can we apply a 300ms fadeOut to the inline picker buttons when they disappear?

It also solves this transparency issue.

Screenshots

FadeOut Animation iOS FadeOut Animation iOS Dark Mode
FadeOut Animation Android Preview Modal Dark Mode iOS
Buttons transparency fix iOS Buttons transparency fix Android

How has this been tested?

Test 1

  • Open the app with metro running
  • Start a new page
  • Expect The templates picker to be visible
    • Select a template
    • Expect the preview modal to be shown with the template
      • On iOS switch to dark mode and expect to see the new styles from this PR
    • Tap on Apply
    • Expect the modal to be dismissed and the picker to fade out.

Test 2 [iOS]

  • Open the app with metro running
  • Start a new page
  • Expect The templates picker to be visible
  • Change the orientation to landscape
  • Focus on the paragraph block
  • Expect the buttons to have a solid background instead of having transparency.

Types of changes

Design improvements

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.

@github-actions
Copy link

github-actions bot commented Mar 17, 2020

Size Change: 0 B

Total Size: 856 kB

ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 998 B 0 B
build/annotations/index.js 3.44 kB 0 B
build/api-fetch/index.js 3.39 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.02 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/index.js 101 kB 0 B
build/block-editor/style-rtl.css 10.9 kB 0 B
build/block-editor/style.css 10.9 kB 0 B
build/block-library/editor-rtl.css 7.22 kB 0 B
build/block-library/editor.css 7.23 kB 0 B
build/block-library/index.js 110 kB 0 B
build/block-library/style-rtl.css 7.43 kB 0 B
build/block-library/style.css 7.44 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/index.js 190 kB 0 B
build/components/style-rtl.css 15.8 kB 0 B
build/components/style.css 15.7 kB 0 B
build/compose/index.js 6.21 kB 0 B
build/core-data/index.js 10.6 kB 0 B
build/data-controls/index.js 1.04 kB 0 B
build/data/index.js 8.25 kB 0 B
build/date/index.js 5.37 kB 0 B
build/deprecated/index.js 771 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 3.06 kB 0 B
build/edit-post/index.js 91.2 kB 0 B
build/edit-post/style-rtl.css 8.43 kB 0 B
build/edit-post/style.css 8.43 kB 0 B
build/edit-site/index.js 6.73 kB 0 B
build/edit-site/style-rtl.css 2.91 kB 0 B
build/edit-site/style.css 2.9 kB 0 B
build/edit-widgets/index.js 4.43 kB 0 B
build/edit-widgets/style-rtl.css 2.57 kB 0 B
build/edit-widgets/style.css 2.57 kB 0 B
build/editor/editor-styles-rtl.css 428 B 0 B
build/editor/editor-styles.css 431 B 0 B
build/editor/index.js 42.8 kB 0 B
build/editor/style-rtl.css 3.38 kB 0 B
build/editor/style.css 3.38 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.49 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.69 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 781 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.55 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 4.01 kB 0 B
build/viewport/index.js 1.61 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.18 kB 0 B

compressed-size-action

@geriux geriux force-pushed the rnmobile/spt-design-improvements branch from f31e4b0 to abdeae5 Compare March 17, 2020 14:54
@@ -143,8 +144,10 @@ class Layout extends Component {
parentHeight={ this.state.rootViewHeight }
style={ toolbarKeyboardAvoidingViewStyle }
>
{ showPageTemplatePicker && (
<__experimentalPageTemplatePicker />
{ isPage && (
Copy link
Member Author

Choose a reason for hiding this comment

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

Before, the component was being unmounted after the user has at least one block. To be able to have a fade-out animation, the component can't be unmounted. So now the picker will be rendered if its a page only (since we don't want to import everything for a standard post)

Within the component, it will handle if it should be rendered or not by passing showPageTemplatePicker as a prop.

@@ -6,12 +6,21 @@
padding: 0 12px;
}

.button {
background-color: rgba($black, 0.04);
.buttonWrapper {
Copy link
Member Author

Choose a reason for hiding this comment

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

This wrapper will solve the issue with the transparency of the buttons

@geriux geriux changed the title [WIP] [RNMobile] - Starter Page Templates - Picker and Preview design updates [RNMobile] - Starter Page Templates - Picker and Preview design updates Mar 17, 2020
@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 Mar 17, 2020
@geriux geriux marked this pull request as ready for review March 17, 2020 15:32
@geriux geriux requested review from koke and mkevins and removed request for youknowriad and ellatrix March 17, 2020 15:33
@koke
Copy link
Contributor

koke commented Mar 18, 2020

Looking at the animations, it feels odd that the buttons are still there when the preview is dismissed. I think the most useful case for the animation is when you don't want to use a template, and they disappear when you stop writing. When this happens, there's a ~500ms delay between the text showing on screen and the fade out animation starting.

Screen Recording 2020-03-18 at 12 54 21

Edit: I just saw the delay was intentional, but still not sure why it's there

@geriux
Copy link
Member Author

geriux commented Mar 18, 2020

Looking at the animations, it feels odd that the buttons are still there when the preview is dismissed. I think the most useful case for the animation is when you don't want to use a template, and they disappear when you stop writing. When this happens, there's a ~500ms delay between the text showing on screen and the fade out animation starting.

To be honest I thought that was what we got requested from @iamthomasbishop but let's double check 😄

Thomas in what case you'd like to see the fade out animation? It is true that feels odd to see the buttons after the modal is dismissed (due the delay I added to make this happen). If it's just when a user is typing I'll remove the delay so it starts animating right away =)

@iamthomasbishop
Copy link

Looking at the animations, it feels odd that the buttons are still there when the preview is dismissed

Ahh that does look odd when the modal transitions out. I was mainly referring to when you start adding content (text or use the inserter). The 500ms delay looks nice in that case.

In terms of the logic relevant to the modal:

  • When opening the modal, the buttons fade out (no delay)
  • When you tap Apply, the buttons should fade out (no delay)
  • If you tap Close, they could fade back in (after delay)

@koke
Copy link
Contributor

koke commented Mar 19, 2020

When opening the modal, the buttons fade out (no delay)

I imagine this will be barely visible, as the modal animation seems faster than the fade out.

When you tap Apply, the buttons should fade out (no delay)

If we fade them out when presenting the modal, then you can't fade them out when closing it 😁

const { getEditorMode } = select( 'core/edit-post' );

return {
isPage: getCurrentPostType(),
Copy link
Contributor

Choose a reason for hiding this comment

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

I think this should be getCurrentPostType() === 'page'.

I think I'd still encapsulate that logic in the HOC, maybe splitting the PageTemplatePickerVisible HOC/hook into two: "available" (is a page) and "visible" (has no content).

@koke
Copy link
Contributor

koke commented Mar 19, 2020

Other than the comment I left, the code looks fine. I'm waiting to clarify what the animation should be before final testing

@iamthomasbishop
Copy link

I imagine this will be barely visible, as the modal animation seems faster than the fade out.

True 👍

If we fade them out when presenting the modal, then you can't fade them out when closing it 😁

Definitely, I just wanted to confirm what should happen in each case because in the original examples they were re-appearing momentarily 😄

Is there an updated test build somewhere that I can try out?

@mkevins
Copy link
Contributor

mkevins commented Mar 23, 2020

I have tested this on Android via WordPress-Android:develop on a Pixel 3a and Test 1 is working as expected. I also tested landscape orientation, and things behaved similarly. Let me know if I should test again (if we are still iterating on delay / fade UX). Nice work!

@geriux
Copy link
Member Author

geriux commented Mar 23, 2020

Is there an updated test build somewhere that I can try out?

Hey @iamthomasbishop 👋 I've just made one with some changes, let me know how the animation looks. Thanks!!

WordPress-iOS PR -> wordpress-mobile/WordPress-iOS#13702 (comment)

@iamthomasbishop
Copy link

Hey @iamthomasbishop 👋 I've just made one with some changes, let me know how the animation looks. Thanks!!

Animations look smooth! 👍

Copy link
Contributor

@koke koke left a comment

Choose a reason for hiding this comment

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

This looks good to go. I left a comment about a possible performance improvement, but I don't think that's a blocker


return isEmptyContent && isPage;
return isEmptyContent && isTemplatePickerAvailable;
Copy link
Contributor

Choose a reason for hiding this comment

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

I'm not sure if I'm overthinking this, but I imagine the majority of times this runs it will return false. I'd suggest refactoring a bit to return early and avoid any extra calculations:

if ( ! isTemplatePickerAvailable ) {
    return false;
}
//...
if ( isEmptyBlockList ) {
   return false;
}
// ...

It'd be interesting to check if this impacts performance at all, or I'm just worried about nothing 😅

Copy link
Member Author

Choose a reason for hiding this comment

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

I'm always down for performance improvements 🙌, I'll definitely check it out, thanks for the review koke!

@geriux geriux merged commit 832ec82 into master Mar 27, 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.

4 participants