-
Notifications
You must be signed in to change notification settings - Fork 231
fix(icon-button): upgrade to mdc-web v1.1 #792
fix(icon-button): upgrade to mdc-web v1.1 #792
Conversation
Codecov Report
@@ Coverage Diff @@
## feat/mdcweb-typescript-update #792 +/- ##
==============================================================
Coverage 94.09% 94.09%
==============================================================
Files 73 73
Lines 2981 2981
Branches 459 459
==============================================================
Hits 2805 2805
Misses 64 64
Partials 112 112
Continue to review full report at Codecov.
|
return { | ||
addClass: (className: string) => | ||
this.setState({classList: this.state.classList.add(className)}), | ||
removeClass: (className: string) => { | ||
const classList = new Set(this.state.classList); | ||
const {classList} = this.state; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change is done because hasClass
would otherwise return a false positive if it were called after this. This led to the isOn
property in the event argument for notifyChange
always being true.
This pattern seems to be used throughout this library and it is a little worrying as it goes against the first two points that react advises about for using state correctly: https://reactjs.org/docs/state-and-lifecycle.html#using-state-correctly
However, from what I can tell, it needs to work this way in order for hasClass
to behave correctly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gotcha - ya it I realize that setState is async, and that it can become out of sync with hasClass. It does seem wrong that we are relying on changing state directly without calling setState. That is why we were calling new Set()
to create a new instance.
We could possibly make the call to props.handleChange
call async, by calling it in the componentDidUpdate. We could use a boolean indicating state.classList
is updating (let's call it state.classListIsUpdating
. When notifyChange
gets trigger, we could set another boolean state.hasChangeOccured
. (hopefully you're following). The componentDidUpdate statement would look like:
if (!state.classListIsUpdating && prevState.classListIsUpdating && state.hasChangeOccured) {
this.props.handleChange(...);
this.setState({hasChangeOccured: false}); // clean up to setup for the next notifyChange
}
Just a thought as a fix for this. It definitely doesn't belong in this PR, but maybe we can open another issue to fix this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And we should actually be consistent in the removeClass and addClass methods...
Created an issue #793
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@moog16 thanks for the feedback and creating a new issue for this.
}); | ||
|
||
test('#adapter.addClass adds a class to state.classList', () => { | ||
const wrapper = shallow<IconButton<HTMLButtonElement>>(<IconButton />); | ||
wrapper.instance().adapter.addClass('test-class'); | ||
wrapper.state().classList.has('test-class'); | ||
assert.isTrue(wrapper.state().classList.has('test-class')); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
wow - these tests were basically useless...that's for fixing these.
commit 14b22bc Author: Matt Goo <[email protected]> Date: Tue Apr 30 12:06:32 2019 -0700 feat(select): enhanced select (#823) commit b400013 Author: Matt Goo <[email protected]> Date: Mon Apr 29 14:49:32 2019 -0700 chore: reduce unused deps in package.json (#819) commit beedb23 Author: Matt Goo <[email protected]> Date: Mon Apr 29 13:43:20 2019 -0700 feat(select): add icon (#825) commit e22ac2a Author: Matt Goo <[email protected]> Date: Mon Apr 29 13:35:45 2019 -0700 feat(select): add helper text (#824) commit abaa146 Author: Matt Goo <[email protected]> Date: Mon Apr 29 13:35:16 2019 -0700 feat(select): add option component (#826) commit 7adc12a Author: Matt Goo <[email protected]> Date: Mon Apr 29 13:11:16 2019 -0700 fix(drawer): add missing foundation import in drawer (#821) commit 7e0f877 Author: Matt Goo <[email protected]> Date: Fri Apr 26 14:33:40 2019 -0700 feat(menu): add component (#786) commit 509e93e Author: Matt Goo <[email protected]> Date: Fri Apr 26 09:46:26 2019 -0700 chore(infrastructure): add esmoduleinterop to tsconfig (#818) commit 4dbc8b8 Author: Matt Goo <[email protected]> Date: Tue Apr 16 15:56:25 2019 -0700 feat(notched-outline): update to v1.1.1 (#806) commit ea15a2a Author: 태재영 <[email protected]> Date: Sat Apr 13 06:50:37 2019 +0900 fix(chips): Fix incorrect ripple effect (#804) commit 7b413df Author: Matt Goo <[email protected]> Date: Mon Apr 8 13:27:36 2019 -0700 feat(button): update mdc web deps to v1.1.0 (#791) commit 034158c Author: Matt Goo <[email protected]> Date: Tue Apr 2 17:36:46 2019 -0700 fix: remove .only (#794) commit 74379af Author: Matt Goo <[email protected]> Date: Tue Apr 2 16:24:45 2019 -0700 fix(list): maintain classes with state.listItemClassNames (#776) BREAKING CHANGE: Removes props.tabbableOnListItemFocus from all the auxiliary components, as it seemed confusing to have this and tabIndex dictate what tabIndex would ultimately be. commit e5b953f Author: Ben McKernan <[email protected]> Date: Tue Apr 2 20:18:03 2019 +0200 fix(icon-button): upgrade to mdc-web v1.1 (#792) commit 9c7bfa7 Author: Andrii Kostenko <[email protected]> Date: Mon Apr 1 23:08:27 2019 +0300 fix(card): upgrade to mdc-web v1.1 (#788) commit bb9e7e4 Author: Andrii Kostenko <[email protected]> Date: Mon Apr 1 20:44:28 2019 +0300 fix(top-app-bar): mdc-web v1 upgrade (#780) commit 37c7269 Author: Andrii Kostenko <[email protected]> Date: Mon Apr 1 20:00:39 2019 +0300 fix(linear-progress): upgrade mdc-web to v1 (#787) commit b6403e6 Author: Andrii Kostenko <[email protected]> Date: Mon Apr 1 19:38:31 2019 +0300 fix(fab): upgrade to mdc-web v1.1 (#790) commit bcda111 Author: Andrii Kostenko <[email protected]> Date: Fri Mar 29 21:11:19 2019 +0300 fix(dialog): mdc-web v1 upgrade (#779) commit 8ff8695 Author: Andrii Kostenko <[email protected]> Date: Thu Mar 28 22:32:55 2019 +0300 fix(typography): upgrade to mdc-web v1 (#778) commit 4d6bbc0 Author: Andrii Kostenko <[email protected]> Date: Thu Mar 28 22:15:22 2019 +0300 feat(radio): upgrade to typescript v1 (#777) commit 4f523e3 Author: Andrii Kostenko <[email protected]> Date: Thu Mar 28 22:13:29 2019 +0300 fix(checkbox): upgrade mdc-web to v1 (#769) commit 1a04f3d Author: Matt Goo <[email protected]> Date: Wed Mar 27 12:39:00 2019 -0700 feat(menu-surface): upgrade to mdc web v1 (#774) commit 44cca84 Author: Andrii Kostenko <[email protected]> Date: Wed Mar 27 01:14:18 2019 +0200 feat(switch): upgrade to mdc-web v1 (#757) commit 580c850 Author: Andrii Kostenko <[email protected]> Date: Wed Mar 27 01:13:37 2019 +0200 fix(tab-bar): upgrade mdc-web to v1 (#770) commit 45fef89 Author: Matt Goo <[email protected]> Date: Mon Mar 25 15:27:29 2019 -0700 fix(card): add react-ripple to package json (#773) commit 4e99b4c Author: Matt Goo <[email protected]> Date: Tue Mar 19 14:10:37 2019 -0700 feat(list): update to MDC Web 1.0.0 (#740) commit 38e9886 Author: Matt Goo <[email protected]> Date: Tue Mar 19 12:36:06 2019 -0700 feat(floating-label): update mdc web to v1.0.0 (#741) commit dd95b60 Author: Andrii Kostenko <[email protected]> Date: Mon Mar 18 23:38:34 2019 +0200 feat(snackbar): MDC Web v1.0.0 (#755) commit 9b86474 Author: Andrii Kostenko <[email protected]> Date: Mon Mar 18 23:27:39 2019 +0200 fix(tab): mdc-web v1.0.0 upgrade (#748) commit a8c64b5 Author: Lucas Cordeiro <[email protected]> Date: Mon Mar 18 17:46:29 2019 -0300 feat(drawer): add innerRef prop (#749) commit 5f55983 Author: Andrii Kostenko <[email protected]> Date: Fri Mar 15 19:05:44 2019 +0200 fix(chips): upgrade mdc-web to v1.0.0 (#750) commit 09cb8a5 Author: Matt Goo <[email protected]> Date: Fri Mar 15 10:05:03 2019 -0700 fix: [email protected] --> [email protected] & update imports (#709) commit ae9b421 Author: Andrii Kostenko <[email protected]> Date: Thu Mar 14 20:53:28 2019 +0300 fix(tab-scroller): upgrade mdc-web to 1.0.0 (#743) commit 1b29dd9 Author: Andrii Kostenko <[email protected]> Date: Thu Mar 14 20:32:18 2019 +0300 fix(tab-indicator): upgrade mdc-web to 1.0.0 (#742) commit f966714 Author: Andrii Kostenko <[email protected]> Date: Thu Mar 14 19:45:11 2019 +0300 feat(ripple) mdc-web typescript conversion (#711) commit 0b674f5 Author: Andrii Kostenko <[email protected]> Date: Fri Mar 8 23:54:24 2019 +0300 feat(line-ripple): mdc-web typescript support (#716)
* Squashed commit of the following: commit 14b22bc Author: Matt Goo <[email protected]> Date: Tue Apr 30 12:06:32 2019 -0700 feat(select): enhanced select (#823) commit b400013 Author: Matt Goo <[email protected]> Date: Mon Apr 29 14:49:32 2019 -0700 chore: reduce unused deps in package.json (#819) commit beedb23 Author: Matt Goo <[email protected]> Date: Mon Apr 29 13:43:20 2019 -0700 feat(select): add icon (#825) commit e22ac2a Author: Matt Goo <[email protected]> Date: Mon Apr 29 13:35:45 2019 -0700 feat(select): add helper text (#824) commit abaa146 Author: Matt Goo <[email protected]> Date: Mon Apr 29 13:35:16 2019 -0700 feat(select): add option component (#826) commit 7adc12a Author: Matt Goo <[email protected]> Date: Mon Apr 29 13:11:16 2019 -0700 fix(drawer): add missing foundation import in drawer (#821) commit 7e0f877 Author: Matt Goo <[email protected]> Date: Fri Apr 26 14:33:40 2019 -0700 feat(menu): add component (#786) commit 509e93e Author: Matt Goo <[email protected]> Date: Fri Apr 26 09:46:26 2019 -0700 chore(infrastructure): add esmoduleinterop to tsconfig (#818) commit 4dbc8b8 Author: Matt Goo <[email protected]> Date: Tue Apr 16 15:56:25 2019 -0700 feat(notched-outline): update to v1.1.1 (#806) commit ea15a2a Author: 태재영 <[email protected]> Date: Sat Apr 13 06:50:37 2019 +0900 fix(chips): Fix incorrect ripple effect (#804) commit 7b413df Author: Matt Goo <[email protected]> Date: Mon Apr 8 13:27:36 2019 -0700 feat(button): update mdc web deps to v1.1.0 (#791) commit 034158c Author: Matt Goo <[email protected]> Date: Tue Apr 2 17:36:46 2019 -0700 fix: remove .only (#794) commit 74379af Author: Matt Goo <[email protected]> Date: Tue Apr 2 16:24:45 2019 -0700 fix(list): maintain classes with state.listItemClassNames (#776) BREAKING CHANGE: Removes props.tabbableOnListItemFocus from all the auxiliary components, as it seemed confusing to have this and tabIndex dictate what tabIndex would ultimately be. commit e5b953f Author: Ben McKernan <[email protected]> Date: Tue Apr 2 20:18:03 2019 +0200 fix(icon-button): upgrade to mdc-web v1.1 (#792) commit 9c7bfa7 Author: Andrii Kostenko <[email protected]> Date: Mon Apr 1 23:08:27 2019 +0300 fix(card): upgrade to mdc-web v1.1 (#788) commit bb9e7e4 Author: Andrii Kostenko <[email protected]> Date: Mon Apr 1 20:44:28 2019 +0300 fix(top-app-bar): mdc-web v1 upgrade (#780) commit 37c7269 Author: Andrii Kostenko <[email protected]> Date: Mon Apr 1 20:00:39 2019 +0300 fix(linear-progress): upgrade mdc-web to v1 (#787) commit b6403e6 Author: Andrii Kostenko <[email protected]> Date: Mon Apr 1 19:38:31 2019 +0300 fix(fab): upgrade to mdc-web v1.1 (#790) commit bcda111 Author: Andrii Kostenko <[email protected]> Date: Fri Mar 29 21:11:19 2019 +0300 fix(dialog): mdc-web v1 upgrade (#779) commit 8ff8695 Author: Andrii Kostenko <[email protected]> Date: Thu Mar 28 22:32:55 2019 +0300 fix(typography): upgrade to mdc-web v1 (#778) commit 4d6bbc0 Author: Andrii Kostenko <[email protected]> Date: Thu Mar 28 22:15:22 2019 +0300 feat(radio): upgrade to typescript v1 (#777) commit 4f523e3 Author: Andrii Kostenko <[email protected]> Date: Thu Mar 28 22:13:29 2019 +0300 fix(checkbox): upgrade mdc-web to v1 (#769) commit 1a04f3d Author: Matt Goo <[email protected]> Date: Wed Mar 27 12:39:00 2019 -0700 feat(menu-surface): upgrade to mdc web v1 (#774) commit 44cca84 Author: Andrii Kostenko <[email protected]> Date: Wed Mar 27 01:14:18 2019 +0200 feat(switch): upgrade to mdc-web v1 (#757) commit 580c850 Author: Andrii Kostenko <[email protected]> Date: Wed Mar 27 01:13:37 2019 +0200 fix(tab-bar): upgrade mdc-web to v1 (#770) commit 45fef89 Author: Matt Goo <[email protected]> Date: Mon Mar 25 15:27:29 2019 -0700 fix(card): add react-ripple to package json (#773) commit 4e99b4c Author: Matt Goo <[email protected]> Date: Tue Mar 19 14:10:37 2019 -0700 feat(list): update to MDC Web 1.0.0 (#740) commit 38e9886 Author: Matt Goo <[email protected]> Date: Tue Mar 19 12:36:06 2019 -0700 feat(floating-label): update mdc web to v1.0.0 (#741) commit dd95b60 Author: Andrii Kostenko <[email protected]> Date: Mon Mar 18 23:38:34 2019 +0200 feat(snackbar): MDC Web v1.0.0 (#755) commit 9b86474 Author: Andrii Kostenko <[email protected]> Date: Mon Mar 18 23:27:39 2019 +0200 fix(tab): mdc-web v1.0.0 upgrade (#748) commit a8c64b5 Author: Lucas Cordeiro <[email protected]> Date: Mon Mar 18 17:46:29 2019 -0300 feat(drawer): add innerRef prop (#749) commit 5f55983 Author: Andrii Kostenko <[email protected]> Date: Fri Mar 15 19:05:44 2019 +0200 fix(chips): upgrade mdc-web to v1.0.0 (#750) commit 09cb8a5 Author: Matt Goo <[email protected]> Date: Fri Mar 15 10:05:03 2019 -0700 fix: [email protected] --> [email protected] & update imports (#709) commit ae9b421 Author: Andrii Kostenko <[email protected]> Date: Thu Mar 14 20:53:28 2019 +0300 fix(tab-scroller): upgrade mdc-web to 1.0.0 (#743) commit 1b29dd9 Author: Andrii Kostenko <[email protected]> Date: Thu Mar 14 20:32:18 2019 +0300 fix(tab-indicator): upgrade mdc-web to 1.0.0 (#742) commit f966714 Author: Andrii Kostenko <[email protected]> Date: Thu Mar 14 19:45:11 2019 +0300 feat(ripple) mdc-web typescript conversion (#711) commit 0b674f5 Author: Andrii Kostenko <[email protected]> Date: Fri Mar 8 23:54:24 2019 +0300 feat(line-ripple): mdc-web typescript support (#716) * feat(text-field): update to v1.1.1 (#812)
related #697