fix(deps): update dependency react-toastify to v11 #401
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^9.1.3
->^11.0.0
Release Notes
fkhadra/react-toastify (react-toastify)
v11.0.2
Compare Source
v11.0.1
Compare Source
v11.0.0
: v11Compare Source
What is new in v11
I’m super excited about this release! The main focus was on customization, and my goal was to empower you (and myself) so you can fully personalize the look and feel for the notifications.
In short, react-toastify should be able to blend into any design system.
No need to import the css file anymore
The stylesheet is now injected automatically, so you no longer need to import it. The CSS file is still exported by the library.
Easy customization!
One of the top requests has been how to customize notifications. To be fair, until this release, it was quite challenging because it required users to override numerous CSS classes.
I’ve simplified the DOM structure of the notification by removing extraneous div elements, nested elements, etc... It’s a significant breaking change, but it’s truly worth the effort. I can confidently say that the library can now seamlessly integrate into any design system.
Below, I’ve implemented a couple of different designs using only Tailwind. I didn’t override a single CSS class from react-toastify 🤯!
How does it work in practice? On the left side, we have the old DOM structure vs the new one on the right side.
Toastify__toast-body
and its child are now completely gone.CloseButton
now uses an absolute position.Thanks to those changes, nothing will interfere with your content.
Toastify__toast
has some sensible default values(e.g., border-radius, shadow, etc...) that can be customized using css or by updating the associated css variables:Custom progress bar
Allowing a custom progress bar wasn’t on my to-do list at all while working on this release. But seeing how easy it is to customize notifications now, I couldn’t resist 😆.
The best part is that you don’t have to compromise on features like
autoClose
,pauseOnHover
,pauseOnFocusLoss
, or even a controlled progress bar—it just works seamlessly for you.Here is a small gist.
Accessibility and keyboard navigation
ToastContainer
andtoast
accept anariaLabel
prop(finally...). This is quite helpful for screen readers and also for testing.For example, in cypress you could do
cy.findByRole("alert", {name: "the aria label you specified"})
.If a notification is visible and the user presses
alt+t
it will focus on the first notification allowing the user to useTab
to navigate through the different elements within the notification.The
hotKeys
can be changed of course.Notification removal reason with onClose callback
Do you want to know whether the user closed the notification or if it closed automatically? Rest assured, this is now possible!
The signature of the
onClose
callback is nowonClose(reason?: boolean | string) => void
.When the user closes the notification, the
reason
argument is equal totrue
. In the example below, I've named my argumentremovedByUser
to make the intent clear.If you are using a custom component for your notification, you might want more control over the reason, especially if it contains
multiple call to actions.
💥 Breaking Changes
useToastContainer and useToast no longer exposed
Those hooks are unusable unless you deep dive in react-toastify source code to understand how to glue things together. This is not what I want for my users, it was a bad decision to expose them in the first place, I've learned a good lesson.
onClose and onOpen no longer receive children props
In hindsight, I should never have done this. The feature is practically not used. Below the new signature for each callback:
onOpen: () => void
onClose: (reason?: boolean | string) => void
Styling
react-toastify/dist/ReactToastify.minimal.css
has been removed.bodyClassName
andbodyStyle
are no longer needed.progressBarStyle
in order to reduce the api surface. They are now better way to customize everything without relying on inline style.injectStyle
has been removed. This function is no longer needed.Toastify__toast-body
and its direct child have been removed.🐞 Bug Fixes
🔮What's next?
I'm gradually rewriting part of the documentation. I've created a collection on stackblitz, this way you can find all the examples in one place. I'll keep adding more examples as I go.
I've been maintaining react-toastify for more than 8 years. If your company depends on it, consider contributing to its continued development and maintenance. Open-source software thrives with community support, and funding helps ensure we(the maintainers) can keep improving and innovating.
Every contribution, big or small, makes a difference and is greatly appreciated.
v10.0.6
Compare Source
v10.0.5
Compare Source
v10.0.4
Compare Source
v10.0.3
Compare Source
v10.0.2
Compare Source
v10.0.1
Compare Source
v10.0.0
Compare Source
What is new in v10
The code for this release has been sitting on my computer for almost a year but with so many things going on it was hard for me to release it but it's finally there! A good chunk of the code has been rewritten, a bunch of bugs have been fixed. I've also addressed the oldest open feature request (Jan 10, 2020) 😆.
Features
Play or pause the timer programmatically
By default, when the notification is hovered or the window loses focus, the timer for dismissing the notification is paused. There are many other situations where you might want to pause the timer as well. For instance, consider wanting to toggle the notification timer based on the document's visibility. This wasn't possible to do previously, but with the new API, it's a breeze.
More usages:
Remove notification from a given container
This feature was the oldest one in the backlog (Jan 10, 2020). I don't know if the user who requested this feature is still using the library but I bet thanks to her/him, a bunch of user will be happy.
The method is backward compatible.
toast.dismis()
andtoast.dismiss("123")
work as usual.Check if a notification is active for a given container
You can limit the call to
toast.isActive
to a specific container.Better typescript inference when using data
When providing data to the notification, the content of data is correctly infered by typescript.
IconProps now receives isLoading
When providing your own logic to display the icon, you now have access to the
isLoading
field.Stacked Notifications
The initial release for this feature was planned right after the release of the v9. The code was their but things happen in life and I wasn't able to focus on the project that much.
That being said, I'm glad to finally release it.
To enable it, add the
stacked
prop to theToastContainer
. I also suggest to disable the progress bar :).Progress bar background trail
The progress bar leaves a background trail by default.
The opacity of the trail can be customized by overriding the css variable
--toastify-color-progress-bgo
.Breaking Changes
React 18 is the minimum required version, but...
The minimun version of react required is now
18
. This version has been released for more than a year. Nextjs, react-query already did this move as well, so I believe it's a good time for the library as well.That being said, I know that not all code base have the chance to be running on the latest version of react, so I'm considering to have a package for
v17
if the demand is high enough.The enableMultiContainer prop has been removed
The
enableMultiContainer
props is not needed anymore and has been removed. As long as your container has anid
assigned then you are good to go.The toast.position and toast.type constants have been removed
The
toast.POSITION
andtoast.TYPE
constants have been removed. Typescript came a long way since the initial release of the library. The ecosystem has matured to a point where such constants are not needed anymore.Change for some defaults
The
closeOnClick
prop is nowfalse
by default instead oftrue
. When using the library I keep on turning this feature off which make me realize that it was not a good default in the first place. To turn it on do as followThe
draggable
prop is set totouch
by default instead oftrue
. Which means that, by default, notifications are only draggable on touch devices (most likely mobiles and tablets). While swipping a notification on mobile feels natural, dragging on desktop is not. If you want your notification to be draggable regardless of the device type just set draggable totrue
.Bug Fixes and Chore
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.