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

Speed up hover timing for inserter #23043

Closed
wants to merge 1 commit into from

Conversation

MichaelArestad
Copy link
Contributor

Inspired by conversation in #22813 and in response to #22801, I sped up the timing and dramatically reduced the delay of the hover animation on the inserter.

I'm going for a delay just long enough to allow you to move your cursor over several blocks without flashing the inserter, but fast enough where the inserter is still discoverable.

I am noticing a bug that I don't think is related to this PR and would appreciate someone else confirming it. When hovering around the inserter, sometimes it flashes extremely quickly. I think this has to do with the location of the mouse being misinterpreted by the inserter JS or something as if I mouse just right, the inserter appears in the wrong spot. Gif below:

2020-06-09 15 41 13

How has this been tested?

I tested this on FF (latest) on MacOS (latest).

Screenshots

Screenshots just don't do this justice and gifs are a bit stuttery. It's probably better to test yourself to get a feel for it.

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.

@MichaelArestad MichaelArestad added [Type] Enhancement A suggestion for improvement. [Feature] Inserter The main way to insert blocks using the + button in the editing interface labels Jun 9, 2020
@MichaelArestad MichaelArestad self-assigned this Jun 9, 2020
@github-actions
Copy link

github-actions bot commented Jun 9, 2020

Size Change: +4 B (0%)

Total Size: 1.13 MB

Filename Size Change
build/block-editor/style-rtl.css 11.8 kB +2 B (0%)
build/block-editor/style.css 11.8 kB +2 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.62 kB 0 B
build/api-fetch/index.js 3.4 kB 0 B
build/autop/index.js 2.83 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 6.77 kB 0 B
build/block-directory/style-rtl.css 892 B 0 B
build/block-directory/style.css 892 B 0 B
build/block-editor/index.js 106 kB 0 B
build/block-library/editor-rtl.css 7.88 kB 0 B
build/block-library/editor.css 7.89 kB 0 B
build/block-library/index.js 127 kB 0 B
build/block-library/style-rtl.css 7.72 kB 0 B
build/block-library/style.css 7.72 kB 0 B
build/block-library/theme-rtl.css 684 B 0 B
build/block-library/theme.css 686 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 48.1 kB 0 B
build/components/index.js 195 kB 0 B
build/components/style-rtl.css 19.5 kB 0 B
build/components/style.css 19.5 kB 0 B
build/compose/index.js 9.31 kB 0 B
build/core-data/index.js 11.4 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/data/index.js 8.45 kB 0 B
build/date/index.js 5.47 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.17 kB 0 B
build/edit-navigation/index.js 8.25 kB 0 B
build/edit-navigation/style-rtl.css 918 B 0 B
build/edit-navigation/style.css 919 B 0 B
build/edit-post/index.js 303 kB 0 B
build/edit-post/style-rtl.css 5.6 kB 0 B
build/edit-post/style.css 5.6 kB 0 B
build/edit-site/index.js 15.5 kB 0 B
build/edit-site/style-rtl.css 2.96 kB 0 B
build/edit-site/style.css 2.96 kB 0 B
build/edit-widgets/index.js 9.34 kB 0 B
build/edit-widgets/style-rtl.css 2.4 kB 0 B
build/edit-widgets/style.css 2.4 kB 0 B
build/editor/editor-styles-rtl.css 425 B 0 B
build/editor/editor-styles.css 428 B 0 B
build/editor/index.js 44.8 kB 0 B
build/editor/style-rtl.css 4.26 kB 0 B
build/editor/style.css 4.27 kB 0 B
build/element/index.js 4.64 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.72 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 2.13 kB 0 B
build/html-entities/index.js 621 B 0 B
build/i18n/index.js 3.56 kB 0 B
build/is-shallow-equal/index.js 710 B 0 B
build/keyboard-shortcuts/index.js 2.52 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.12 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 5.3 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/index.js 3.41 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.56 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.85 kB 0 B
build/rich-text/index.js 14.8 kB 0 B
build/server-side-render/index.js 2.68 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.28 kB 0 B
build/url/index.js 4.06 kB 0 B
build/viewport/index.js 1.85 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

jasmussen pushed a commit that referenced this pull request Jun 10, 2020
Alternative to #23043, props @MichaelArestad.

This one is faster, but still delayed.
@jasmussen
Copy link
Contributor

Nice, thank you for the PR!

This is what I see before:

before

This is what I seee after:

after

Honestly this feels both a little flickery, and too fast. It doesn't seem to solve the problem that was initially the genesis of the delayed fade-in — overlap with resize handles such as those in the spacer or cover blocks.

In #23046 I tried an alternative that's still delayed, but much less so. It doesn't flicker, even if the fade isn't very smooth (not enough frames). I realize with the 0 until 80% fade that I'm "faking" a delay, but that's because actual delay property did not appear to work very well for this. I think it works a little better:

alternative

We could also try a different approach:

.block-editor-block-list__insertion-point-inserter,
.block-editor-block-list__block-popover-inserter {
	.block-editor-inserter__toggle.components-button {
		// Fade it in after a delay.
		animation: block-editor-inserter__toggle__fade-in-animation-delayed 0.4s ease;
		animation-fill-mode: forwards;
		@include reduce-motion("animation");
	}
}

@keyframes block-editor-inserter__toggle__fade-in-animation-delayed {
	0% {
		opacity: 0;
	}
	50% {
		opacity: 0;
	}
	100% {
		opacity: 1;
	}
}

That looks like this which seems an okay balance?

alternative 2

What do you think?

@MichaelArestad
Copy link
Contributor Author

@jasmussen It turns out the jank is likely caused by inserter jumping. I made an issue that really shows it well where I reduced the animation to almost zero.

@jasmussen
Copy link
Contributor

Thanks for creating that issue. In the mean time, should we go with the slightly weird syntax that at least works around that issue?

jasmussen added a commit that referenced this pull request Jun 12, 2020
Alternative to #23043, props @MichaelArestad.

This one is faster, but still delayed.

Co-authored-by: Joen Asmussen <asmussen@gmail.com>
@jasmussen
Copy link
Contributor

Can this one be closed now that #23046 is merged?

@MichaelArestad
Copy link
Contributor Author

@jasmussen Yep. Closing. Will create a new one if that bug gets fixed.

@MichaelArestad MichaelArestad deleted the update/inserter-hover-speed branch June 16, 2020 18:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Inserter The main way to insert blocks using the + button in the editing interface [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants