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

Animate: Add types and simplify API #26965

Closed
wants to merge 11 commits into from
Closed

Animate: Add types and simplify API #26965

wants to merge 11 commits into from

Conversation

sirreal
Copy link
Member

@sirreal sirreal commented Nov 13, 2020

Description

  • Add types to Animate component.
  • Simplify Animate component API.

useAnimate accepts an options object which is a string type + some options based on the type.
Animate component accepted type property (the same) an options object (the other options) and a children render function property.

The options prop doesn't correspond to useAnimate options (it doesn't include the type) and there seems to be no benefit to wrapping the options in an object. Animate can pass its props (excluding children) to useAnimate.

// Before
<Animate type="appear" options={ { origin: "top" } }>{ () => <div /> }</Animate>
// After
<Animate type="appear" origin="top">{ () => <div /> }</Animate>

Options are still accepted although deprecated and scheduled for removal in 9.6.

Supersedes #26176

I've replaced the usage in Gutenberg that I found (just one case).
I've also updated the Animate storybook. It now uses knobs to adjust the options on the fly.

How has this been tested?

Types pass.
Storybook examples work as expected.

Screenshots

story

When using options prop, you'll see this deprecation warning (it says 9.4 but I've changed it to 9.6):

Screen Shot 2020-11-13 at 23 49 58

Types of changes

New feature: Add types to the Animate component.

This change deprecates the Animate options prop and schedules it to be removed in two releases: 9.6. It will be a breaking change when this is removed.

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.

Comment on lines 72 to 80
if ( Boolean( _deprecatedOptions ) ) {
deprecated( '<Animate> options prop', {
version: '9.3',
hint: 'Pass options directly as props instead.',
} );
}
Copy link
Member Author

Choose a reason for hiding this comment

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

It's something that needs more updates, documentation need to be aligned:
https://github.com/WordPress/gutenberg/tree/master/packages/components/src/animate

In general, I agree with the sentiment but in practice it might start printing those depreciations in the JS console if its usage isn't updated in Gutenberg. So I would be very careful changing the public API. It also needs to be announced as Dev Note when a new version of WordPress is released so plugins could update.

-@gziolo in #26176 (comment)

Copy link
Member Author

Choose a reason for hiding this comment

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

Thanks, @gziolo. What's required for a dev note?

@sirreal sirreal mentioned this pull request Nov 13, 2020
6 tasks
@sirreal sirreal self-assigned this Nov 13, 2020
@sirreal sirreal added [Package] Components /packages/components [Status] In Progress Tracking issues with work in progress [Type] Code Quality Issues or PRs that relate to code quality labels Nov 13, 2020
// Ignore due to missing types: https://github.com/WordPress/gutenberg/pull/26429
// @ts-ignore
import deprecated from '@wordpress/deprecated';
Copy link
Member Author

Choose a reason for hiding this comment

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

@sirreal sirreal added the Needs Dev Note Requires a developer note for a major WordPress release cycle label Nov 13, 2020
@sirreal
Copy link
Member Author

sirreal commented Nov 13, 2020

I've been testing storybook and there's a regression I'll fix…

@github-actions
Copy link

github-actions bot commented Nov 13, 2020

Size Change: +93 B (0%)

Total Size: 1.19 MB

