0.0.8 • Published 2 years ago

use-portal-hook v0.0.8

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Use Portal Hook

build npm version npm.io

Features

  • Type safe
  • Small size
  • Zero dependencies
  • Simple API

Quick Start

Install

npm i use-portal-hook

Add a provider

import { PortalProvider } from "use-portal-hook";
...
root.render(
  <PortalProvider>
    <App />
  </PortalProvider>
)

Create a modal

import { PortalComponent } from "use-portal-hook";

interface DeleteModalProps {
  title: string
}

export const DeleteModal: PortalComponent<DeleteModalProps, boolean> = ({ onClose, props }) => {
  return (
    <div>
      {props.title}
      <button onClick={() => onClose(false)}>Cancel</button>
      <button onClick={() => onClose(true)}>Delete</button>
    </div>
  )
}

Use the modal

import { usePortal } from "use-portal-hook";
import { DeleteModal } from "./delete-modal";


const App = () => {
  const showDeleteModal = usePortal(DeleteModal);

  const handleDelete = async () => {
    const confirmed = await showDeleteModal({ title: 'Delete' })
    console.log('Confirmed: ', confirmed)
  }

  return (
    <button onClick={handleDelete}>Delete Item</button>
  );
}

Examples

License

MIT

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago