1.1.3 • Published 5 months ago

react-snappy-modal v1.1.3

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

React Snappy Modal

SnappyModal is a lightweight, flexible React modal library that provides a simple and intuitive way to manage modal dialogs in your React applications.

한글 문서

Website: https://react.snappy-modal.com/

Features

  • 🚀 Promise-based API
  • 🎯 Multiple modal layers support
  • 🎨 Customizable positioning
  • 🔒 Scroll lock management
  • 🎭 Backdrop customization
  • ⚡ TypeScript support

Installation

npm install react-snappy-modal
# or
yarn add react-snappy-modal

Basic Usage

  1. First, wrap your application with SnappyModalProvider:
import { SnappyModalProvider } from 'react-snappy-modal';

function App() {
  return (
    <SnappyModalProvider>
      <YourApp />
    </SnappyModalProvider>
  );
}
  1. Show a modal using SnappyModal.show():
import SnappyModal from 'react-snappy-modal';

function YourComponent() {
  const handleClick = async () => {
    const result = await SnappyModal.show(
      <div>
        <h2>Hello World!</h2>
        <button onClick={() => SnappyModal.close('success')}>Close</button>
      </div>
    );
    console.log(result); // 'success'
  };

  return <button onClick={handleClick}>Open Modal</button>;
}

API Reference

SnappyModal.show(component, options?)

Shows a modal and returns a Promise that resolves when the modal is closed.

interface SnappyModalOptions {
  allowOutsideClick?: boolean;  // Enable closing by clicking outside (default: true)
  allowScroll?: boolean;        // Allow background scrolling (default: false)
  backdrop?: boolean | string;  // Show backdrop or custom backdrop color (default: true)
  position?: SnappyModalPosition; // Modal position (default: "center")
  zIndex?: number;             // Custom z-index
  layer?: number;              // Modal layer for stacking (default: 0)
}

type SnappyModalPosition =
  | "top-left"
  | "top-center"
  | "top-right"
  | "center-left"
  | "center"
  | "center-right"
  | "bottom-left"
  | "bottom-center"
  | "bottom-right";

SnappyModal.close(value?, layer?)

Closes the modal and resolves the Promise with the provided value.

SnappyModal.close('success', 0); // Closes layer 0 modal with 'success' value

SnappyModal.throw(error?, layer?)

Closes the modal and rejects the Promise with the provided error.

SnappyModal.throw(new Error('Cancelled'), 0);

Examples

Custom Positioning

SnappyModal.show(<YourComponent />, {
  position: 'top-right',
  backdrop: 'rgba(0, 0, 0, 0.7)'
});

Multiple Layers

// Show first modal
const showNestedModal = async () => {
  await SnappyModal.show(<FirstModal />, { layer: 0 });
  // Show second modal on top
  await SnappyModal.show(<SecondModal />, { layer: 1 });
};

Custom Backdrop

SnappyModal.show(<YourComponent />, {
  backdrop: 'rgba(255, 0, 0, 0.5)' // Red semi-transparent backdrop
});

Examples

For detailed usage examples, please refer to the examples in the sample directory.

1.1.1

9 months ago

1.1.0

9 months ago

1.1.3

5 months ago

1.1.2

9 months ago

1.0.0

12 months ago

0.1.0

12 months ago

0.0.10

1 year ago

0.0.11

1 year ago

0.0.12

1 year ago

0.0.14

1 year ago

0.0.12-test.0

1 year ago

0.0.9-test.2

1 year ago

0.0.9-test.3

1 year ago

0.0.15

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.3

1 year ago

0.0.2-fix.0

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago