DanFessler / react-panelgroup

A react component for resizable panel group layouts:
https://danfessler.github.io/react-panelgroup/
MIT License
254 stars 53 forks source link

React-PanelGroup Travis PRs Welcome

A React component for resizable panel group layouts

Demo: https://danfessler.github.io/react-panelgroup/

Features

Installation

$ npm install --save react-panelgroup

Examples

Defaults

When not specifying any props, the panel group defaults to a horizontal orientation with panels of equal (stretchy) widths. PanelGroup will always try to entirely fill it's container.

<PanelGroup>
  <div>panel 1</div>
  <div>panel 2</div>
  <div>panel 3</div>
</PanelGroup>

Column layout

Setting the direction prop to "column" will result in a vertical layout

<PanelGroup direction="column">
  <div>panel 1</div>
  <div>panel 2</div>
  <div>panel 3</div>
</PanelGroup>

Nested layout

Nest multiple panelGroups for more complex layouts

<PanelGroup direction="row">
  <PanelGroup direction="column">
    <div>panel 1</div>
    <div>panel 2</div>
    <div>panel 3</div>
  </PanelGroup>
  <div>panel 4</div>
  <PanelGroup direction="column">
    <div>panel 5</div>
    <div>panel 6</div>
  </PanelGroup>
</PanelGroup>

Defined panel sizes

Providing panelWidths with an array of objects defining each panel's size parameters will set the initial sizing for each panel. If any property is missing, it will resort to the default for that property.

<PanelGroup
  panelWidths={[
    { size: 100, minSize: 50, resize: 'dynamic' },
    { minSize: 100, resize: 'stretch' },
    { size: 100, minSize: 50, resize: 'dynamic' }
  ]}
>
  <div>panel 1</div>
  <div>panel 2</div>
  <div>panel 3</div>
</PanelGroup>

Component Props

Contribute

Prerequisites

Node.js >= v4 must be installed.

Installation

NOTE yarn does not work! It will yield phantomjs errors.

Demo Development Server

Running Tests

Building