react-router-prompt 🚨
A component for the react-router 6
Prompt
. Allows to create more flexible dialogs.
This is updated by Aptuitiv to not wrap the content in a div
tag. The div
tag was causing some issues with certain CSS that depends on grid layouts.
Demo
✨Homepage
🏠Installation
Prerequisite
React-router-dom >= 6.19 and can be used only with data routers
pnpm add react-router-prompt
or with other package manager like yarn
yarn add react-router-prompt
Basic Usage
<ReactRouterPrompt when={isDirty}>
{({ isActive, onConfirm, onCancel }) => (
<Modal show={isActive}>
<div>
<p>Do you really want to leave?</p>
<button onClick={onCancel}>Cancel</button>
<button onClick={onConfirm}>Ok</button>
</div>
</Modal>
)}
</ReactRouterPrompt>
Props
-
when
:boolean
|BlockerFunction
BlockerFunction = (args: { currentLocation: Location nextLocation: Location historyAction: HistoryAction }) => boolean
-
beforeConfirm()
:Promise<unknown>
(Optional) -
beforeCancel()
:Promise<unknown>
(Optional)
Return values
-
isActive
:Boolean
-
onConfirm()
:void
-
onCancel()
:void
Note 🗒️
This version works with react-router-dom >=v6.19 Should be used within data routers
For react-router support (v6 - v6.2.x)
please install v0.3.0
For react-router support (v6.7.x - v6.18.x) please install v0.5.4
Skipped support in middle due to breaking changes on react-router apis
Contributing
Contributions, issues and feature requests are always welcome! Feel free to check issues page.
Acknowledgements
- Inspiration from react-router-navigation-prompt
- Gist: https://gist.github.com/rmorse/426ffcc579922a82749934826fa9f743
Support
Give a ⭐️ if this project helped you!
📝 License
Copyright © 2023 Shyam Gupta (shyamm@outlook.com) This project is MIT licensed.
About me
- Website: sshyam-gupta.space
- Twitter: @shyamm06
- GitHub: @sshyam-gupta
- LinkedIn: @shyam-gupta-66463a62