0.1.12 • Published 6 months ago

react-simple-modal-controller v0.1.12

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

react-simple-modal-controller

A simple and convenient modal controller for react

Installation

npm install react-simple-modal-controller

Setting

Wrap the top folder with a provider. that's all!

import { ModalProvider } from "react-simple-modal-controller";

const App = () => {
  return <ModalProvider>...</ModalProvider>;
};

Usage

basic modal

import { modal } from "react-simple-modal-controller";

const Page = () => {
  const openModal = () => {
    modal.open(ModalComponent, { title: "test" });
  };
  
  ...
  return <button onClick={openModal}>modal open</button>;
};

const ModalComponent = ({ title }: { title: string }) => {
  return (
    <div className="modal">
      <h2>{title}</h2>
      <button
        onClick={() => {
          // something work
          modal.close();
        }}
      >
        ok
      </button>
      <button onClick={modal.close}>cancel</button>
      <button onClick={openModal}>nesting modal open</button>
    </div>
  );
};

async modal

import { modal } from 'react-simple-modal-controller';

const Page = () => {
  const openAsyncModal = async () => {
    try {
      const isOk = await modal.openAsync<boolean>(AsyncModalComponent, {
        userId: 123,
      });
      if(isOk) {
          ...
      } else {
          ...
      }
    } catch (error) {
      ...
    }
  };

  ...
  return <button onClick={openAsyncModal}>asyncModal open</button>
};

const AsyncModalComponent = ({ resolve, userId }: { resolve: (value: boolean) => void; userId: number }) => {
  return (
    <div className="modal">
      <button onClick={() => resolve(true)}>
        ok
      </button>
      <button onClick={() => resolve(false)}>
        cancel
      </button>
    </div>
  );
};

Playground

Edit react-simple-modal-controller

0.1.10

6 months ago

0.1.11

6 months ago

0.1.12

6 months ago

0.1.9

9 months ago

0.1.8

9 months ago

0.1.7

9 months ago

0.1.6

9 months ago

0.1.5

9 months ago

0.1.4

9 months ago

0.1.3

9 months ago

0.1.2

9 months ago

0.1.1

9 months ago

0.1.0

9 months ago