JSPM

react-bootstrap

0.6.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1182220
  • Score
    100M100P100Q177373F
  • License MIT

Bootstrap 3 components build with React

Package Exports

  • react-bootstrap
  • react-bootstrap/dist/react-bootstrap

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-bootstrap) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

react-bootstrap

Bootstrap 3 components built with React

Build Status NPM version Bower version

Under active development - APIs will change.

Docs

A docs site with live editable examples is a work in progress

Authors

Contributions

Yes please!

  • Run npm install, npm run test-watch to run tests while you develop (however this hides any build errors, you can see these with grunt build)
  • Add tests for any new or changed functionality
  • See issues for some ideas
  • Follow exisitng style

Getting started

You can import the lib with as AMD modules, CommonJS modules as a global JS script.

First add the bootstrap CSS to your project then:

AMD

bower install react#v0.9.0
bower install react-bootstrap

var Alert = require('react-bootstrap/amd/Alert');
// or
var Alert = require('react-bootstrap/amd').Alert;

CommonJS

npm install react@v0.9.0
npm install react-bootstrap

var Alert = require('react-bootstrap/Alert');
// or
var Alert = require('react-bootstrap').Alert;

Browser globals

<script src="http://fb.me/react-0.9.0.js"></script>
<script src="react-bootstrap/dist/react-bootstrap.min.js"></script>
<script>
    var Alert = ReactBootstrap.Alert;
</script>

Currently implemented (but under active development)

Up next

  • Pagination, Pager
  • Input

Examples

var Nav     = require('react-bootstrap/Nav');
var NavItem = require('react-bootstrap/NavItem');

var key = 1;

function handleSelect (selectedKey) {
  key = selectedKey;
}

<Nav bsStyle="[tabs|pills]" stacked justified activeKey={key} onSelect={handleSelect}>
  <NavItem key={1} href="/home">NavItem 1 content</NavItem>
  <NavItem key={2} title="Item">NavItem 2 content</NavItem>
  <NavItem key={3} disabled={true}>NavItem 3 content</NavItem>
</Nav>

Button

var Button = require('react-bootstrap/Button');

<Button onClick={handleClick}>Title</Button>
var DropdownButton = require('react-bootstrap/DropdownButton');
var MenuItem       = require('react-bootstrap/MenuItem');

function handleSelect (selectedKey) {
}

<DropdownButton title="Title" onSelect={handleSelect}>
  <MenuItem key="1">MenuItem 1 content</MenuItem>
  <MenuItem key="2">MenuItem 2 content</MenuItem>
</DropdownButton>

SplitButton

var SplitButton = require('react-bootstrap/SplitButton');
var MenuItem    = require('react-bootstrap/MenuItem');

function handleSelect (selectedKey) {
}

<SplitButton title="Title" onSelect={handleSelect} onClick={}>
  <MenuItem key="1">MenuItem 1 content</MenuItem>
  <MenuItem key="2">MenuItem 2 content</MenuItem>
</SplitButton>
var MenuItem = require('react-bootstrap/MenuItem');

function handleSelect (key) {
}

<MenuItem key={2} header>Header</MenuItem>
<MenuItem key={1} onSelect={handleSelect}>Content</MenuItem>
<MenuItem key={2} divider>Header</MenuItem>

Tabs

Controlled

var TabbedArea = require('react-bootstrap/TabbedArea');
var TabPane    = require('react-bootstrap/TabPane');

var key = 1;

function handleSelect (selectedKey) {
  key = selectedKey;
}

<TabbedArea title="Title" activeKey={key} onSelect={handleSelect}>
  <TabPane tab="Tab 1" key={1}>TabPane 1 content</TabPane>
  <TabPane tab={<strong>Tab 2</strong>} key={2}>TabPane 2 content</TabPane>
</TabbedArea>

Uncontrolled

var TabbedArea = require('react-bootstrap/TabbedArea');
var TabPane    = require('react-bootstrap/TabPane');

<TabbedArea title="Title" initialActiveKey={1}>
  <TabPane tab="Tab 1" key={1}>TabPane 1 content</TabPane>
  <TabPane tab={<strong>Tab 2</strong>} key={2}>TabPane 2 content</TabPane>
</TabbedArea>

Alert

var Alert = require('react-bootstrap/Alert');

function handleDismiss () {
}

<Alert bsStyle="danger" onDismiss={handleDismiss} dismissAfter={5000}>
  <strong>Oh snap!</strong> Change a few things up and try submitting again.
</Alert>

Panel

Controlled

var PanelGroup = require('react-bootstrap/PanelGroup');
var Panel    = require('react-bootstrap/Panel');

var key = 1;

function handleSelect (selectedKey) {
  key = selectedKey;
}

<PanelGroup activeKey={key} onSelect={handleSelect} isAccordion={true}>
  <Panel header="Panel 1" key={1}>TabPane 1 content</Panel>
  <Panel header={<strong>Panel 2</strong>} key={2}>TabPane 2 content</Panel>
</PanelGroup>

Uncontrolled

var PanelGroup = require('react-bootstrap/PanelGroup');
var Panel    = require('react-bootstrap/Panel');

<PanelGroup defaultActiveKey={1} isAccordion={true}>
  <Panel header="Panel 1" key={1}>Panel 1 content</Panel>
  <Panel header={<strong>Panel 2</strong>} key={2}>Panel 2 content</Panel>
</PanelGroup>

<Accordion></Accordion> is an alias of <PanelGroup isAccordion={true}><PanelGroup>

Overlays require the overlay instance itself and a 'trigger' component which controls whether the overlay is visible or not.

var Modal = require('react-bootstrap/Modal');
var OverlayTrigger = require('react-bootstrap/OverlayTrigger');

var modalInstance = (
  <Modal title="Modal title" animation={true} backdrop={true} keyboard={true}>
    <div className="modal-body">
        Content
    </div>
    <div className="modal-footer">
    </div>
  </Modal>
);

var trigger = (
  <OverlayTrigger overlay={modalInstance} trigger="click|hover|focus|manual">
    <button>Open</button>
  </OverlayTrigger>
);

You can make a custom trigger component like this:

var OverlayTriggerMixin = require('react-bootstrap/OverlayTriggerMixin');
var CustomTrigger = React.createClass({
  mixins: [OverlayTriggerMixin],

  getInitialState: function() {
    return {
      isOverlayShown: false
    };
  },

  toggleOverlay: function () {
    this.setState({
      isOverlayShown: !this.state.isOverlayShown
    });
  },

  // This is called by `OverlayTriggerMixin` whenever the component renders
  // and the return value is appended to `document.body`
  renderOverlay: function() {
    if (!this.state.isOverlayShown) {
      return <span />;
    }

    return (
      <Modal title="Modal title" onRequestHide={this.toggleOverlay}>
        <div className="modal-body">
            Content
        </div>
      </Modal>
    );
  },

  render: function() {
    return (
      <button onClick={this.toggleOverlay}>
        Toggle modal
      </button>
    );
  }
});

ProgressBar

var ProgressBar = require('react-bootstrap/ProgressBar');

<ProgressBar
  min={0}
  max={100}
  now={20}
  bsStyle="danger"
  striped=true|false
  active=true|false
  label="%(percent)s% complete (%(bsStyle)s)"
  srOnly=true
/>