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] Update Inserter Block Search Styling #33237

Merged
merged 21 commits into from
Jul 16, 2021

Conversation

jhnstn
Copy link
Contributor

@jhnstn jhnstn commented Jul 6, 2021

Description

This updates the inserter block search styling to handle variances between iOS and Android. It also introduces a no results view.

How has this been tested?

  1. Load the demo app in both IOS and Android
  2. Open the Inserter
  3. Verify that the styling looks correct in light and dark mode
  4. Press on the search input
  5. Verify that the styling for active search looks correct.
  6. Try entering any text.
  7. Verify that the cancel input options look correct and clear out the text input when pressed
  8. Enter more text and press on the cancel search options.
  9. Verify that the bottom sheet is closed without inserting a block
  10. Open the Inserter and enter arbitrary text that does not match to a block e.g. asdf
  11. Verify that the "No block found" message is displayed.
  12. Press backspace on the inputed text
  13. Verify that possible query results are rendered in the inserter e.g. removing characters from asdf until only as remains.

Screenshots

Open Inserter

Android iOS
Screenshot_20210708-155752 IMG_0402
Screenshot_20210708-155916 IMG_0407

Start Search

Android iOS
Screenshot_20210708-162619 IMG_0403
Screenshot_20210708-165018 IMG_0405

No results

Android iOS
Screenshot_20210708-162641 IMG_0404
Screenshot_20210708-162532 IMG_0406

Types of changes

This adds new mobile platform specific style sheets and a new native component to show the no results view.

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • I've tested my changes with keyboard and screen readers.
  • 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 (please manually search all *.native.js files for terms that need renaming or removal).

@github-actions
Copy link

github-actions bot commented Jul 6, 2021

Size Change: -5 B (0%)

Total Size: 1.07 MB

Filename Size Change
build/components/index.min.js 196 kB -5 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 1.11 kB
build/admin-manifest/index.min.js 1.41 kB
build/annotations/index.min.js 2.93 kB
build/api-fetch/index.min.js 2.44 kB
build/autop/index.min.js 2.28 kB
build/blob/index.min.js 673 B
build/block-directory/index.min.js 6.62 kB
build/block-directory/style-rtl.css 1.02 kB
build/block-directory/style.css 1.02 kB
build/block-editor/index.min.js 126 kB
build/block-editor/style-rtl.css 14 kB
build/block-editor/style.css 14 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 58 B
build/block-library/blocks/audio/editor.css 58 B
build/block-library/blocks/audio/style-rtl.css 112 B
build/block-library/blocks/audio/style.css 112 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 475 B
build/block-library/blocks/button/editor.css 474 B
build/block-library/blocks/button/style-rtl.css 603 B
build/block-library/blocks/button/style.css 602 B
build/block-library/blocks/buttons/editor-rtl.css 315 B
build/block-library/blocks/buttons/editor.css 315 B
build/block-library/blocks/buttons/style-rtl.css 375 B
build/block-library/blocks/buttons/style.css 375 B
build/block-library/blocks/calendar/style-rtl.css 208 B
build/block-library/blocks/calendar/style.css 208 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 90 B
build/block-library/blocks/code/style.css 90 B
build/block-library/blocks/code/theme-rtl.css 131 B
build/block-library/blocks/code/theme.css 131 B
build/block-library/blocks/columns/editor-rtl.css 190 B
build/block-library/blocks/columns/editor.css 190 B
build/block-library/blocks/columns/style-rtl.css 475 B
build/block-library/blocks/columns/style.css 476 B
build/block-library/blocks/cover/editor-rtl.css 670 B
build/block-library/blocks/cover/editor.css 670 B
build/block-library/blocks/cover/style-rtl.css 1.22 kB
build/block-library/blocks/cover/style.css 1.23 kB
build/block-library/blocks/embed/editor-rtl.css 486 B
build/block-library/blocks/embed/editor.css 486 B
build/block-library/blocks/embed/style-rtl.css 401 B
build/block-library/blocks/embed/style.css 400 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 B
build/block-library/blocks/file/editor-rtl.css 301 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 780 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 704 B
build/block-library/blocks/gallery/editor.css 705 B
build/block-library/blocks/gallery/style-rtl.css 1.06 kB
build/block-library/blocks/gallery/style.css 1.06 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 160 B
build/block-library/blocks/group/editor.css 160 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 93 B
build/block-library/blocks/group/theme.css 93 B
build/block-library/blocks/heading/editor-rtl.css 152 B
build/block-library/blocks/heading/editor.css 152 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/home-link/style-rtl.css 259 B
build/block-library/blocks/home-link/style.css 259 B
build/block-library/blocks/html/editor-rtl.css 281 B
build/block-library/blocks/html/editor.css 281 B
build/block-library/blocks/image/editor-rtl.css 729 B
build/block-library/blocks/image/editor.css 727 B
build/block-library/blocks/image/style-rtl.css 481 B
build/block-library/blocks/image/style.css 485 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 286 B
build/block-library/blocks/latest-comments/style.css 286 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B
build/block-library/blocks/latest-posts/editor.css 137 B
build/block-library/blocks/latest-posts/style-rtl.css 526 B
build/block-library/blocks/latest-posts/style.css 524 B
build/block-library/blocks/list/style-rtl.css 63 B
build/block-library/blocks/list/style.css 63 B
build/block-library/blocks/media-text/editor-rtl.css 263 B
build/block-library/blocks/media-text/editor.css 264 B
build/block-library/blocks/media-text/style-rtl.css 492 B
build/block-library/blocks/media-text/style.css 489 B
build/block-library/blocks/more/editor-rtl.css 434 B
build/block-library/blocks/more/editor.css 434 B
build/block-library/blocks/navigation-link/editor-rtl.css 474 B
build/block-library/blocks/navigation-link/editor.css 473 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation/editor-rtl.css 1.69 kB
build/block-library/blocks/navigation/editor.css 1.69 kB
build/block-library/blocks/navigation/style-rtl.css 1.65 kB
build/block-library/blocks/navigation/style.css 1.66 kB
build/block-library/blocks/navigation/view.min.js 2.87 kB
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 310 B
build/block-library/blocks/page-list/editor.css 311 B
build/block-library/blocks/page-list/style-rtl.css 240 B
build/block-library/blocks/page-list/style.css 240 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 247 B
build/block-library/blocks/paragraph/style.css 248 B
build/block-library/blocks/post-author/editor-rtl.css 209 B
build/block-library/blocks/post-author/editor.css 209 B
build/block-library/blocks/post-author/style-rtl.css 183 B
build/block-library/blocks/post-author/style.css 184 B
build/block-library/blocks/post-comments-form/style-rtl.css 140 B
build/block-library/blocks/post-comments-form/style.css 140 B
build/block-library/blocks/post-comments/style-rtl.css 360 B
build/block-library/blocks/post-comments/style.css 359 B
build/block-library/blocks/post-content/editor-rtl.css 139 B
build/block-library/blocks/post-content/editor.css 139 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 338 B
build/block-library/blocks/post-featured-image/editor.css 338 B
build/block-library/blocks/post-featured-image/style-rtl.css 141 B
build/block-library/blocks/post-featured-image/style.css 141 B
build/block-library/blocks/post-template/editor-rtl.css 100 B
build/block-library/blocks/post-template/editor.css 99 B
build/block-library/blocks/post-template/style-rtl.css 379 B
build/block-library/blocks/post-template/style.css 380 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 60 B
build/block-library/blocks/post-title/style.css 60 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 183 B
build/block-library/blocks/pullquote/editor.css 183 B
build/block-library/blocks/pullquote/style-rtl.css 318 B
build/block-library/blocks/pullquote/style.css 318 B
build/block-library/blocks/pullquote/theme-rtl.css 169 B
build/block-library/blocks/pullquote/theme.css 169 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 270 B
build/block-library/blocks/query-pagination/editor.css 262 B
build/block-library/blocks/query-pagination/style-rtl.css 168 B
build/block-library/blocks/query-pagination/style.css 168 B
build/block-library/blocks/query-title/editor-rtl.css 86 B
build/block-library/blocks/query-title/editor.css 86 B
build/block-library/blocks/query/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 169 B
build/block-library/blocks/quote/style.css 169 B
build/block-library/blocks/quote/theme-rtl.css 221 B
build/block-library/blocks/quote/theme.css 221 B
build/block-library/blocks/rss/editor-rtl.css 201 B
build/block-library/blocks/rss/editor.css 202 B
build/block-library/blocks/rss/style-rtl.css 290 B
build/block-library/blocks/rss/style.css 290 B
build/block-library/blocks/search/editor-rtl.css 211 B
build/block-library/blocks/search/editor.css 211 B
build/block-library/blocks/search/style-rtl.css 359 B
build/block-library/blocks/search/style.css 362 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/style-rtl.css 251 B
build/block-library/blocks/separator/style.css 251 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 B
build/block-library/blocks/shortcode/editor-rtl.css 476 B
build/block-library/blocks/shortcode/editor.css 476 B
build/block-library/blocks/site-logo/editor-rtl.css 465 B
build/block-library/blocks/site-logo/editor.css 465 B
build/block-library/blocks/site-logo/style-rtl.css 154 B
build/block-library/blocks/site-logo/style.css 154 B
build/block-library/blocks/site-tagline/editor-rtl.css 87 B
build/block-library/blocks/site-tagline/editor.css 87 B
build/block-library/blocks/site-title/editor-rtl.css 85 B
build/block-library/blocks/site-title/editor.css 85 B
build/block-library/blocks/social-link/editor-rtl.css 164 B
build/block-library/blocks/social-link/editor.css 165 B
build/block-library/blocks/social-links/editor-rtl.css 800 B
build/block-library/blocks/social-links/editor.css 799 B
build/block-library/blocks/social-links/style-rtl.css 1.34 kB
build/block-library/blocks/social-links/style.css 1.34 kB
build/block-library/blocks/spacer/editor-rtl.css 308 B
build/block-library/blocks/spacer/editor.css 308 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 478 B
build/block-library/blocks/table/editor.css 478 B
build/block-library/blocks/table/style-rtl.css 480 B
build/block-library/blocks/table/style.css 480 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 146 B
build/block-library/blocks/tag-cloud/style.css 146 B
build/block-library/blocks/template-part/editor-rtl.css 551 B
build/block-library/blocks/template-part/editor.css 550 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/term-description/editor-rtl.css 90 B
build/block-library/blocks/term-description/editor.css 90 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 569 B
build/block-library/blocks/video/editor.css 570 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 1.29 kB
build/block-library/common.css 1.29 kB
build/block-library/editor-rtl.css 9.81 kB
build/block-library/editor.css 9.81 kB
build/block-library/index.min.js 147 kB
build/block-library/reset-rtl.css 514 B
build/block-library/reset.css 515 B
build/block-library/style-rtl.css 10.3 kB
build/block-library/style.css 10.3 kB
build/block-library/theme-rtl.css 692 B
build/block-library/theme.css 693 B
build/block-serialization-default-parser/index.min.js 1.3 kB
build/block-serialization-spec-parser/index.min.js 3.06 kB
build/blocks/index.min.js 47.3 kB
build/components/style-rtl.css 16.1 kB
build/components/style.css 16.1 kB
build/compose/index.min.js 10.2 kB
build/core-data/index.min.js 12.4 kB
build/customize-widgets/index.min.js 10.3 kB
build/customize-widgets/style-rtl.css 1.48 kB
build/customize-widgets/style.css 1.48 kB
build/data-controls/index.min.js 827 B
build/data/index.min.js 7.22 kB
build/date/index.min.js 31.8 kB
build/deprecated/index.min.js 737 B
build/dom-ready/index.min.js 576 B
build/dom/index.min.js 4.78 kB
build/edit-navigation/index.min.js 13.9 kB
build/edit-navigation/style-rtl.css 3.12 kB
build/edit-navigation/style.css 3.12 kB
build/edit-post/classic-rtl.css 483 B
build/edit-post/classic.css 483 B
build/edit-post/index.min.js 59.5 kB
build/edit-post/style-rtl.css 7.25 kB
build/edit-post/style.css 7.24 kB
build/edit-site/index.min.js 26 kB
build/edit-site/style-rtl.css 5.04 kB
build/edit-site/style.css 5.03 kB
build/edit-widgets/index.min.js 16.2 kB
build/edit-widgets/style-rtl.css 3.88 kB
build/edit-widgets/style.css 3.89 kB
build/editor/index.min.js 38.7 kB
build/editor/style-rtl.css 3.88 kB
build/editor/style.css 3.88 kB
build/element/index.min.js 3.44 kB
build/escape-html/index.min.js 739 B
build/format-library/index.min.js 5.71 kB
build/format-library/style-rtl.css 668 B
build/format-library/style.css 669 B
build/hooks/index.min.js 1.76 kB
build/html-entities/index.min.js 628 B
build/i18n/index.min.js 3.73 kB
build/is-shallow-equal/index.min.js 710 B
build/keyboard-shortcuts/index.min.js 1.74 kB
build/keycodes/index.min.js 1.43 kB
build/list-reusable-blocks/index.min.js 2.07 kB
build/list-reusable-blocks/style-rtl.css 842 B
build/list-reusable-blocks/style.css 842 B
build/media-utils/index.min.js 3.08 kB
build/notices/index.min.js 1.07 kB
build/nux/index.min.js 2.31 kB
build/nux/style-rtl.css 745 B
build/nux/style.css 742 B
build/plugins/index.min.js 1.99 kB
build/primitives/index.min.js 1.06 kB
build/priority-queue/index.min.js 790 B
build/react-i18n/index.min.js 924 B
build/redux-routine/index.min.js 2.82 kB
build/reusable-blocks/index.min.js 2.56 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.8 kB
build/server-side-render/index.min.js 1.64 kB
build/shortcode/index.min.js 1.68 kB
build/token-list/index.min.js 847 B
build/url/index.min.js 1.95 kB
build/viewport/index.min.js 1.28 kB
build/warning/index.min.js 1.16 kB
build/widgets/index.min.js 6.48 kB
build/widgets/style-rtl.css 1.04 kB
build/widgets/style.css 1.05 kB
build/wordcount/index.min.js 1.24 kB

compressed-size-action

@jhnstn jhnstn force-pushed the update/mobile-inserter-block-search branch from e2a4a5e to 7af4228 Compare July 8, 2021 19:22
@jhnstn jhnstn marked this pull request as ready for review July 8, 2021 21:32
@jhnstn jhnstn requested review from AmandaRiu, guarani and fluiddot July 8, 2021 21:32
@AmandaRiu AmandaRiu self-assigned this Jul 8, 2021
return selectModifiedStyles( baseStyles, 'active-dark' );
}, [] );

useEffect( () => {
Copy link
Contributor Author

@jhnstn jhnstn Jul 9, 2021

Choose a reason for hiding this comment

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

The idea here is to use a hook to build the styles on demand given any state changes. It avoids having to weave conditionals in the components per state e.g. <someComponent style = { isActive ? activeStyle : style } /> . This approach can also be used to replace the usePreferredColorSchemeStyle which needs to be called on every individual set of style rules. Instead one single call can be made on the entire style object to generate the themed styles.

I'd like to extract this way of handling the styles out to a hook since it's a more declarative way to build the style object for the component. In the interest of time however, I opted to leave this idea scoped to this module.

The signature of the hook would looks something like

const currentStyles = useModifiedStyles(allStyles, 
  [ 
    {'modifierA' : [someState]} , 
    {'modifierB': [someState, someOtherState]}
  ]
)

@fluiddot
Copy link
Contributor

fluiddot commented Jul 9, 2021

I'm concerned about the potential side effects of not having the segmented control along with the search (this only happens in dev mode), I remember when I was working on the reusable block that I experienced some issues 🤔 .

Screenshot 2021-07-09 at 16 55 30

I have a fix for this issue in this PR but it's not approved yet, it would be useful to use it to test this PR as it will help to test in a similar environment as production.

@fluiddot
Copy link
Contributor

fluiddot commented Jul 9, 2021

👋 Thanks @jhnstn for updating the styles of the search form, now it looks awesome!

After testing the search functionality on both iOS and Android, I noticed a the following issue:

1. Search result list requires some padding at the bottom for the safe area [iOS][medium]

I noticed this in the search result list, however, it's not happening on the regular list.

Reproduced on iPhone 8 - simulator (iOS 14.2) | Medium impact

2. Search input field can be scrolled some pixels

Reproduced on Samsung Galaxy S20 FE 5G (Android 10) | Low impact

search-scroll-android.mp4

3. Some items disappear when searching

I reproduced this issue by using specific letters in the search, in the example below it's the letter i, but I think it could happen with others too. I don't mean that is related to the search term but probably to some layout animation that is triggered when filtering the items after searching 🤔 .

Reproduced on Samsung Galaxy S20 FE 5G (Android 10) | High impact

search-items-disappear-android.mp4

4. Debounce search

This is just more a recommendation but totally optional, I was wondering if we would benefit from using debounce when typing the search term, I guess the logic for searching is fast enough to maybe not require it, wdyt?

Copy link
Contributor

@fluiddot fluiddot left a comment

Choose a reason for hiding this comment

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

Here goes my first review pass on the code, I'd like to check deeper the logic for merging the styles in the search control so next week I'll try a second pass, amazing job @jhnstn 🎊 !

@jhnstn
Copy link
Contributor Author

jhnstn commented Jul 10, 2021

@fluiddot thanks for the awesome review!

I'd like to open up separate issues for the first 3 issues you found when testing (nice catches btw). The feature is still behind a dev flag and I feel this PR is already getting big. Thoughts?

On point 4. I thought about that when I started this project but the list of blocks is static and not very large. I figure if we need to fetch blocks over the wire or if the list of blocks gets really long it would be useful to buffer the input. For now it seems like an over optimization to do that. Open to have my mind changed on that however.

I cleaned up the CSS issues you noted.

Regarding the logic that sets up the styles, I went ahead and extracted that code to a stand alone hook. I figure it will be easier to grok the code since it's now generalized. Overall it's the same approach as in this PR , just abstracted out and (hopefully) simplified a bit.
The WIP PR is here: #33339
I branched off this branch but here is the important commit: 5004d70

I can cherry pick that commit into a fresh branch if we think it's worth adding as a stand alone hook. Merge that then update this branch.

Thanks again for your thoughtful review! 💯

@fluiddot
Copy link
Contributor

I'd like to open up separate issues for the first 3 issues you found when testing (nice catches btw). The feature is still behind a dev flag and I feel this PR is already getting big. Thoughts?

Make sense, let's address them in new PRs 👍 .

On point 4. I thought about that when I started this project but the list of blocks is static and not very large. I figure if we need to fetch blocks over the wire or if the list of blocks gets really long it would be useful to buffer the input. For now it seems like an over optimization to do that. Open to have my mind changed on that however.

I thought the same, I was just wondering if we could benefit from it but I agree that it's an over-optimization as calculating the search result should be quite fast.

I cleaned up the CSS issues you noted.

💯

Regarding the logic that sets up the styles, I went ahead and extracted that code to a stand alone hook. I figure it will be easier to grok the code since it's now generalized. Overall it's the same approach as in this PR , just abstracted out and (hopefully) simplified a bit.
The WIP PR is here: #33339
I branched off this branch but here is the important commit: 5004d70

I can cherry pick that commit into a fresh branch if we think it's worth adding as a stand alone hook. Merge that then update this branch.

To be honest, I don't think it's necessary if we plan to update this part after merging the stand-alone hook you mentioned.

@guarani
Copy link
Contributor

guarani commented Jul 14, 2021

Sorry for the delays getting around to this, @jhnstn! I've tested this today and here are some comments.

Android testing

Tested on Android emulator Nexus 6 API 29.

Placeholder disappears when cancelling active search

On Android, after typing text into the search field and then tapping the arrow button, the keyboard is closed (as expected) but the placeholder "Search Blocks" doesn't get shown in the empty search field. Subsequently tapping on the search field doesn't bring up the keyboard and I can't continue searching until I close the bottom sheet.

placeholder-issue-android.mov

The search field bounces up and is slow to come back down

After opening the block inserter, I tap the search field to start filtering blocks and notice the animation slides the search field up momentarily before bringing it back down on-screen and the animation seems slow. This was seen on an emulator and also on a device. That said this seems low priority.

over-bounce.mov

Space between the bottom sheet drag handle and search field too tight

This is subjective and might be more a design question rather than an implementation question, but my first impression is that this spacing is too tight:

Screen Shot 2021-07-13 at 19 19 17

Placeholder case

The current placeholder text "Search Blocks" stands out to me because I would have expected it to be sentence case: "Search blocks"

Search field doesn't respond to changes in device font size

After changing the device font size to largest, the search field doesn't adapt its height to the larger placeholder font size (text is cut-off). Tested on Samsung S10 physical device with Android 10, font size changed in device Settings app.

iOS testing

I tested on a physical iPhone 11 running iOS 14.5 and quick test on an iPad simulator and things worked great. I only saw the "Space between the bottom sheet drag handle and search field too tight" and the "Placeholder case" issues.


In my opinion, the only thing that seems high priority is the first issue mentioned on Android where the search becomes unusable after cancelling an active search using the left arrow button. Overall it's working great and I've been using the block inserter search a lot lately when using the editor in development.

@fluiddot
Copy link
Contributor

The search field bounces up and is slow to come back down
After opening the block inserter, I tap the search field to start filtering blocks and notice the animation slides the search field up momentarily before bringing it back down on-screen and the animation seems slow. This was seen on an emulator and also on a device. That said this seems low priority.

This behavior is on purpose because on Android, we don't get notified when the opening transition of the keyboard starts to calculate the final height of the bottom sheet. The workaround I applied for this issue was to make the transition you mentioned that happens when the keyboard transition finishes.

There're further details in the following issue: #31151

@jhnstn
Copy link
Contributor Author

jhnstn commented Jul 14, 2021

Thanks @guarani for the review!

Search field doesn't respond to changes in device font size

Fixed in 0ae5d0d ( also fixed the input scrolling issue @fluiddot found)

Placeholder disappears when cancelling active search

Fixed in cac6bf1 ( that was an odd one, see my inline notes on the commit )

I really don't have a strong opinion on the bottom sheet upper padding or the Sentence vs Title case for the placeholder. Both are valid points but I'll have to differ to @iamthomasbishop to decide if we should change those.

Copy link
Contributor

@fluiddot fluiddot left a comment

Choose a reason for hiding this comment

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

I've done another test on Android (on iOS everyting worked nice 🎊 ) and here are the results:

Placeholder disappears when cancelling active search

✅ Fixed

I tested on my Android device (Samsung Galaxy S20 FE 5G - Android 10) and I couldn't reproduce it.

The search field bounces up and is slow to come back down

🟡 Reproduced but it shouldn't block the PR

As I mentioned in this comment, this is a known issue that will be addressed in the future.

Space between the bottom sheet drag handle and search field too tight

❓ Wait for design feedback input

I also have the impression that this spacing is too tight. In fact, I think that's the only area of the bottom sheet where the user can swipe down to close it so maybe we should preserve the padding we had previously. In any case, I don't think this issue should block the PR.

Placeholder case

🟡 Reproduced but it shouldn't block the PR

I also expected the placeholder text to be Search block instead of Search Blocks. I saw that this change was introduced when updating this branch with trunk (commit reference), what's the purpose of changing this string?

Search field doesn't respond to changes in device font size

✅ Fixed

✅ I verified that the issue I mentioned in a previous comment ("Search input field can be scrolled some pixels") was also fixed.

I tested with the biggest font size on my Android device (Samsung Galaxy S20 FE 5G - Android 10) and the cut-off is addressed.


Apart from the tests, I added a comment in the code with a suggestion, it's just a minor change so feel free to skip it.

From my side the PR LGTM 🎊 but it would be nice to have the approval from @guarani too, thanks 🙇 !

@jhnstn
Copy link
Contributor Author

jhnstn commented Jul 15, 2021

I also expected the placeholder text to be Search block instead of Search Blocks
Thank @fluiddot for finding that commit. Not sure why that change came in on the merge. Also thanks @guarani for originally pointing it out. I went back to the comps and the placeholder is in sentence case.
I had remembered incorrectly.

I also went ahead and changed the case for the other labels and hints in the component.

Copy link
Contributor

@guarani guarani left a comment

Choose a reason for hiding this comment

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

I re-tested Android and iOS and don't see any of the issues I noted earlier in #33237 (comment), except those that @fluiddot noted here (which I understand are not meant to be addressed here).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants