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

[Mobile] Highlight color fixes #57650

Merged
merged 31 commits into from
Mar 21, 2024
Merged

Conversation

geriux
Copy link
Member

@geriux geriux commented Jan 8, 2024

Fixes #38246
Fixes #41462
Fixes #42714
Fixes #41510
Fixes #38420
Fixes #38084
Fixes #38082
Fixes #41131
Fixes #56712

Related PRs:

What?

This PR fixes several issues related to the "Highlight text" feature for both iOS and Android.

Why?

When this was initially implemented, part of the logic was being handled in the JavasScript side which made it work but with different issues related to missing implementation in the Aztec library.

How?

Now all of the formatting logic will be handled by Aztec as other text formatting styles, more detailed information will be in each Aztec PR but as an overview, it adds a more robust implementation to handle previous issues like auto-corrected words, applying the Highlight formatting between words, among other issues listed above.

Changes included in this PR:

Text Color formatting style

Removes code that manually added the mark tag in different scenarios due to missing functionality in the Aztec library. This improves this formatting style as it will be handled as other styling formats like Bold, Italic.

It adds two new methods in the AztecView module to be able to toggle the "Mark" formatting separately from the other formatting styles. This was needed because this formatting style needs to be able to pass the color value as a param. To prevent a major refactor, these new methods were added.

Other changes

  • Added new E2E utils
    • typeKeyString: To be able to send keys so Aztec detects it and adds the format (as it would with a Keyboard).
    • toggleHighlightColor: Allows setting a Color from the Color Palette.

Testing Instructions

Important

Use the following test builds:

I'll link to each issue to follow the reproduction instructions for simplicity since there are so many.


Test Case 1 - Color of highlighted text is not preserved when setting text color in the text block


Test Case 2 - Color of highlighted text is not preserved when setting text color in the text block


Test Case 3 - Color selection is not preserved when cursor is placed in the middle of text


Test Case 4 - Highlight color is still applied when typing after resetting color


Test Case 5 - Auto-inserted periods do not match selected text color until typing is continued


Test Case 6 - Undo applying a color breaks the undo history


Test Case 7 - After selecting a color the text input loses focus


Test Case 8 - Placeholder hides when selecting a text color


Test Case 9 - Content is marked as modified after selecting text


Screenshots or screencast

Test Case 1 - Color of highlighted text is not preserved when setting text color in the text block
iOS Android
TestCase_1-iOS.MP4
TestCase_1-Android.mp4

Test Case 2 - Color of highlighted text is not preserved when setting text color in the text block
iOS Android
TestCase_2-iOS.MP4
TestCase_2-Android.mp4

Test Case 3 - Color selection is not preserved when cursor is placed in the middle of text
iOS Android
TestCase_3-iOS.MP4
TestCase_3-Android.mp4

Test Case 4 - Highlight color is still applied when typing after resetting color
iOS Android
TestCase_4-iOS.MP4
TestCase_4-Android.mp4

Test Case 5 - Auto-inserted periods do not match selected text color until typing is continued
iOS Android
TestCase_5-iOS.MP4
TestCase_5-Android.mp4

Test Case 6 - Undo applying a color breaks the undo history
iOS Android
TestCase_6-Android.MP4
TestCase_6-Android.mp4

Test Case 7 - After selecting a color the text input loses focus
iOS Android
TestCase_7-iOS.MP4
TestCase_7-Android.mp4

Test Case 8 - Placeholder hides when selecting a text color
iOS Android
TestCase_8-iOS.MP4
TestCase_8-Android.mp4

Test Case 9 - Content is marked as modified after selecting text

Note: On Android a way to see that there are no new updates is by checking the Undo/Redo buttons.

iOS Android
TestCase_9-iOS.MP4
TestCase_9-Android.mp4

@geriux geriux added [Type] Bug An existing feature does not function as intended Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change) labels Jan 8, 2024
Copy link

github-actions bot commented Jan 8, 2024

Size Change: +805 B (0%)

Total Size: 1.71 MB

Filename Size Change
build/block-editor/index.min.js 253 kB +161 B (0%)
build/block-library/blocks/file/editor-rtl.css 326 B +10 B (+3%)
build/block-library/blocks/file/editor.css 327 B +11 B (+3%)
build/block-library/editor-rtl.css 12.4 kB +8 B (0%)
build/block-library/editor.css 12.4 kB +8 B (0%)
build/block-library/index.min.js 218 kB +43 B (0%)
build/blocks/index.min.js 51.8 kB +18 B (0%)
build/components/index.min.js 224 kB +17 B (0%)
build/core-data/index.min.js 72.9 kB +161 B (0%)
build/customize-widgets/index.min.js 11.2 kB +22 B (0%)
build/data/index.min.js 8.98 kB +40 B (0%)
build/edit-post/index.min.js 24 kB -143 B (-1%)
build/edit-site/index.min.js 218 kB +286 B (0%)
build/edit-site/style-rtl.css 15 kB +3 B (0%)
build/edit-site/style.css 15 kB +4 B (0%)
build/edit-widgets/index.min.js 17.3 kB +24 B (0%)
build/editor/index.min.js 64.1 kB +115 B (0%)
build/format-library/index.min.js 8.1 kB +73 B (+1%)
build/style-engine/index.min.js 2.03 kB -68 B (-3%)
build/widgets/index.min.js 7.22 kB +12 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 955 B
build/annotations/index.min.js 2.69 kB
build/api-fetch/index.min.js 2.32 kB
build/autop/index.min.js 2.1 kB
build/blob/index.min.js 578 B
build/block-directory/index.min.js 7.26 kB
build/block-directory/style-rtl.css 1.03 kB
build/block-directory/style.css 1.03 kB
build/block-editor/content-rtl.css 4.43 kB
build/block-editor/content.css 4.43 kB
build/block-editor/default-editor-styles-rtl.css 394 B
build/block-editor/default-editor-styles.css 394 B
build/block-editor/style-rtl.css 15.6 kB
build/block-editor/style.css 15.6 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 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 122 B
build/block-library/blocks/audio/style.css 122 B
build/block-library/blocks/audio/theme-rtl.css 126 B
build/block-library/blocks/audio/theme.css 126 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/block/editor-rtl.css 305 B
build/block-library/blocks/block/editor.css 305 B
build/block-library/blocks/button/editor-rtl.css 415 B
build/block-library/blocks/button/editor.css 414 B
build/block-library/blocks/button/style-rtl.css 627 B
build/block-library/blocks/button/style.css 626 B
build/block-library/blocks/buttons/editor-rtl.css 337 B
build/block-library/blocks/buttons/editor.css 337 B
build/block-library/blocks/buttons/style-rtl.css 332 B
build/block-library/blocks/buttons/style.css 332 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 113 B
build/block-library/blocks/categories/editor.css 112 B
build/block-library/blocks/categories/style-rtl.css 124 B
build/block-library/blocks/categories/style.css 124 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 421 B
build/block-library/blocks/columns/style.css 421 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comment-template/style-rtl.css 199 B
build/block-library/blocks/comment-template/style.css 198 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 840 B
build/block-library/blocks/comments/editor.css 839 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 636 B
build/block-library/blocks/cover/editor-rtl.css 647 B
build/block-library/blocks/cover/editor.css 650 B
build/block-library/blocks/cover/style-rtl.css 1.69 kB
build/block-library/blocks/cover/style.css 1.68 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 98 B
build/block-library/blocks/details/style.css 98 B
build/block-library/blocks/embed/editor-rtl.css 322 B
build/block-library/blocks/embed/editor.css 322 B
build/block-library/blocks/embed/style-rtl.css 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 126 B
build/block-library/blocks/embed/theme.css 126 B
build/block-library/blocks/file/style-rtl.css 280 B
build/block-library/blocks/file/style.css 281 B
build/block-library/blocks/file/view.min.js 324 B
build/block-library/blocks/footnotes/style-rtl.css 201 B
build/block-library/blocks/footnotes/style.css 199 B
build/block-library/blocks/form-input/editor-rtl.css 227 B
build/block-library/blocks/form-input/editor.css 227 B
build/block-library/blocks/form-input/style-rtl.css 343 B
build/block-library/blocks/form-input/style.css 343 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 340 B
build/block-library/blocks/form-submission-notification/editor.css 340 B
build/block-library/blocks/form-submit-button/style-rtl.css 69 B
build/block-library/blocks/form-submit-button/style.css 69 B
build/block-library/blocks/form/view.min.js 471 B
build/block-library/blocks/freeform/editor-rtl.css 2.61 kB
build/block-library/blocks/freeform/editor.css 2.61 kB
build/block-library/blocks/gallery/editor-rtl.css 947 B
build/block-library/blocks/gallery/editor.css 952 B
build/block-library/blocks/gallery/style-rtl.css 1.72 kB
build/block-library/blocks/gallery/style.css 1.72 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 647 B
build/block-library/blocks/group/editor.css 647 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 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 189 B
build/block-library/blocks/heading/style.css 189 B
build/block-library/blocks/html/editor-rtl.css 336 B
build/block-library/blocks/html/editor.css 337 B
build/block-library/blocks/image/editor-rtl.css 878 B
build/block-library/blocks/image/editor.css 878 B
build/block-library/blocks/image/style-rtl.css 1.6 kB
build/block-library/blocks/image/style.css 1.59 kB
build/block-library/blocks/image/theme-rtl.css 126 B
build/block-library/blocks/image/theme.css 126 B
build/block-library/blocks/image/view.min.js 1.54 kB
build/block-library/blocks/latest-comments/style-rtl.css 357 B
build/block-library/blocks/latest-comments/style.css 357 B
build/block-library/blocks/latest-posts/editor-rtl.css 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 478 B
build/block-library/blocks/latest-posts/style.css 478 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 B
build/block-library/blocks/media-text/editor-rtl.css 306 B
build/block-library/blocks/media-text/editor.css 305 B
build/block-library/blocks/media-text/style-rtl.css 505 B
build/block-library/blocks/media-text/style.css 503 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 668 B
build/block-library/blocks/navigation-link/editor.css 669 B
build/block-library/blocks/navigation-link/style-rtl.css 259 B
build/block-library/blocks/navigation-link/style.css 257 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 296 B
build/block-library/blocks/navigation-submenu/editor.css 295 B
build/block-library/blocks/navigation/editor-rtl.css 2.26 kB
build/block-library/blocks/navigation/editor.css 2.26 kB
build/block-library/blocks/navigation/style-rtl.css 2.26 kB
build/block-library/blocks/navigation/style.css 2.25 kB
build/block-library/blocks/navigation/view.min.js 1.02 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 377 B
build/block-library/blocks/page-list/editor.css 377 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 235 B
build/block-library/blocks/paragraph/editor.css 235 B
build/block-library/blocks/paragraph/style-rtl.css 335 B
build/block-library/blocks/paragraph/style.css 335 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 508 B
build/block-library/blocks/post-comments-form/style.css 508 B
build/block-library/blocks/post-content/editor-rtl.css 74 B
build/block-library/blocks/post-content/editor.css 74 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 666 B
build/block-library/blocks/post-featured-image/editor.css 662 B
build/block-library/blocks/post-featured-image/style-rtl.css 342 B
build/block-library/blocks/post-featured-image/style.css 342 B
build/block-library/blocks/post-navigation-link/style-rtl.css 215 B
build/block-library/blocks/post-navigation-link/style.css 214 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 409 B
build/block-library/blocks/post-template/style.css 408 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 69 B
build/block-library/blocks/post-time-to-read/style.css 69 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 B
build/block-library/blocks/pullquote/editor-rtl.css 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 354 B
build/block-library/blocks/pullquote/style.css 354 B
build/block-library/blocks/pullquote/theme-rtl.css 168 B
build/block-library/blocks/pullquote/theme.css 168 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 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 288 B
build/block-library/blocks/query-pagination/style.css 284 B
build/block-library/blocks/query-title/style-rtl.css 63 B
build/block-library/blocks/query-title/style.css 63 B
build/block-library/blocks/query/editor-rtl.css 486 B
build/block-library/blocks/query/editor.css 486 B
build/block-library/blocks/query/view.min.js 958 B
build/block-library/blocks/quote/style-rtl.css 237 B
build/block-library/blocks/quote/style.css 237 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 140 B
build/block-library/blocks/read-more/style.css 140 B
build/block-library/blocks/rss/editor-rtl.css 149 B
build/block-library/blocks/rss/editor.css 149 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 184 B
build/block-library/blocks/search/editor.css 184 B
build/block-library/blocks/search/style-rtl.css 629 B
build/block-library/blocks/search/style.css 628 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/search/view.min.js 478 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 229 B
build/block-library/blocks/separator/style.css 229 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 323 B
build/block-library/blocks/shortcode/editor.css 323 B
build/block-library/blocks/site-logo/editor-rtl.css 754 B
build/block-library/blocks/site-logo/editor.css 754 B
build/block-library/blocks/site-logo/style-rtl.css 204 B
build/block-library/blocks/site-logo/style.css 204 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 116 B
build/block-library/blocks/site-title/editor.css 116 B
build/block-library/blocks/site-title/style-rtl.css 57 B
build/block-library/blocks/site-title/style.css 57 B
build/block-library/blocks/social-link/editor-rtl.css 184 B
build/block-library/blocks/social-link/editor.css 184 B
build/block-library/blocks/social-links/editor-rtl.css 682 B
build/block-library/blocks/social-links/editor.css 681 B
build/block-library/blocks/social-links/style-rtl.css 1.48 kB
build/block-library/blocks/social-links/style.css 1.48 kB
build/block-library/blocks/spacer/editor-rtl.css 350 B
build/block-library/blocks/spacer/editor.css 350 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 395 B
build/block-library/blocks/table/editor.css 395 B
build/block-library/blocks/table/style-rtl.css 639 B
build/block-library/blocks/table/style.css 639 B
build/block-library/blocks/table/theme-rtl.css 146 B
build/block-library/blocks/table/theme.css 146 B
build/block-library/blocks/tag-cloud/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 403 B
build/block-library/blocks/template-part/editor.css 403 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/style-rtl.css 111 B
build/block-library/blocks/term-description/style.css 111 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 99 B
build/block-library/blocks/verse/style.css 99 B
build/block-library/blocks/video/editor-rtl.css 552 B
build/block-library/blocks/video/editor.css 555 B
build/block-library/blocks/video/style-rtl.css 185 B
build/block-library/blocks/video/style.css 185 B
build/block-library/blocks/video/theme-rtl.css 126 B
build/block-library/blocks/video/theme.css 126 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.11 kB
build/block-library/common.css 1.11 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/style-rtl.css 14.8 kB
build/block-library/style.css 14.8 kB
build/block-library/theme-rtl.css 688 B
build/block-library/theme.css 693 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/commands/index.min.js 15.6 kB
build/commands/style-rtl.css 935 B
build/commands/style.css 930 B
build/components/style-rtl.css 11.8 kB
build/components/style.css 11.9 kB
build/compose/index.min.js 12.6 kB
build/core-commands/index.min.js 2.77 kB
build/customize-widgets/style-rtl.css 1.36 kB
build/customize-widgets/style.css 1.36 kB
build/data-controls/index.min.js 640 B
build/date/index.min.js 17.9 kB
build/deprecated/index.min.js 451 B
build/dom-ready/index.min.js 324 B
build/dom/index.min.js 4.65 kB
build/edit-post/classic-rtl.css 558 B
build/edit-post/classic.css 558 B
build/edit-post/style-rtl.css 5.58 kB
build/edit-post/style.css 5.57 kB
build/edit-widgets/style-rtl.css 4.17 kB
build/edit-widgets/style.css 4.16 kB
build/editor/style-rtl.css 5.36 kB
build/editor/style.css 5.35 kB
build/element/index.min.js 4.83 kB
build/escape-html/index.min.js 537 B
build/format-library/style-rtl.css 492 B
build/format-library/style.css 490 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 448 B
build/i18n/index.min.js 3.58 kB
build/interactivity/file.min.js 447 B
build/interactivity/image.min.js 1.67 kB
build/interactivity/index.min.js 13 kB
build/interactivity/navigation.min.js 1.15 kB
build/interactivity/query.min.js 740 B
build/interactivity/router.min.js 1.36 kB
build/interactivity/search.min.js 618 B
build/is-shallow-equal/index.min.js 527 B
build/keyboard-shortcuts/index.min.js 1.74 kB
build/keycodes/index.min.js 1.46 kB
build/list-reusable-blocks/index.min.js 2.11 kB
build/list-reusable-blocks/style-rtl.css 851 B
build/list-reusable-blocks/style.css 849 B
build/media-utils/index.min.js 2.92 kB
build/modules/importmap-polyfill.min.js 12.2 kB
build/notices/index.min.js 948 B
build/nux/index.min.js 2 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 742 B
build/patterns/index.min.js 5.73 kB
build/patterns/style-rtl.css 553 B
build/patterns/style.css 552 B
build/plugins/index.min.js 1.8 kB
build/preferences-persistence/index.min.js 2.05 kB
build/preferences/index.min.js 2.81 kB
build/preferences/style-rtl.css 710 B
build/preferences/style.css 712 B
build/primitives/index.min.js 975 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 1 kB
build/react-i18n/index.min.js 623 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 6.78 kB
build/redux-routine/index.min.js 2.7 kB
build/reusable-blocks/index.min.js 2.73 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.5 kB
build/router/index.min.js 1.79 kB
build/server-side-render/index.min.js 1.96 kB
build/shortcode/index.min.js 1.39 kB
build/token-list/index.min.js 582 B
build/url/index.min.js 3.72 kB
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 41.7 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 957 B
build/warning/index.min.js 249 B
build/widgets/style-rtl.css 1.17 kB
build/widgets/style.css 1.17 kB
build/wordcount/index.min.js 1.02 kB

compressed-size-action

@geriux geriux changed the title [Mobile] Highlight color fixes for iOS [Mobile] Highlight color fixes Jan 19, 2024
Copy link

github-actions bot commented Jan 19, 2024

Flaky tests detected in d8c6e5a.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/7617767681
📝 Reported issues:

@geriux geriux marked this pull request as ready for review January 23, 2024 14:19
@geriux geriux requested a review from ellatrix as a code owner January 23, 2024 14:19
Copy link
Member

@dcalhoun dcalhoun left a comment

Choose a reason for hiding this comment

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

Great work, @geriux! It is so exciting to see progress to deliver these valuable features.

I reviewed this PR and all of the sibling PRs. While the iOS and Android Aztec changes look sound to me from a high level, I recommend requesting additional review from more experienced iOS and Android developers as well. I am happy to provide PR approvals if/whenever you need them.

I plan to begin testing the prototype builds, but wanted to share a few questions to start. I'll report my test findings later. Thanks!

@dcalhoun
Copy link
Member

I tested using an iPhone SE running iOS 17.3 and a Samsung Galaxy S20 running Android 13.

Test Case 1 & 4

I noticed that I was able to reproduce test cases 1 & 4 on Android. I was not able to on iOS. The actions and outcomes seem to be related between both of these test cases, as they both involve a cursor that is at the end (but outside) of a highlight mark. The toolbar button is correctly disabled, but newly typed text is still unexpectedly highlighted. Adding a space before typing results in the text not being highlighted, which I believe is the expected outcome.

