• Stars
    star
    188
  • Rank 204,283 (Top 5 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 9 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

React popout is a React component wrapping window.open allowing you to host content in a browser popup window.

react-popout

React popout is a React component wrapping window.open allowing you to host content in a browser popup window.

npm install react-popout --save

Demo

To see it in action just go to http://jake.ginnivan.net/react-popout

Usage

Import with es6

import Popout from 'react-popout'

The usage is really simple. When the component is mounted the popup is open, and when it is unmounted the popup is closed.

<Popout url='popout.html' title='Window title' onClosing={this.popupClosed}>
  <div>Popped out content!</div>
</Popout>

To close the window programatically give the window a ref and use the closeWindow function.

props

title [required]

Title for popup window.

url [optional]

URL of the page to load intially. Often needed for css. about:blank will be used if not specified.

onClosing [optional]

Called when popout window is closed, either by user or by calling close.

options [optional]

Object representing window options. See the docs for reference.

Example: <Popout options={{left: '100px', top: '200px'}} />

By default 500px wide, 400px high and centered over the window hosting the react component.

You can also specify a function with signature (options, window) => { } to perform calculations. For example top is calculated with (o, w) => ((w.innerHeight - o.height) / 2) + w.screenY

window [optional]

Instead of using the window global, a window object can be passed in. It needs the following functions on it:

window.open(<url>, <title>, <strWindowFeatures>); and return an object which looks like this:

{
  onbeforeunload: () => { },
  onload: () => { },
  close: () => { },
  document: {
    title: string,
    body: {
      appendChild: (ele) => { }
    }
  }
}

This can be used if you need to intercept the calls and do something else.

containerId [optional]

Assigns an Id to the container that will be injected in the popup window document.body, defaults to popout-content-container, useful for cascading styles.

Example:

// input
<Popout containerId='tearoff'>
  <SomeComponent />
</Popout>

// output in new window:
<div id="tearoff">
  <SomeComponent />
</div>

onError [optional]

Provides a callback incase the window wasn't opened, usually due to a popout blocker within the browser.

Example:

// input
<Popout onError={() => {}}>
    ...
</Popout>

Example hosting component

class HostingComponent {
  constructor(props) {
    super(props);
    this.popout = this.popout.bind(this);
    this.popoutClosed = this.popoutClosed.bind(this);
    this.state = { isPoppedOut: false };
  }

  popout() {
    this.setState({isPoppedOut: true});
  }

  popoutClosed() {
    this.setState({isPoppedOut: false});
  }

  render() {
    if (this.state.isPoppedOut) {
      return (
        <Popout url='popout.html' title='Window title' onClosing={this.popoutClosed}>
          <div>Popped out content!</div>
        </Popout>
      );
    } else {
      var popout = <span onClick={this.popout} className="buttonGlyphicon glyphicon glyphicon-export"></span>
      return (
        <div>
          <strong>Section {popout}</strong>
          <div>Inline content</div>
        </div>
      );
    }
  }
}

The popped out content can have props set and will render just as you would expect a normal React component to render.

More Repositories

1

WebApi.Hal

Adds support for the Hal Media Type (and Hypermedia) to Asp.net Web Api
C#
212
star
2

VSTOContrib

VSTO Contrib lets you easily unit test, use IoC/DI and develop in a MVVM style within Office Add-ins. It supports Outlook, Word, Excel and PowerPoint 2007 or 2010, and has both .net 3.5 and 4.0 builds
C#
130
star
3

react-redux-notifications

Redux powered notification React components.
TypeScript
113
star
4

SettingsProvider.net

Simple Settings provider for .net applications
C#
59
star
5

ExpressionToString

Expression.ToString() is not so nice to look at sometimes, this library will ToString your expression in the way you want
C#
26
star
6

GitHubFlowVersion

The easy way to use semantic versioning (semver.org) with GitHub Flow
C#
18
star
7

WebPack-React-Starter

Understanding starter repos is sometimes hard, this repo will show you how we got there. Commit by commit
18
star
8

VSTest.TeamCityLogger

Enables TeamCity to display output when tests are run through VSTest.console.exe
C#
9
star
9

Drone

Drone gives you a birdseye view of all your OSS projects to help you see what to do next. It may even do some of it for you down the track!
JavaScript
9
star
10

TfsBuildResultPublisher

Based off http://blogs.msdn.com/b/jpricket/archive/2010/02/23/creating-fake-builds-in-tfs-build-2010.aspx and http://msmvps.com/blogs/vstsblog/archive/2011/04/26/creating-fake-builds-in-tfs-build-2010-using-the-command-line.aspx
C#
8
star
11

spectacle-typescript-boilerplate

Boilerplate for https://github.com/FormidableLabs/spectacle using TypeScript
TypeScript
8
star
12

XamlAttributeOrderingCodeCleanup

ReSharper Plugin which orders Xaml Attributes
C#
7
star
13

ndc-sydney-pulumi-demo

TypeScript
6
star
14

XText

Allows you to create nicely formatted WPF text from code behind with a syntax similar to the way XDocuments work
C#
6
star
15

SqlConnectionControl

Code for http://jake.ginnivan.net/wpf-sql-connection-user-control
C#
6
star
16

UITextBlock

Wpf TextBlock that supports UI Automation and some other nice things
C#
4
star
17

urban-plate

JavaScript
4
star
18

gru

Gru is a node clustering helper, because he is the leader of the minions
TypeScript
4
star
19

practical-typescript

TypeScript
4
star
20

AsyncAutomapper

C#
3
star
21

TestCaseAutomationAssigner

Allows you to assign non-mstest tests to Test Cases in TFS
C#
3
star
22

AsyncAllTheThings

JavaScript
2
star
23

DelegateInvoker

Invoke methods via reflection without wrapping errors in a TargetInvocationException
C#
2
star
24

jakeginnivan.github.io

My Blog
JavaScript
2
star
25

wee-dram

JavaScript
2
star
26

example-project-structure

Example of how I setup my NPM projects
JavaScript
2
star
27

merge-refs-hook

This package makes it easy to have a component which requires a ref but also wants to support forwarding refs
TypeScript
2
star
28

modern-typescript-is-awesome-demos

1
star
29

advent-of-code

JavaScript
1
star
30

vite-ssr-build-issue

TypeScript
1
star
31

getting-more-out-of-typescript

TypeScript
1
star
32

IsThatEvenJS

JavaScript
1
star
33

dotfiles

Shell
1
star
34

node-git-release-notes

TypeScript
1
star
35

es6-samples

TypeScript
1
star
36

pulumi-fargate-task

TypeScript
1
star
37

pulumi-locked

Pulumi CLI wrapper which supports taking locks in DynamoDB.
JavaScript
1
star
38

ArgyBargy

A simple clean API for showing flexible WPF dialogs
C#
1
star
39

react-json-pages

Create your layouts and components then compose them with JSON. Opens up opportunities to CMS manage your React pages and cut down on boilerplate across pages. Useful if you are building websites with React rather than applications
1
star