/react-router-prompt

A replacement component for the react-router 6 `Prompt`. Allows for more flexible dialogs.

Primary LanguageTypeScriptMIT LicenseMIT

react-router-prompt 🚨

A component for the react-router 6 Prompt. Allows to create more flexible dialogs.

npm version

npm downloads

npm bundle size

Demo

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

  1. when: boolean | BlockerFunction

    BlockerFunction = (args: {
        currentLocation: Location;
        nextLocation: Location;
        historyAction: HistoryAction;
    }) => boolean;
  2. beforeConfirm() : Promise<unknown> (Optional)

  3. beforeCancel() : Promise<unknown> (Optional)

Return values

  1. isActive: Boolean
  2. onConfirm(): void
  3. 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

Skipped support in middle due to breaking changes on react-router apis

yarn add react-router-prompt@0.3.0

Contributing

Contributions, issues and feature requests are always welcome! Feel free to check issues page.

Acknowledgements

Support

Give a ⭐️ if this project helped you!

📝 License

Copyright © 2023 Shyam Gupta (shyamm@outlook.com) This project is MIT licensed.

About me