Android: Cursor at end of highlight
android-test-case-1-and-4-moving-caret-text-color.mp4

Undo Redo

I noted I can still, at times, find myself in a state where the undo history is unexpectedly empty. I haven't identified specific steps and they be unrelated to the proposed changes, but I wanted to share these findings nonetheless. I was unable to reproduce lost undo history specifically relating to color on iOS.

Android: Undo History
android-test-case-6-undo-redo.mp4

Auto-correct

I found that there are a few scenarios where auto-correct can apply/remove highlights that may be unexpected. They can also differ from the web experience (which produces some odd outcomes of its own). Android also experiences some of these auto-correct scenarios, but, at times, with different outcomes from iOS. I consider these to be edge cases that we may not need to address, but I wanted to share them nonetheless.

iOS: Auto-correct 1
ios-test-case-3-auto-correct.MP4
iOS: Auto-correct 2
ios-test-case-3-middle-of-text.MP4
Web: Auto-correct
Screen.Recording.2024-01-29.at.14.38.55.mov

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.

WOW this PR will fix so many issues, congrats @geriux for the hard work on solving them 🏅 .

I've reviewed the code and in general looks good to me, I added some suggestions but nothing that would block this PR. However, I share the same questions David posted in his review.

I'll proceed with testing on both platforms and share the results before approving the PR.

packages/react-native-aztec/src/AztecView.js Show resolved Hide resolved
packages/react-native-aztec/src/AztecView.js Show resolved Hide resolved
packages/react-native-editor/ios/Podfile Outdated Show resolved Hide resolved
@fluiddot
Copy link
Contributor

fluiddot commented Feb 9, 2024

@geriux I've tested the installable builds and noticed that some issues persist on Android (see video capture). I'd like to note that I managed to reproduce them when using the Samsung keyboard and Microsoft Swiftkey. But they don't happen when using Gboard.

Issues:

  • Highlighted color is lost when removing text (this can be seen at 00:19).
  • Highlighted color is lost in some characters when removing the next paragraph (this can be seen at 01:03).
android-highlight-text-issues.mp4

Copy link

github-actions bot commented Feb 9, 2024

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: geriux <geriux@git.wordpress.org>
Co-authored-by: dcalhoun <dpcalhoun@git.wordpress.org>
Co-authored-by: fluiddot <carlosgprim@git.wordpress.org>
Co-authored-by: antonis <antonisme@git.wordpress.org>
Co-authored-by: mchowning <mattchowning@git.wordpress.org>
Co-authored-by: SiobhyB <siobhyb@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

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 completed the testing and, as shared here, I noticed some issues on Android. Some of them were already reported by David. However, on iOS everything seems to work fine 🎊.

Testing Results:

  • 🟡 Test Case 1 - Color of highlighted text is not preserved when setting text color in the text block
    • Still reproducible on Android. Reproducible with Microsoft Swiftkey and Samsung Keyboard, not with Gboard.
  • ✅ Test Case 2 - Color of highlighted text is not preserved when setting text color in the text block
  • ✅ Test Case 3 - Color selection is not preserved when cursor is placed in the middle of text
  • ✅ Test Case 4 - Highlight color is still applied when typing after resetting color
  • ✅ Test Case 5 - Auto-inserted periods do not match selected text color until typing is continued
  • 🟡 Test Case 6 - Undo applying a color breaks the undo history
    • Still reproducible on Android.
  • ✅ Test Case 7 - After selecting a color the text input loses focus
  • ❌ Test Case 8 - Placeholder hides when selecting a text color (Android only)
  • ✅ Test Case 9 - Content is marked as modified after selecting text

Let me know if I can help anyhow with addressing them.

NOTE: I haven't reviewed the Azect PRs yet (I only performed an overview), I'm planning to do so next week although I'm not very familiar with the code base.

# Conflicts:
#	packages/react-native-editor/ios/GutenbergDemo.xcodeproj/project.pbxproj
#	packages/react-native-editor/ios/Podfile.lock
@geriux geriux force-pushed the fix/ios-highlight-text-functionality branch from cccfa9c to 93b6ea6 Compare March 7, 2024 10:30
@geriux
Copy link
Member Author