Filename Size Change
build/components/index.js 171 kB +93 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.77 kB 0 B
build/api-fetch/index.js 3.42 kB 0 B
build/autop/index.js 2.84 kB 0 B
build/blob/index.js 664 B 0 B
build/block-directory/index.js 8.71 kB 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/index.js 133 kB 0 B
build/block-editor/style-rtl.css 11.3 kB 0 B
build/block-editor/style.css 11.2 kB 0 B
build/block-library/editor-rtl.css 8.91 kB 0 B
build/block-library/editor.css 8.91 kB 0 B
build/block-library/index.js 147 kB 0 B
build/block-library/style-rtl.css 8.1 kB 0 B
build/block-library/style.css 8.1 kB 0 B
build/block-library/theme-rtl.css 792 B 0 B
build/block-library/theme.css 793 B 0 B
build/block-serialization-default-parser/index.js 1.87 kB 0 B
build/block-serialization-spec-parser/index.js 3.06 kB 0 B
build/blocks/index.js 48 kB 0 B
build/components/style-rtl.css 15.3 kB 0 B
build/components/style.css 15.3 kB 0 B
build/compose/index.js 9.9 kB 0 B
build/core-data/index.js 14.8 kB 0 B
build/data-controls/index.js 821 B 0 B
build/data/index.js 8.74 kB 0 B
build/date/index.js 11.2 kB 0 B
build/deprecated/index.js 768 B 0 B
build/dom-ready/index.js 571 B 0 B
build/dom/index.js 4.92 kB 0 B
build/edit-navigation/index.js 11.1 kB 0 B
build/edit-navigation/style-rtl.css 881 B 0 B
build/edit-navigation/style.css 885 B 0 B
build/edit-post/index.js 306 kB 0 B
build/edit-post/style-rtl.css 6.43 kB 0 B
build/edit-post/style.css 6.42 kB 0 B
build/edit-site/index.js 23.2 kB 0 B
build/edit-site/style-rtl.css 3.98 kB 0 B
build/edit-site/style.css 3.98 kB 0 B
build/edit-widgets/index.js 26.3 kB 0 B
build/edit-widgets/style-rtl.css 3.16 kB 0 B
build/edit-widgets/style.css 3.16 kB 0 B
build/editor/editor-styles-rtl.css 476 B 0 B
build/editor/editor-styles.css 478 B 0 B
build/editor/index.js 42.5 kB 0 B
build/editor/style-rtl.css 3.85 kB 0 B
build/editor/style.css 3.85 kB 0 B
build/element/index.js 4.62 kB 0 B
build/escape-html/index.js 735 B 0 B
build/format-library/index.js 6.86 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 2.16 kB 0 B
build/html-entities/index.js 623 B 0 B
build/i18n/index.js 3.57 kB 0 B
build/is-shallow-equal/index.js 698 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.1 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.js 5.32 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/index.js 3.4 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.43 kB 0 B
build/priority-queue/index.js 790 B 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/reusable-blocks/index.js 3.05 kB 0 B
build/rich-text/index.js 13.3 kB 0 B
build/server-side-render/index.js 2.77 kB 0 B
build/shortcode/index.js 1.69 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 4.05 kB 0 B
build/viewport/index.js 1.84 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.22 kB 0 B

compressed-size-action

@sirreal sirreal marked this pull request as ready for review November 13, 2020 22:43
@sirreal sirreal removed the [Status] In Progress Tracking issues with work in progress label Nov 13, 2020
@ellatrix
Copy link
Member

I created a hook in #26201 with the intention of deprecating the Animate component. Using Animate makes code unnecessarily complex. I don't think we should bother aligning it with the hook and just immediately deprecate it.

@ellatrix
Copy link
Member

Oh, and stabilise the animate hook of course. The reason I didn't do it in the other PR is that it wasn't clear to me what package it should be in. There's no hooks in the components package yet, and usually we add new hook to compose. I think this hook is strongly tied to components though, so I think it could make sense to export this hook in the components package. Cc @youknowriad, maybe you have an opinion on this?

@youknowriad
Copy link
Contributor

no strong opinions but the hook definitely look better in "components" because it has styles.

sirreal added a commit that referenced this pull request Nov 19, 2020
@sirreal
Copy link
Member Author

sirreal commented Nov 20, 2020

I'm working on the proposed alternative in #27123

@sirreal sirreal mentioned this pull request Nov 20, 2020
6 tasks
sirreal added a commit that referenced this pull request Nov 25, 2020
sirreal added a commit that referenced this pull request Nov 26, 2020
sirreal added a commit that referenced this pull request Nov 30, 2020
@sirreal sirreal deleted the try/typing-animate branch December 29, 2020 09:03
@youknowriad youknowriad removed the Needs Dev Note Requires a developer note for a major WordPress release cycle label Jun 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Package] Components /packages/components [Type] Code Quality Issues or PRs that relate to code quality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants