Coder Social home page Coder Social logo

ctxhou / react-poppop Goto Github PK

View Code? Open in Web Editor NEW
80.0 5.0 8.0 267 KB

A mobile support and multi-directional modal for ReactJS

Home Page: https://ctxhou.github.io/react-poppop/

JavaScript 100.00%
react modal dialog popup react-poppop responsive mobile react-modal

react-poppop's Introduction

React Poppop

A responsive, mobile support, multi directions and easy to use modal for ReactJS.

Compatible with React 15 and 16.

version travis Build status david codecov Maintainability download

img

Features

  • Mobile support — Responsive and support tap action.
  • Multi directions — support 9 positions. ↑ ↗ ︎→ ↘ ︎↓ ↙ ︎← ↖ ︎⥁
  • Easily customize style
  • React v16 portal — Using react v16 official portal API. Also backward compatible with v15

Table of Contents

Installation

Install it with npm.

npm install react-poppop --save

Then, import the module by module bundler like webpack, browserify

// es6
import PopPop from 'react-poppop';

// not using es6
var PopPop = require('react-poppop');

UMD build is also available. If you do this, you'll need to include the dependencies:

For example:

<script src="https://unpkg.com/[email protected]/umd/react.production.min.js"></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/[email protected]/prop-types.min.js"></script>
<script src="https://unpkg.com/react-poppop/dist/react-poppop.min.js"></script>

You can reference standalone.html example.

Usage

Minimum Config

The miminum usage of PopPop is set open as true.

<PopPop open={true}>
  <h1>Title</h1>
  <p>Content</p>
</PopPop>

Multi directions - 9 positions

The default position of react-poppop is Top Center.

There are 9 positions provided by react-poppop.

'topLeft', 'topCenter', 'topRight', 'centerLeft', 'centerCenter', 'centerRight', 'bottomLeft', 'bottomCenter', 'bottomRight'

Select a position you want and pass it to position props.

Example

<PopPop open={true}
        position="topRight">
  <h1>Title</h1>
  <p>Content</p>
</PopPop>

Controllable

You can set onClose callback, close by click close button, esc button and overlay.

import React, {Component} from 'react';
import PopPop from 'react-poppop';

export default class Example extends Component {
  constructor(props) {
    super(props);
    this.state = {
      show: false
    }
  }

  toggleShow = show => {
    this.setState({show});
  }

  render() {
    const {show} = this.state;
    return (
      <div>
        <button className="btn btn-default" onClick={() => this.toggleShow(true)}>Show Modal</button>
        <PopPop position="centerCenter"
                open={show}
                closeBtn={true}
                closeOnEsc={true}
                onClose={() => this.toggleShow(false)}
                closeOnOverlay={true}>
          <h1>title</h1>
          <p>
            content
          </p>
        </PopPop>
      </div>
    )
  }
}

Props

* means required

Props Type Default Description
open * bool Open the modal or not
closeBtn bool false Whether to show close button
closeOnOverlay bool true Whether to close modal on click overlay area
closeOnEsc bool false Whether to close modal when click `esc`
onClose function close modal callback
position topLeft
topCenter
topRight
centerLeft
centerCenter
centerRight
bottomLeft
bottomCenter
bottomRight
topCenter Modal position
overlayStyle object reference: link customize overlay style
contentStyle object reference: link customize content style

License

MIT @ctxhou

react-poppop's People

Contributors

ctxhou avatar greenkeeperio-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

react-poppop's Issues

change react-tappable

Because react-tappable currently doesn't support react v16, need to use other method to support touch event.

How to style wrapper ?

Hi,

I want to use this library as a right sidebar.

I have a problem because the wrapper has a 20px padding.

How can I remove this padding ? Can I add className to the popupcomponent ?

Thank you

How to style?

Hey,
Thanks for the repo.

How can I apply styles so I can change how the popup looks like?

Tried this:

        <PopPop position="centerCenter"
                open={true}
                closeBtn={false}
                closeOnEsc={false}
                closeOnOverlay={false}
                
                style={{  
                    backdropFilter: "blur(10px)",
                    backgroundColor: "transparent",
                    boxShadow: "none",
                    display: "flex", 
                    flexDirection: "column",
                    alignItems: "center"
                        }}

                >

               <h1> Test 123 </h1>
        </PopPop>

But it does not have any effect.

Cannot read property 'injection' of undefined

injectTapEventPlugin
https://ovkn502kp5.codesandbox.io/node_modules/react-tap-event-plugin/src/injectTapEventPlugin.js:23:89
evaluate
https://ovkn502kp5.codesandbox.io/node_modules/react-poppop/lib/poppop.js:43:35

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.