geriux commented Mar 7, 2024

Hey there @dcalhoun and @fluiddot first of all thank you so much for taking the time to review and test these changes. It took me a while to get back to address your feedback but it is now ready for another round of tests if you have some availability.

I noticed that I was able to reproduce test cases 1 & 4 on Android. I was not able to on iOS. The actions and outcomes seem to be related between both of these test cases, as they both involve a cursor that is at the end (but outside) of a highlight mark. The toolbar button is correctly disabled, but newly typed text is still unexpectedly highlighted. Adding a space before typing results in the text not being highlighted, which I believe is the expected outcome.

This issue should now be fixed in the latest WordPress build. 🚀

I noted I can still, at times, find myself in a state where the undo history is unexpectedly empty. I haven't identified specific steps and they be unrelated to the proposed changes, but I wanted to share these findings nonetheless. I was unable to reproduce lost undo history specifically relating to color on iOS.

Yeah, I think there's some work to do there with the undo/redo in general. At least now it doesn't completely break it when using it 😅 but something to work on in the future for sure.

Auto-correct

Yeah I've seen some of those cases which I believe it'd be the same with the other formatting styles, where it picks up the previously active style when merging the auto-corrected words.

🟡 Test Case 1 - Color of highlighted text is not preserved when setting text color in the text block
Still reproducible on Android. Reproducible with Microsoft Swiftkey and Samsung Keyboard, not with Gboard.

This should be fixed ass well.

@geriux I've tested the installable builds and noticed that some issues persist on Android (see video capture). I'd like to note that I managed to reproduce them when using the Samsung keyboard and Microsoft Swiftkey. But they don't happen when using Gboard.

This should also be fixed in the latest Android build, I've tested it with the Samsung Keyboard.

❌ Test Case 8 - Placeholder hides when selecting a text color (Android only)

Could you please share a video of this failed test? I'm able to see the text's placeholder when enabling the Highlight color formatting:

AndroidPlaceholder.mp4

Copy link
Member

@dcalhoun dcalhoun left a comment

Choose a reason for hiding this comment

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

The latest changes look good and tested well for me. Happy to provide an approval if needed. Let me know!

Ideally we could receive review of the Aztec changes from iOS and Android developers as well, but I suppose we could always have that done post-merge.

@geriux
Copy link
Member Author

geriux commented Mar 8, 2024

The latest changes look good and tested well for me. Happy to provide an approval if needed. Let me know!

🎉 yay! Thanks for testing it again! Yeah, if you can I'd appreciate an approval so we have the check for the Gutenberg side.

Ideally we could receive review of the Aztec changes from iOS and Android developers as well, but I suppose we could always have that done post-merge.

I was waiting to these if the latest changes worked as expected to look for iOS and Android developers to check the native code. I will wait for those approvals before merging so I can link to the Aztec tag releases once those PRs are merged.

@fluiddot
Copy link
Contributor

Hey @geriux 👋 , thanks for addressing the feedback 🙇 ! I went through all test cases with the latest changes and confirmed all issues I shared here are now solved 🎊 .

  • 🟡 Test Case 1 - Color of highlighted text is not preserved when setting text color in the text block
    Still reproducible on Android. Reproducible with Microsoft Swiftkey and Samsung Keyboard, not with Gboard.

✅ Solved.

  • 🟡 Test Case 6 - Undo applying a color breaks the undo history
    Still reproducible on Android.

✅ I couldn't reproduce this specific issue but the undo/redo functionality doesn't behave properly in some cases.

  • ❌ Test Case 8 - Placeholder hides when selecting a text color (Android only)

Could you please share a video of this failed test? I'm able to see the text's placeholder when enabling the Highlight color formatting [...]

✅ I can't reproduce it again. I tried different themes, in case it was related to that, but still, it worked as expected. Let's mark this as solved.


However, while testing Android and changing themes, I spotted a new exception. Here are the steps to reproduce it:

❌ Exception on Android when changing theme (Twenty Twenty-Four to Seedlet)

  1. Enable Twenty Twenty-Four theme.
  2. Create a post.
  3. Add a Paragraph block.
  4. Type some text.
  5. Select a word.
  6. Tap the text color button (i.e. the A button in the block toolbar).
  7. Select the color located at position 5 (#A4A4A4).
  8. Save the post.
  9. Enable Seedlet.
  10. Open the same post.
  11. Observe the exception.

Tested on Samsung Galaxy S20 FE 5G (Android 13) - Build pr19988-927303c.

NOTE: On iOS, the exception is not thrown, and previously set highlight colors are removed.

# Conflicts:
#	packages/react-native-editor/CHANGELOG.md
#	packages/react-native-editor/ios/Podfile.lock
@geriux
Copy link
Member Author

geriux commented Mar 18, 2024

❌ Exception on Android when changing theme (Twenty Twenty-Four to Seedlet)

Nice catch @fluiddot ! I've addressed this issue in 8bf9e20 where an undefined value was being set. Now the color will be shown in both platforms as it will have the hex color value in the HTML, but it won't be highlighted in the color palette unless you switch back to that theme. I have confirmed it is working now in the latest build pr19988-18fa74b. Thank you!

@fluiddot
Copy link
Contributor

Nice catch @fluiddot ! I've addressed this issue in 8bf9e20 where an undefined value was being set. Now the color will be shown in both platforms as it will have the hex color value in the HTML, but it won't be highlighted in the color palette unless you switch back to that theme. I have confirmed it is working now in the latest build pr19988-18fa74b. Thank you!

Great, thanks @geriux ! I've just tested the build from wordpress-mobile/WordPress-Android#19988 (comment) and confirmed the issue is no longer happening 🎊 . With this, I'll proceed to approve the PR.

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.

LGTM 🎊 ! I confirmed that all issues I shared in previous reviews are solved 🎊 (reference 1, reference 2).

@antonis antonis self-requested a review March 20, 2024 09:16
Copy link
Member

@antonis antonis left a comment

Choose a reason for hiding this comment

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

Awesome work @geriux 🏅
I reviewed the changes related to wordpress-mobile/AztecEditor-Android#1073 and LGTM 🎉

@geriux geriux merged commit 660553f into trunk Mar 21, 2024
57 checks passed
@geriux geriux deleted the fix/ios-highlight-text-functionality branch March 21, 2024 15:30
@github-actions github-actions bot added this to the Gutenberg 18.1 milestone Mar 21, 2024
carstingaxion pushed a commit to carstingaxion/gutenberg that referenced this pull request Mar 27, 2024
* Fix resetting the color

* Temp: Update Aztec reference

* Temp: Update Aztec reference

* RichText remove mark as activeFormats

* TextColor use getActiveColors from the native variant

* TextColor - Refactor manual logic to apply the Mark formatting and now it is handled by the native code

* AztecView, don't call toggleMark when activeFormats changes

* Add iOS native methods to set the mark formatting and to remove it

* Update Aztec ref

* Add text-color formatting in activeFormats

* Handle onMarkFormatting on the Android side as well

* Removes highlight text test when there's no selection since this is managed by the native Aztec library

* Update Aztec ref

* Update Aztec ref

* Fix onMarkFormatting logic

* Update Aztec version

* Palette screen - Add accessibility label

* E2E Helpers - Adds typeKeyString and toggleHighlightColor

* Update Aztec ref

* Bring back calling toggleMark when activeFormats is set for the Mark for matting when there are no selected characters. This is important to remove the format when it shouldn't be active

* Update Changelog

* Update Podfile

* Update Podfile.lock

* getFormatColors - Fix appending undefined values

* Update Aztec version

* Update Aztec to 1.19.11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment