Coder Social home page Coder Social logo

jljlpch / react-native-overlay Goto Github PK

View Code? Open in Web Editor NEW

This project forked from brentvatne/react-native-overlay

0.0 2.0 0.0 1.63 MB

An <Overlay /> component that brings content inside to the front of the view regardless of its current position in the component tree.

JavaScript 22.34% Objective-C 70.68% Ruby 6.98%

react-native-overlay's Introduction

react-native-overlay

An <Overlay /> component that brings content inside to the front of the view regardless of its current position in the component tree. This was extracted from react-native-modal because a modal is not the only time that you want to bring something to the front of the screen.

Should you use this?

Ideally, no. This should probably only be used as a last resort. You can usually accomplish what you need to by just absolute positioning an view at the bottom of your root component.

In fact, as of 0.29.0 zIndex is supported on iOS and Android, so you should probably never use this.

Add it to your project

  1. Run npm install react-native-overlay --save
  2. Open your project in XCode, right click on Libraries and click Add Files to "Your Project Name" (Screenshot) then (Screenshot).
  3. Add libRNOverlay.a to Build Phases -> Link Binary With Libraries (Screenshot).
  4. Whenever you want to use it within React code now you can: var Overlay = require('react-native-overlay');

Example - Loading Overlay

This shows how you might implement a loading overlay and uses react-native-blur to blur the background. Notice that all we need to do is wrap the content that we want to bring to the front in an Overlay element!

var React = require('react-native');
var Overlay = require('react-native-overlay');
var BlurView = require('react-native-blur').BlurView;

var {
  View,
  ActivityIndicatorIOS,
  StyleSheet,
} = React;

var LoadingOverlay = React.createClass({
  getDefaultProps(): StateObject {
    return {
      isVisible: false
    }
  },

  render(): ReactElement {
    return (
      <Overlay isVisible={this.props.isVisible}>
        <BlurView style={styles.background} blurType="dark">
          <ActivityIndicatorIOS
            size="large"
            animating={true}
            style={styles.spinner} />
        </BlurView>
      </Overlay>
    );
  }
});

var styles = StyleSheet.create({
  background: {
    flex: 1,
    justifyContent: 'center',
  },
})

module.exports = LoadingOverlay;

Elsewhere in our app, we can render this:

var LoadingOverlayExampleApp = React.createClass({
  render: function() {
    return (
      <View style={styles.container}>
        <Image source={require('image!announcement')} style={styles.image} />

        { /* It doesn't matter where we put this component, it can be nested */ }
        { /* anywhere within your component tree */ }
        <LoadingOverlay isVisible={true} />
      </View>
    );
  }
});

This would produce something like this:

Example code result

You can try this code yourself by cloning this repo and running Examples/LoadingOverlay.

Example - Toast

There are so many other types of overlays but I thought I'd give another simple example to stir your imagination.

Example code result

Check it out in Examples/Toast.

react-native-overlay's People

Contributors

brentvatne avatar niftylettuce avatar adrienbrault avatar alejomendoza avatar gmethvin avatar jdeppen avatar joecritch avatar johanneslumpe avatar keeth avatar almost avatar xiaoyann avatar

Watchers

 avatar  avatar

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.