|
|
|
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
|
|
|
if(typeof exports === 'object' && typeof module === 'object')
|
|
|
|
|
module.exports = factory(require("react"));
|
|
|
|
|
else if(typeof define === 'function' && define.amd)
|
|
|
|
|
define(["react"], factory);
|
|
|
|
|
else if(typeof exports === 'object')
|
|
|
|
|
exports["ReactBootstrap"] = factory(require("react"));
|
|
|
|
|
else
|
|
|
|
|
root["ReactBootstrap"] = factory(root["React"]);
|
|
|
|
|
})(this, function(__WEBPACK_EXTERNAL_MODULE_51__) {
|
|
|
|
|
return /******/ (function(modules) { // webpackBootstrap
|
|
|
|
|
/******/ // The module cache
|
|
|
|
|
/******/ var installedModules = {};
|
|
|
|
|
|
|
|
|
|
/******/ // The require function
|
|
|
|
|
/******/ function __webpack_require__(moduleId) {
|
|
|
|
|
|
|
|
|
|
/******/ // Check if module is in cache
|
|
|
|
|
/******/ if(installedModules[moduleId])
|
|
|
|
|
/******/ return installedModules[moduleId].exports;
|
|
|
|
|
|
|
|
|
|
/******/ // Create a new module (and put it into the cache)
|
|
|
|
|
/******/ var module = installedModules[moduleId] = {
|
|
|
|
|
/******/ exports: {},
|
|
|
|
|
/******/ id: moduleId,
|
|
|
|
|
/******/ loaded: false
|
|
|
|
|
/******/ };
|
|
|
|
|
|
|
|
|
|
/******/ // Execute the module function
|
|
|
|
|
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
|
|
|
|
|
|
|
|
/******/ // Flag the module as loaded
|
|
|
|
|
/******/ module.loaded = true;
|
|
|
|
|
|
|
|
|
|
/******/ // Return the exports of the module
|
|
|
|
|
/******/ return module.exports;
|
|
|
|
|
/******/ }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/******/ // expose the modules object (__webpack_modules__)
|
|
|
|
|
/******/ __webpack_require__.m = modules;
|
|
|
|
|
|
|
|
|
|
/******/ // expose the module cache
|
|
|
|
|
/******/ __webpack_require__.c = installedModules;
|
|
|
|
|
|
|
|
|
|
/******/ // __webpack_public_path__
|
|
|
|
|
/******/ __webpack_require__.p = "";
|
|
|
|
|
|
|
|
|
|
/******/ // Load entry module and return exports
|
|
|
|
|
/******/ return __webpack_require__(0);
|
|
|
|
|
/******/ })
|
|
|
|
|
/************************************************************************/
|
|
|
|
|
/******/ ([
|
|
|
|
|
/* 0 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var Accordion = _interopRequire(__webpack_require__(1));
|
|
|
|
|
|
|
|
|
|
var Affix = _interopRequire(__webpack_require__(2));
|
|
|
|
|
|
|
|
|
|
var AffixMixin = _interopRequire(__webpack_require__(3));
|
|
|
|
|
|
|
|
|
|
var Alert = _interopRequire(__webpack_require__(4));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var Badge = _interopRequire(__webpack_require__(6));
|
|
|
|
|
|
|
|
|
|
var Button = _interopRequire(__webpack_require__(7));
|
|
|
|
|
|
|
|
|
|
var ButtonGroup = _interopRequire(__webpack_require__(8));
|
|
|
|
|
|
|
|
|
|
var ButtonToolbar = _interopRequire(__webpack_require__(9));
|
|
|
|
|
|
|
|
|
|
var CollapsableNav = _interopRequire(__webpack_require__(10));
|
|
|
|
|
|
|
|
|
|
var Carousel = _interopRequire(__webpack_require__(11));
|
|
|
|
|
|
|
|
|
|
var CarouselItem = _interopRequire(__webpack_require__(12));
|
|
|
|
|
|
|
|
|
|
var Col = _interopRequire(__webpack_require__(13));
|
|
|
|
|
|
|
|
|
|
var CollapsableMixin = _interopRequire(__webpack_require__(14));
|
|
|
|
|
|
|
|
|
|
var DropdownButton = _interopRequire(__webpack_require__(15));
|
|
|
|
|
|
|
|
|
|
var DropdownMenu = _interopRequire(__webpack_require__(16));
|
|
|
|
|
|
|
|
|
|
var DropdownStateMixin = _interopRequire(__webpack_require__(17));
|
|
|
|
|
|
|
|
|
|
var FadeMixin = _interopRequire(__webpack_require__(18));
|
|
|
|
|
|
|
|
|
|
var Glyphicon = _interopRequire(__webpack_require__(19));
|
|
|
|
|
|
|
|
|
|
var Grid = _interopRequire(__webpack_require__(20));
|
|
|
|
|
|
|
|
|
|
var Input = _interopRequire(__webpack_require__(21));
|
|
|
|
|
|
|
|
|
|
var Interpolate = _interopRequire(__webpack_require__(22));
|
|
|
|
|
|
|
|
|
|
var Jumbotron = _interopRequire(__webpack_require__(23));
|
|
|
|
|
|
|
|
|
|
var Label = _interopRequire(__webpack_require__(24));
|
|
|
|
|
|
|
|
|
|
var ListGroup = _interopRequire(__webpack_require__(25));
|
|
|
|
|
|
|
|
|
|
var ListGroupItem = _interopRequire(__webpack_require__(26));
|
|
|
|
|
|
|
|
|
|
var MenuItem = _interopRequire(__webpack_require__(27));
|
|
|
|
|
|
|
|
|
|
var Modal = _interopRequire(__webpack_require__(28));
|
|
|
|
|
|
|
|
|
|
var Nav = _interopRequire(__webpack_require__(29));
|
|
|
|
|
|
|
|
|
|
var Navbar = _interopRequire(__webpack_require__(30));
|
|
|
|
|
|
|
|
|
|
var NavItem = _interopRequire(__webpack_require__(31));
|
|
|
|
|
|
|
|
|
|
var ModalTrigger = _interopRequire(__webpack_require__(32));
|
|
|
|
|
|
|
|
|
|
var OverlayTrigger = _interopRequire(__webpack_require__(33));
|
|
|
|
|
|
|
|
|
|
var OverlayMixin = _interopRequire(__webpack_require__(34));
|
|
|
|
|
|
|
|
|
|
var PageHeader = _interopRequire(__webpack_require__(35));
|
|
|
|
|
|
|
|
|
|
var Panel = _interopRequire(__webpack_require__(36));
|
|
|
|
|
|
|
|
|
|
var PanelGroup = _interopRequire(__webpack_require__(37));
|
|
|
|
|
|
|
|
|
|
var PageItem = _interopRequire(__webpack_require__(38));
|
|
|
|
|
|
|
|
|
|
var Pager = _interopRequire(__webpack_require__(39));
|
|
|
|
|
|
|
|
|
|
var Popover = _interopRequire(__webpack_require__(40));
|
|
|
|
|
|
|
|
|
|
var ProgressBar = _interopRequire(__webpack_require__(41));
|
|
|
|
|
|
|
|
|
|
var Row = _interopRequire(__webpack_require__(42));
|
|
|
|
|
|
|
|
|
|
var SplitButton = _interopRequire(__webpack_require__(43));
|
|
|
|
|
|
|
|
|
|
var SubNav = _interopRequire(__webpack_require__(44));
|
|
|
|
|
|
|
|
|
|
var TabbedArea = _interopRequire(__webpack_require__(45));
|
|
|
|
|
|
|
|
|
|
var Table = _interopRequire(__webpack_require__(46));
|
|
|
|
|
|
|
|
|
|
var TabPane = _interopRequire(__webpack_require__(47));
|
|
|
|
|
|
|
|
|
|
var Tooltip = _interopRequire(__webpack_require__(48));
|
|
|
|
|
|
|
|
|
|
var Well = _interopRequire(__webpack_require__(49));
|
|
|
|
|
|
|
|
|
|
var constants = _interopRequire(__webpack_require__(50));
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
Accordion: Accordion,
|
|
|
|
|
Affix: Affix,
|
|
|
|
|
AffixMixin: AffixMixin,
|
|
|
|
|
Alert: Alert,
|
|
|
|
|
BootstrapMixin: BootstrapMixin,
|
|
|
|
|
Badge: Badge,
|
|
|
|
|
Button: Button,
|
|
|
|
|
ButtonGroup: ButtonGroup,
|
|
|
|
|
ButtonToolbar: ButtonToolbar,
|
|
|
|
|
CollapsableNav: CollapsableNav,
|
|
|
|
|
Carousel: Carousel,
|
|
|
|
|
CarouselItem: CarouselItem,
|
|
|
|
|
Col: Col,
|
|
|
|
|
CollapsableMixin: CollapsableMixin,
|
|
|
|
|
DropdownButton: DropdownButton,
|
|
|
|
|
DropdownMenu: DropdownMenu,
|
|
|
|
|
DropdownStateMixin: DropdownStateMixin,
|
|
|
|
|
FadeMixin: FadeMixin,
|
|
|
|
|
Glyphicon: Glyphicon,
|
|
|
|
|
Grid: Grid,
|
|
|
|
|
Input: Input,
|
|
|
|
|
Interpolate: Interpolate,
|
|
|
|
|
Jumbotron: Jumbotron,
|
|
|
|
|
Label: Label,
|
|
|
|
|
ListGroup: ListGroup,
|
|
|
|
|
ListGroupItem: ListGroupItem,
|
|
|
|
|
MenuItem: MenuItem,
|
|
|
|
|
Modal: Modal,
|
|
|
|
|
Nav: Nav,
|
|
|
|
|
Navbar: Navbar,
|
|
|
|
|
NavItem: NavItem,
|
|
|
|
|
ModalTrigger: ModalTrigger,
|
|
|
|
|
OverlayTrigger: OverlayTrigger,
|
|
|
|
|
OverlayMixin: OverlayMixin,
|
|
|
|
|
PageHeader: PageHeader,
|
|
|
|
|
Panel: Panel,
|
|
|
|
|
PanelGroup: PanelGroup,
|
|
|
|
|
PageItem: PageItem,
|
|
|
|
|
Pager: Pager,
|
|
|
|
|
Popover: Popover,
|
|
|
|
|
ProgressBar: ProgressBar,
|
|
|
|
|
Row: Row,
|
|
|
|
|
SplitButton: SplitButton,
|
|
|
|
|
SubNav: SubNav,
|
|
|
|
|
TabbedArea: TabbedArea,
|
|
|
|
|
Table: Table,
|
|
|
|
|
TabPane: TabPane,
|
|
|
|
|
Tooltip: Tooltip,
|
|
|
|
|
Well: Well,
|
|
|
|
|
constants: constants
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 1 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var PanelGroup = _interopRequire(__webpack_require__(37));
|
|
|
|
|
|
|
|
|
|
var Accordion = React.createClass({
|
|
|
|
|
displayName: "Accordion",
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
PanelGroup,
|
|
|
|
|
_extends({}, this.props, { accordion: true }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Accordion;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 2 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var AffixMixin = _interopRequire(__webpack_require__(3));
|
|
|
|
|
|
|
|
|
|
var domUtils = _interopRequire(__webpack_require__(52));
|
|
|
|
|
|
|
|
|
|
var Affix = React.createClass({
|
|
|
|
|
displayName: "Affix",
|
|
|
|
|
|
|
|
|
|
statics: {
|
|
|
|
|
domUtils: domUtils
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
mixins: [AffixMixin],
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var holderStyle = { top: this.state.affixPositionTop };
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
className: classNames(this.props.className, this.state.affixClass),
|
|
|
|
|
style: holderStyle }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Affix;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 3 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var domUtils = _interopRequire(__webpack_require__(52));
|
|
|
|
|
|
|
|
|
|
var EventListener = _interopRequire(__webpack_require__(53));
|
|
|
|
|
|
|
|
|
|
var AffixMixin = {
|
|
|
|
|
propTypes: {
|
|
|
|
|
offset: React.PropTypes.number,
|
|
|
|
|
offsetTop: React.PropTypes.number,
|
|
|
|
|
offsetBottom: React.PropTypes.number
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getInitialState: function getInitialState() {
|
|
|
|
|
return {
|
|
|
|
|
affixClass: "affix-top"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getPinnedOffset: function getPinnedOffset(DOMNode) {
|
|
|
|
|
if (this.pinnedOffset) {
|
|
|
|
|
return this.pinnedOffset;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DOMNode.className = DOMNode.className.replace(/affix-top|affix-bottom|affix/, "");
|
|
|
|
|
DOMNode.className += DOMNode.className.length ? " affix" : "affix";
|
|
|
|
|
|
|
|
|
|
this.pinnedOffset = domUtils.getOffset(DOMNode).top - window.pageYOffset;
|
|
|
|
|
|
|
|
|
|
return this.pinnedOffset;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
checkPosition: function checkPosition() {
|
|
|
|
|
var DOMNode = undefined,
|
|
|
|
|
scrollHeight = undefined,
|
|
|
|
|
scrollTop = undefined,
|
|
|
|
|
position = undefined,
|
|
|
|
|
offsetTop = undefined,
|
|
|
|
|
offsetBottom = undefined,
|
|
|
|
|
affix = undefined,
|
|
|
|
|
affixType = undefined,
|
|
|
|
|
affixPositionTop = undefined;
|
|
|
|
|
|
|
|
|
|
// TODO: or not visible
|
|
|
|
|
if (!this.isMounted()) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DOMNode = React.findDOMNode(this);
|
|
|
|
|
scrollHeight = document.documentElement.offsetHeight;
|
|
|
|
|
scrollTop = window.pageYOffset;
|
|
|
|
|
position = domUtils.getOffset(DOMNode);
|
|
|
|
|
|
|
|
|
|
if (this.affixed === "top") {
|
|
|
|
|
position.top += scrollTop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
offsetTop = this.props.offsetTop != null ? this.props.offsetTop : this.props.offset;
|
|
|
|
|
offsetBottom = this.props.offsetBottom != null ? this.props.offsetBottom : this.props.offset;
|
|
|
|
|
|
|
|
|
|
if (offsetTop == null && offsetBottom == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (offsetTop == null) {
|
|
|
|
|
offsetTop = 0;
|
|
|
|
|
}
|
|
|
|
|
if (offsetBottom == null) {
|
|
|
|
|
offsetBottom = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.unpin != null && scrollTop + this.unpin <= position.top) {
|
|
|
|
|
affix = false;
|
|
|
|
|
} else if (offsetBottom != null && position.top + DOMNode.offsetHeight >= scrollHeight - offsetBottom) {
|
|
|
|
|
affix = "bottom";
|
|
|
|
|
} else if (offsetTop != null && scrollTop <= offsetTop) {
|
|
|
|
|
affix = "top";
|
|
|
|
|
} else {
|
|
|
|
|
affix = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.affixed === affix) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.unpin != null) {
|
|
|
|
|
DOMNode.style.top = "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
affixType = "affix" + (affix ? "-" + affix : "");
|
|
|
|
|
|
|
|
|
|
this.affixed = affix;
|
|
|
|
|
this.unpin = affix === "bottom" ? this.getPinnedOffset(DOMNode) : null;
|
|
|
|
|
|
|
|
|
|
if (affix === "bottom") {
|
|
|
|
|
DOMNode.className = DOMNode.className.replace(/affix-top|affix-bottom|affix/, "affix-bottom");
|
|
|
|
|
affixPositionTop = scrollHeight - offsetBottom - DOMNode.offsetHeight - domUtils.getOffset(DOMNode).top;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
affixClass: affixType,
|
|
|
|
|
affixPositionTop: affixPositionTop
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
checkPositionWithEventLoop: function checkPositionWithEventLoop() {
|
|
|
|
|
setTimeout(this.checkPosition, 0);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentDidMount: function componentDidMount() {
|
|
|
|
|
this._onWindowScrollListener = EventListener.listen(window, "scroll", this.checkPosition);
|
|
|
|
|
this._onDocumentClickListener = EventListener.listen(domUtils.ownerDocument(this), "click", this.checkPositionWithEventLoop);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentWillUnmount: function componentWillUnmount() {
|
|
|
|
|
if (this._onWindowScrollListener) {
|
|
|
|
|
this._onWindowScrollListener.remove();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this._onDocumentClickListener) {
|
|
|
|
|
this._onDocumentClickListener.remove();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentDidUpdate: function componentDidUpdate(prevProps, prevState) {
|
|
|
|
|
if (prevState.affixClass === this.state.affixClass) {
|
|
|
|
|
this.checkPositionWithEventLoop();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = AffixMixin;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 4 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var Alert = React.createClass({
|
|
|
|
|
displayName: "Alert",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
onDismiss: React.PropTypes.func,
|
|
|
|
|
dismissAfter: React.PropTypes.number
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "alert",
|
|
|
|
|
bsStyle: "info"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderDismissButton: function renderDismissButton() {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"button",
|
|
|
|
|
{
|
|
|
|
|
type: "button",
|
|
|
|
|
className: "close",
|
|
|
|
|
onClick: this.props.onDismiss,
|
|
|
|
|
"aria-hidden": "true" },
|
|
|
|
|
"×"
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = this.getBsClassSet();
|
|
|
|
|
var isDismissable = !!this.props.onDismiss;
|
|
|
|
|
|
|
|
|
|
classes["alert-dismissable"] = isDismissable;
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes) }),
|
|
|
|
|
isDismissable ? this.renderDismissButton() : null,
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentDidMount: function componentDidMount() {
|
|
|
|
|
if (this.props.dismissAfter && this.props.onDismiss) {
|
|
|
|
|
this.dismissTimer = setTimeout(this.props.onDismiss, this.props.dismissAfter);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentWillUnmount: function componentWillUnmount() {
|
|
|
|
|
clearTimeout(this.dismissTimer);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Alert;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 5 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var constants = _interopRequire(__webpack_require__(50));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = {
|
|
|
|
|
propTypes: {
|
|
|
|
|
bsClass: React.PropTypes.oneOf(Object.keys(constants.CLASSES)),
|
|
|
|
|
bsStyle: React.PropTypes.oneOf(Object.keys(constants.STYLES)),
|
|
|
|
|
bsSize: React.PropTypes.oneOf(Object.keys(constants.SIZES))
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getBsClassSet: function getBsClassSet() {
|
|
|
|
|
var classes = {};
|
|
|
|
|
|
|
|
|
|
var bsClass = this.props.bsClass && constants.CLASSES[this.props.bsClass];
|
|
|
|
|
if (bsClass) {
|
|
|
|
|
classes[bsClass] = true;
|
|
|
|
|
|
|
|
|
|
var prefix = bsClass + "-";
|
|
|
|
|
|
|
|
|
|
var bsSize = this.props.bsSize && constants.SIZES[this.props.bsSize];
|
|
|
|
|
if (bsSize) {
|
|
|
|
|
classes[prefix + bsSize] = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var bsStyle = this.props.bsStyle && constants.STYLES[this.props.bsStyle];
|
|
|
|
|
if (this.props.bsStyle) {
|
|
|
|
|
classes[prefix + bsStyle] = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return classes;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
prefixClass: function prefixClass(subClass) {
|
|
|
|
|
return constants.CLASSES[this.props.bsClass] + "-" + subClass;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = BootstrapMixin;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 6 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var ValidComponentChildren = _interopRequire(__webpack_require__(54));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var Badge = React.createClass({
|
|
|
|
|
displayName: "Badge",
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
pullRight: React.PropTypes.bool
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
hasContent: function hasContent() {
|
|
|
|
|
return ValidComponentChildren.hasValidComponent(this.props.children) || typeof this.props.children === "string" || typeof this.props.children === "number";
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = {
|
|
|
|
|
"pull-right": this.props.pullRight,
|
|
|
|
|
badge: this.hasContent()
|
|
|
|
|
};
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"span",
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
className: classNames(this.props.className, classes) }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Badge;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 7 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var Button = React.createClass({
|
|
|
|
|
displayName: "Button",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
active: React.PropTypes.bool,
|
|
|
|
|
disabled: React.PropTypes.bool,
|
|
|
|
|
block: React.PropTypes.bool,
|
|
|
|
|
navItem: React.PropTypes.bool,
|
|
|
|
|
navDropdown: React.PropTypes.bool,
|
|
|
|
|
componentClass: React.PropTypes.node,
|
|
|
|
|
href: React.PropTypes.string,
|
|
|
|
|
target: React.PropTypes.string
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "button",
|
|
|
|
|
bsStyle: "default",
|
|
|
|
|
type: "button"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = this.props.navDropdown ? {} : this.getBsClassSet();
|
|
|
|
|
var renderFuncName = undefined;
|
|
|
|
|
|
|
|
|
|
classes = _extends({
|
|
|
|
|
active: this.props.active,
|
|
|
|
|
"btn-block": this.props.block }, classes);
|
|
|
|
|
|
|
|
|
|
if (this.props.navItem) {
|
|
|
|
|
return this.renderNavItem(classes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
renderFuncName = this.props.href || this.props.target || this.props.navDropdown ? "renderAnchor" : "renderButton";
|
|
|
|
|
|
|
|
|
|
return this[renderFuncName](classes);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderAnchor: function renderAnchor(classes) {
|
|
|
|
|
|
|
|
|
|
var Component = this.props.componentClass || "a";
|
|
|
|
|
var href = this.props.href || "#";
|
|
|
|
|
classes.disabled = this.props.disabled;
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
Component,
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
href: href,
|
|
|
|
|
className: classNames(this.props.className, classes),
|
|
|
|
|
role: "button" }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderButton: function renderButton(classes) {
|
|
|
|
|
var Component = this.props.componentClass || "button";
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
Component,
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
className: classNames(this.props.className, classes) }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderNavItem: function renderNavItem(classes) {
|
|
|
|
|
var liClasses = {
|
|
|
|
|
active: this.props.active
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"li",
|
|
|
|
|
{ className: classNames(liClasses) },
|
|
|
|
|
this.renderAnchor(classes)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Button;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 8 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var ButtonGroup = React.createClass({
|
|
|
|
|
displayName: "ButtonGroup",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
vertical: React.PropTypes.bool,
|
|
|
|
|
justified: React.PropTypes.bool
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "button-group"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = this.getBsClassSet();
|
|
|
|
|
classes["btn-group"] = !this.props.vertical;
|
|
|
|
|
classes["btn-group-vertical"] = this.props.vertical;
|
|
|
|
|
classes["btn-group-justified"] = this.props.justified;
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
className: classNames(this.props.className, classes) }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = ButtonGroup;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 9 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var ButtonToolbar = React.createClass({
|
|
|
|
|
displayName: "ButtonToolbar",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "button-toolbar"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = this.getBsClassSet();
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
role: "toolbar",
|
|
|
|
|
className: classNames(this.props.className, classes) }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = ButtonToolbar;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 10 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var CollapsableMixin = _interopRequire(__webpack_require__(14));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var domUtils = _interopRequire(__webpack_require__(52));
|
|
|
|
|
|
|
|
|
|
var ValidComponentChildren = _interopRequire(__webpack_require__(54));
|
|
|
|
|
|
|
|
|
|
var createChainedFunction = _interopRequire(__webpack_require__(55));
|
|
|
|
|
|
|
|
|
|
var CollapsableNav = React.createClass({
|
|
|
|
|
displayName: "CollapsableNav",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin, CollapsableMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
onSelect: React.PropTypes.func,
|
|
|
|
|
activeHref: React.PropTypes.string,
|
|
|
|
|
activeKey: React.PropTypes.any,
|
|
|
|
|
collapsable: React.PropTypes.bool,
|
|
|
|
|
expanded: React.PropTypes.bool,
|
|
|
|
|
eventKey: React.PropTypes.any
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getCollapsableDOMNode: function getCollapsableDOMNode() {
|
|
|
|
|
return this.getDOMNode();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getCollapsableDimensionValue: function getCollapsableDimensionValue() {
|
|
|
|
|
var height = 0;
|
|
|
|
|
var nodes = this.refs;
|
|
|
|
|
for (var key in nodes) {
|
|
|
|
|
if (nodes.hasOwnProperty(key)) {
|
|
|
|
|
|
|
|
|
|
var n = nodes[key].getDOMNode(),
|
|
|
|
|
h = n.offsetHeight,
|
|
|
|
|
computedStyles = domUtils.getComputedStyles(n);
|
|
|
|
|
|
|
|
|
|
height += h + parseInt(computedStyles.marginTop, 10) + parseInt(computedStyles.marginBottom, 10);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return height;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
/*
|
|
|
|
|
* this.props.collapsable is set in NavBar when a eventKey is supplied.
|
|
|
|
|
*/
|
|
|
|
|
var classes = this.props.collapsable ? this.getCollapsableClassSet() : {};
|
|
|
|
|
/*
|
|
|
|
|
* prevent duplicating navbar-collapse call if passed as prop. kind of overkill... good cadidate to have check implemented as a util that can
|
|
|
|
|
* also be used elsewhere.
|
|
|
|
|
*/
|
|
|
|
|
if (this.props.className === undefined || this.props.className.split(" ").indexOf("navbar-collapse") === -2) {
|
|
|
|
|
classes["navbar-collapse"] = this.props.collapsable;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ eventKey: this.props.eventKey, className: classNames(this.props.className, classes) },
|
|
|
|
|
ValidComponentChildren.map(this.props.children, this.props.collapsable ? this.renderCollapsableNavChildren : this.renderChildren)
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getChildActiveProp: function getChildActiveProp(child) {
|
|
|
|
|
if (child.props.active) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
if (this.props.activeKey != null) {
|
|
|
|
|
if (child.props.eventKey === this.props.activeKey) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (this.props.activeHref != null) {
|
|
|
|
|
if (child.props.href === this.props.activeHref) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return child.props.active;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderChildren: function renderChildren(child, index) {
|
|
|
|
|
var key = child.key ? child.key : index;
|
|
|
|
|
return cloneElement(child, {
|
|
|
|
|
activeKey: this.props.activeKey,
|
|
|
|
|
activeHref: this.props.activeHref,
|
|
|
|
|
ref: "nocollapse_" + key,
|
|
|
|
|
key: key,
|
|
|
|
|
navItem: true
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderCollapsableNavChildren: function renderCollapsableNavChildren(child, index) {
|
|
|
|
|
var key = child.key ? child.key : index;
|
|
|
|
|
return cloneElement(child, {
|
|
|
|
|
active: this.getChildActiveProp(child),
|
|
|
|
|
activeKey: this.props.activeKey,
|
|
|
|
|
activeHref: this.props.activeHref,
|
|
|
|
|
onSelect: createChainedFunction(child.props.onSelect, this.props.onSelect),
|
|
|
|
|
ref: "collapsable_" + key,
|
|
|
|
|
key: key,
|
|
|
|
|
navItem: true
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = CollapsableNav;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 11 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var ValidComponentChildren = _interopRequire(__webpack_require__(54));
|
|
|
|
|
|
|
|
|
|
var Carousel = React.createClass({
|
|
|
|
|
displayName: "Carousel",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
slide: React.PropTypes.bool,
|
|
|
|
|
indicators: React.PropTypes.bool,
|
|
|
|
|
interval: React.PropTypes.number,
|
|
|
|
|
controls: React.PropTypes.bool,
|
|
|
|
|
pauseOnHover: React.PropTypes.bool,
|
|
|
|
|
wrap: React.PropTypes.bool,
|
|
|
|
|
onSelect: React.PropTypes.func,
|
|
|
|
|
onSlideEnd: React.PropTypes.func,
|
|
|
|
|
activeIndex: React.PropTypes.number,
|
|
|
|
|
defaultActiveIndex: React.PropTypes.number,
|
|
|
|
|
direction: React.PropTypes.oneOf(["prev", "next"])
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
slide: true,
|
|
|
|
|
interval: 5000,
|
|
|
|
|
pauseOnHover: true,
|
|
|
|
|
wrap: true,
|
|
|
|
|
indicators: true,
|
|
|
|
|
controls: true
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getInitialState: function getInitialState() {
|
|
|
|
|
return {
|
|
|
|
|
activeIndex: this.props.defaultActiveIndex == null ? 0 : this.props.defaultActiveIndex,
|
|
|
|
|
previousActiveIndex: null,
|
|
|
|
|
direction: null
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDirection: function getDirection(prevIndex, index) {
|
|
|
|
|
if (prevIndex === index) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return prevIndex > index ? "prev" : "next";
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
|
|
|
|
|
var activeIndex = this.getActiveIndex();
|
|
|
|
|
|
|
|
|
|
if (nextProps.activeIndex != null && nextProps.activeIndex !== activeIndex) {
|
|
|
|
|
clearTimeout(this.timeout);
|
|
|
|
|
this.setState({
|
|
|
|
|
previousActiveIndex: activeIndex,
|
|
|
|
|
direction: nextProps.direction != null ? nextProps.direction : this.getDirection(activeIndex, nextProps.activeIndex)
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentDidMount: function componentDidMount() {
|
|
|
|
|
this.waitForNext();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentWillUnmount: function componentWillUnmount() {
|
|
|
|
|
clearTimeout(this.timeout);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
next: function next(e) {
|
|
|
|
|
if (e) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var index = this.getActiveIndex() + 1;
|
|
|
|
|
var count = ValidComponentChildren.numberOf(this.props.children);
|
|
|
|
|
|
|
|
|
|
if (index > count - 1) {
|
|
|
|
|
if (!this.props.wrap) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
index = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.handleSelect(index, "next");
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
prev: function prev(e) {
|
|
|
|
|
if (e) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var index = this.getActiveIndex() - 1;
|
|
|
|
|
|
|
|
|
|
if (index < 0) {
|
|
|
|
|
if (!this.props.wrap) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
index = ValidComponentChildren.numberOf(this.props.children) - 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.handleSelect(index, "prev");
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
pause: function pause() {
|
|
|
|
|
this.isPaused = true;
|
|
|
|
|
clearTimeout(this.timeout);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
play: function play() {
|
|
|
|
|
this.isPaused = false;
|
|
|
|
|
this.waitForNext();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
waitForNext: function waitForNext() {
|
|
|
|
|
if (!this.isPaused && this.props.slide && this.props.interval && this.props.activeIndex == null) {
|
|
|
|
|
this.timeout = setTimeout(this.next, this.props.interval);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleMouseOver: function handleMouseOver() {
|
|
|
|
|
if (this.props.pauseOnHover) {
|
|
|
|
|
this.pause();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleMouseOut: function handleMouseOut() {
|
|
|
|
|
if (this.isPaused) {
|
|
|
|
|
this.play();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = {
|
|
|
|
|
carousel: true,
|
|
|
|
|
slide: this.props.slide
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
className: classNames(this.props.className, classes),
|
|
|
|
|
onMouseOver: this.handleMouseOver,
|
|
|
|
|
onMouseOut: this.handleMouseOut }),
|
|
|
|
|
this.props.indicators ? this.renderIndicators() : null,
|
|
|
|
|
React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: "carousel-inner", ref: "inner" },
|
|
|
|
|
ValidComponentChildren.map(this.props.children, this.renderItem)
|
|
|
|
|
),
|
|
|
|
|
this.props.controls ? this.renderControls() : null
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderPrev: function renderPrev() {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"a",
|
|
|
|
|
{ className: "left carousel-control", href: "#prev", key: 0, onClick: this.prev },
|
|
|
|
|
React.createElement("span", { className: "glyphicon glyphicon-chevron-left" })
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderNext: function renderNext() {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"a",
|
|
|
|
|
{ className: "right carousel-control", href: "#next", key: 1, onClick: this.next },
|
|
|
|
|
React.createElement("span", { className: "glyphicon glyphicon-chevron-right" })
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderControls: function renderControls() {
|
|
|
|
|
if (!this.props.wrap) {
|
|
|
|
|
var activeIndex = this.getActiveIndex();
|
|
|
|
|
var count = ValidComponentChildren.numberOf(this.props.children);
|
|
|
|
|
|
|
|
|
|
return [activeIndex !== 0 ? this.renderPrev() : null, activeIndex !== count - 1 ? this.renderNext() : null];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return [this.renderPrev(), this.renderNext()];
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderIndicator: function renderIndicator(child, index) {
|
|
|
|
|
var className = index === this.getActiveIndex() ? "active" : null;
|
|
|
|
|
|
|
|
|
|
return React.createElement("li", {
|
|
|
|
|
key: index,
|
|
|
|
|
className: className,
|
|
|
|
|
onClick: this.handleSelect.bind(this, index, null) });
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderIndicators: function renderIndicators() {
|
|
|
|
|
var indicators = [];
|
|
|
|
|
ValidComponentChildren.forEach(this.props.children, function (child, index) {
|
|
|
|
|
indicators.push(this.renderIndicator(child, index),
|
|
|
|
|
|
|
|
|
|
// Force whitespace between indicator elements, bootstrap
|
|
|
|
|
// requires this for correct spacing of elements.
|
|
|
|
|
" ");
|
|
|
|
|
}, this);
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"ol",
|
|
|
|
|
{ className: "carousel-indicators" },
|
|
|
|
|
indicators
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getActiveIndex: function getActiveIndex() {
|
|
|
|
|
return this.props.activeIndex != null ? this.props.activeIndex : this.state.activeIndex;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleItemAnimateOutEnd: function handleItemAnimateOutEnd() {
|
|
|
|
|
this.setState({
|
|
|
|
|
previousActiveIndex: null,
|
|
|
|
|
direction: null
|
|
|
|
|
}, function () {
|
|
|
|
|
this.waitForNext();
|
|
|
|
|
|
|
|
|
|
if (this.props.onSlideEnd) {
|
|
|
|
|
this.props.onSlideEnd();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderItem: function renderItem(child, index) {
|
|
|
|
|
var activeIndex = this.getActiveIndex();
|
|
|
|
|
var isActive = index === activeIndex;
|
|
|
|
|
var isPreviousActive = this.state.previousActiveIndex != null && this.state.previousActiveIndex === index && this.props.slide;
|
|
|
|
|
|
|
|
|
|
return cloneElement(child, {
|
|
|
|
|
active: isActive,
|
|
|
|
|
ref: child.ref,
|
|
|
|
|
key: child.key ? child.key : index,
|
|
|
|
|
index: index,
|
|
|
|
|
animateOut: isPreviousActive,
|
|
|
|
|
animateIn: isActive && this.state.previousActiveIndex != null && this.props.slide,
|
|
|
|
|
direction: this.state.direction,
|
|
|
|
|
onAnimateOutEnd: isPreviousActive ? this.handleItemAnimateOutEnd : null
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleSelect: function handleSelect(index, direction) {
|
|
|
|
|
clearTimeout(this.timeout);
|
|
|
|
|
|
|
|
|
|
var previousActiveIndex = this.getActiveIndex();
|
|
|
|
|
direction = direction || this.getDirection(previousActiveIndex, index);
|
|
|
|
|
|
|
|
|
|
if (this.props.onSelect) {
|
|
|
|
|
this.props.onSelect(index, direction);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.props.activeIndex == null && index !== previousActiveIndex) {
|
|
|
|
|
if (this.state.previousActiveIndex != null) {
|
|
|
|
|
// If currently animating don't activate the new index.
|
|
|
|
|
// TODO: look into queuing this canceled call and
|
|
|
|
|
// animating after the current animation has ended.
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
activeIndex: index,
|
|
|
|
|
previousActiveIndex: previousActiveIndex,
|
|
|
|
|
direction: direction
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Carousel;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 12 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var TransitionEvents = _interopRequire(__webpack_require__(56));
|
|
|
|
|
|
|
|
|
|
var CarouselItem = React.createClass({
|
|
|
|
|
displayName: "CarouselItem",
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
direction: React.PropTypes.oneOf(["prev", "next"]),
|
|
|
|
|
onAnimateOutEnd: React.PropTypes.func,
|
|
|
|
|
active: React.PropTypes.bool,
|
|
|
|
|
animateIn: React.PropTypes.bool,
|
|
|
|
|
animateOut: React.PropTypes.bool,
|
|
|
|
|
caption: React.PropTypes.node,
|
|
|
|
|
index: React.PropTypes.number
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getInitialState: function getInitialState() {
|
|
|
|
|
return {
|
|
|
|
|
direction: null
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
animation: true
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleAnimateOutEnd: function handleAnimateOutEnd() {
|
|
|
|
|
if (this.props.onAnimateOutEnd && this.isMounted()) {
|
|
|
|
|
this.props.onAnimateOutEnd(this.props.index);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
|
|
|
|
|
if (this.props.active !== nextProps.active) {
|
|
|
|
|
this.setState({
|
|
|
|
|
direction: null
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentDidUpdate: function componentDidUpdate(prevProps) {
|
|
|
|
|
if (!this.props.active && prevProps.active) {
|
|
|
|
|
TransitionEvents.addEndEventListener(React.findDOMNode(this), this.handleAnimateOutEnd);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.props.active !== prevProps.active) {
|
|
|
|
|
setTimeout(this.startAnimation, 20);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
startAnimation: function startAnimation() {
|
|
|
|
|
if (!this.isMounted()) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
direction: this.props.direction === "prev" ? "right" : "left"
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = {
|
|
|
|
|
item: true,
|
|
|
|
|
active: this.props.active && !this.props.animateIn || this.props.animateOut,
|
|
|
|
|
next: this.props.active && this.props.animateIn && this.props.direction === "next",
|
|
|
|
|
prev: this.props.active && this.props.animateIn && this.props.direction === "prev"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (this.state.direction && (this.props.animateIn || this.props.animateOut)) {
|
|
|
|
|
classes[this.state.direction] = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes) }),
|
|
|
|
|
this.props.children,
|
|
|
|
|
this.props.caption ? this.renderCaption() : null
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderCaption: function renderCaption() {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: "carousel-caption" },
|
|
|
|
|
this.props.caption
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = CarouselItem;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 13 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var constants = _interopRequire(__webpack_require__(50));
|
|
|
|
|
|
|
|
|
|
var Col = React.createClass({
|
|
|
|
|
displayName: "Col",
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
xs: React.PropTypes.number,
|
|
|
|
|
sm: React.PropTypes.number,
|
|
|
|
|
md: React.PropTypes.number,
|
|
|
|
|
lg: React.PropTypes.number,
|
|
|
|
|
xsOffset: React.PropTypes.number,
|
|
|
|
|
smOffset: React.PropTypes.number,
|
|
|
|
|
mdOffset: React.PropTypes.number,
|
|
|
|
|
lgOffset: React.PropTypes.number,
|
|
|
|
|
xsPush: React.PropTypes.number,
|
|
|
|
|
smPush: React.PropTypes.number,
|
|
|
|
|
mdPush: React.PropTypes.number,
|
|
|
|
|
lgPush: React.PropTypes.number,
|
|
|
|
|
xsPull: React.PropTypes.number,
|
|
|
|
|
smPull: React.PropTypes.number,
|
|
|
|
|
mdPull: React.PropTypes.number,
|
|
|
|
|
lgPull: React.PropTypes.number,
|
|
|
|
|
componentClass: React.PropTypes.node.isRequired
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
componentClass: "div"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var ComponentClass = this.props.componentClass;
|
|
|
|
|
var classes = {};
|
|
|
|
|
|
|
|
|
|
Object.keys(constants.SIZES).forEach(function (key) {
|
|
|
|
|
var size = constants.SIZES[key];
|
|
|
|
|
var prop = size;
|
|
|
|
|
var classPart = size + "-";
|
|
|
|
|
|
|
|
|
|
if (this.props[prop]) {
|
|
|
|
|
classes["col-" + classPart + this.props[prop]] = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
prop = size + "Offset";
|
|
|
|
|
classPart = size + "-offset-";
|
|
|
|
|
if (this.props[prop] >= 0) {
|
|
|
|
|
classes["col-" + classPart + this.props[prop]] = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
prop = size + "Push";
|
|
|
|
|
classPart = size + "-push-";
|
|
|
|
|
if (this.props[prop] >= 0) {
|
|
|
|
|
classes["col-" + classPart + this.props[prop]] = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
prop = size + "Pull";
|
|
|
|
|
classPart = size + "-pull-";
|
|
|
|
|
if (this.props[prop] >= 0) {
|
|
|
|
|
classes["col-" + classPart + this.props[prop]] = true;
|
|
|
|
|
}
|
|
|
|
|
}, this);
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
ComponentClass,
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes) }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Col;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 14 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var TransitionEvents = _interopRequire(__webpack_require__(61));
|
|
|
|
|
|
|
|
|
|
var CollapsableMixin = {
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
defaultExpanded: React.PropTypes.bool,
|
|
|
|
|
expanded: React.PropTypes.bool
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getInitialState: function getInitialState() {
|
|
|
|
|
var defaultExpanded = this.props.defaultExpanded != null ? this.props.defaultExpanded : this.props.expanded != null ? this.props.expanded : false;
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
expanded: defaultExpanded,
|
|
|
|
|
collapsing: false
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentWillUpdate: function componentWillUpdate(nextProps, nextState) {
|
|
|
|
|
var willExpanded = nextProps.expanded != null ? nextProps.expanded : nextState.expanded;
|
|
|
|
|
if (willExpanded === this.isExpanded()) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// if the expanded state is being toggled, ensure node has a dimension value
|
|
|
|
|
// this is needed for the animation to work and needs to be set before
|
|
|
|
|
// the collapsing class is applied (after collapsing is applied the in class
|
|
|
|
|
// is removed and the node's dimension will be wrong)
|
|
|
|
|
|
|
|
|
|
var node = this.getCollapsableDOMNode();
|
|
|
|
|
var dimension = this.dimension();
|
|
|
|
|
var value = "0";
|
|
|
|
|
|
|
|
|
|
if (!willExpanded) {
|
|
|
|
|
value = this.getCollapsableDimensionValue();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
node.style[dimension] = value + "px";
|
|
|
|
|
|
|
|
|
|
this._afterWillUpdate();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentDidUpdate: function componentDidUpdate(prevProps, prevState) {
|
|
|
|
|
// check if expanded is being toggled; if so, set collapsing
|
|
|
|
|
this._checkToggleCollapsing(prevProps, prevState);
|
|
|
|
|
|
|
|
|
|
// check if collapsing was turned on; if so, start animation
|
|
|
|
|
this._checkStartAnimation();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// helps enable test stubs
|
|
|
|
|
_afterWillUpdate: function _afterWillUpdate() {},
|
|
|
|
|
|
|
|
|
|
_checkStartAnimation: function _checkStartAnimation() {
|
|
|
|
|
if (!this.state.collapsing) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var node = this.getCollapsableDOMNode();
|
|
|
|
|
var dimension = this.dimension();
|
|
|
|
|
var value = this.getCollapsableDimensionValue();
|
|
|
|
|
|
|
|
|
|
// setting the dimension here starts the transition animation
|
|
|
|
|
var result = undefined;
|
|
|
|
|
if (this.isExpanded()) {
|
|
|
|
|
result = value + "px";
|
|
|
|
|
} else {
|
|
|
|
|
result = "0px";
|
|
|
|
|
}
|
|
|
|
|
node.style[dimension] = result;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
_checkToggleCollapsing: function _checkToggleCollapsing(prevProps, prevState) {
|
|
|
|
|
var wasExpanded = prevProps.expanded != null ? prevProps.expanded : prevState.expanded;
|
|
|
|
|
var isExpanded = this.isExpanded();
|
|
|
|
|
if (wasExpanded !== isExpanded) {
|
|
|
|
|
if (wasExpanded) {
|
|
|
|
|
this._handleCollapse();
|
|
|
|
|
} else {
|
|
|
|
|
this._handleExpand();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
_handleExpand: function _handleExpand() {
|
|
|
|
|
var _this = this;
|
|
|
|
|
|
|
|
|
|
var node = this.getCollapsableDOMNode();
|
|
|
|
|
var dimension = this.dimension();
|
|
|
|
|
|
|
|
|
|
var complete = function () {
|
|
|
|
|
_this._removeEndEventListener(node, complete);
|
|
|
|
|
// remove dimension value - this ensures the collapsable item can grow
|
|
|
|
|
// in dimension after initial display (such as an image loading)
|
|
|
|
|
node.style[dimension] = "";
|
|
|
|
|
_this.setState({
|
|
|
|
|
collapsing: false
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
this._addEndEventListener(node, complete);
|
|
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
collapsing: true
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
_handleCollapse: function _handleCollapse() {
|
|
|
|
|
var _this = this;
|
|
|
|
|
|
|
|
|
|
var node = this.getCollapsableDOMNode();
|
|
|
|
|
|
|
|
|
|
var complete = function () {
|
|
|
|
|
_this._removeEndEventListener(node, complete);
|
|
|
|
|
_this.setState({
|
|
|
|
|
collapsing: false
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
this._addEndEventListener(node, complete);
|
|
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
collapsing: true
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// helps enable test stubs
|
|
|
|
|
_addEndEventListener: function _addEndEventListener(node, complete) {
|
|
|
|
|
TransitionEvents.addEndEventListener(node, complete);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// helps enable test stubs
|
|
|
|
|
_removeEndEventListener: function _removeEndEventListener(node, complete) {
|
|
|
|
|
TransitionEvents.removeEndEventListener(node, complete);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
dimension: function dimension() {
|
|
|
|
|
return typeof this.getCollapsableDimension === "function" ? this.getCollapsableDimension() : "height";
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
isExpanded: function isExpanded() {
|
|
|
|
|
return this.props.expanded != null ? this.props.expanded : this.state.expanded;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getCollapsableClassSet: function getCollapsableClassSet(className) {
|
|
|
|
|
var classes = {};
|
|
|
|
|
|
|
|
|
|
if (typeof className === "string") {
|
|
|
|
|
className.split(" ").forEach(function (subClasses) {
|
|
|
|
|
if (subClasses) {
|
|
|
|
|
classes[subClasses] = true;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
classes.collapsing = this.state.collapsing;
|
|
|
|
|
classes.collapse = !this.state.collapsing;
|
|
|
|
|
classes["in"] = this.isExpanded() && !this.state.collapsing;
|
|
|
|
|
|
|
|
|
|
return classes;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = CollapsableMixin;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 15 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var createChainedFunction = _interopRequire(__webpack_require__(55));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var DropdownStateMixin = _interopRequire(__webpack_require__(17));
|
|
|
|
|
|
|
|
|
|
var Button = _interopRequire(__webpack_require__(7));
|
|
|
|
|
|
|
|
|
|
var ButtonGroup = _interopRequire(__webpack_require__(8));
|
|
|
|
|
|
|
|
|
|
var DropdownMenu = _interopRequire(__webpack_require__(16));
|
|
|
|
|
|
|
|
|
|
var ValidComponentChildren = _interopRequire(__webpack_require__(54));
|
|
|
|
|
|
|
|
|
|
var DropdownButton = React.createClass({
|
|
|
|
|
displayName: "DropdownButton",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin, DropdownStateMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
pullRight: React.PropTypes.bool,
|
|
|
|
|
dropup: React.PropTypes.bool,
|
|
|
|
|
title: React.PropTypes.node,
|
|
|
|
|
href: React.PropTypes.string,
|
|
|
|
|
onClick: React.PropTypes.func,
|
|
|
|
|
onSelect: React.PropTypes.func,
|
|
|
|
|
navItem: React.PropTypes.bool,
|
|
|
|
|
noCaret: React.PropTypes.bool
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var renderMethod = this.props.navItem ? "renderNavItem" : "renderButtonGroup";
|
|
|
|
|
|
|
|
|
|
var caret = this.props.noCaret ? null : React.createElement("span", { className: "caret" });
|
|
|
|
|
|
|
|
|
|
return this[renderMethod]([React.createElement(
|
|
|
|
|
Button,
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
ref: "dropdownButton",
|
|
|
|
|
className: "dropdown-toggle",
|
|
|
|
|
onClick: this.handleDropdownClick,
|
|
|
|
|
key: 0,
|
|
|
|
|
navDropdown: this.props.navItem,
|
|
|
|
|
navItem: null,
|
|
|
|
|
title: null,
|
|
|
|
|
pullRight: null,
|
|
|
|
|
dropup: null }),
|
|
|
|
|
this.props.title,
|
|
|
|
|
" ",
|
|
|
|
|
caret
|
|
|
|
|
), React.createElement(
|
|
|
|
|
DropdownMenu,
|
|
|
|
|
{
|
|
|
|
|
ref: "menu",
|
|
|
|
|
"aria-labelledby": this.props.id,
|
|
|
|
|
pullRight: this.props.pullRight,
|
|
|
|
|
key: 1 },
|
|
|
|
|
ValidComponentChildren.map(this.props.children, this.renderMenuItem)
|
|
|
|
|
)]);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderButtonGroup: function renderButtonGroup(children) {
|
|
|
|
|
var groupClasses = {
|
|
|
|
|
open: this.state.open,
|
|
|
|
|
dropup: this.props.dropup
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
ButtonGroup,
|
|
|
|
|
{
|
|
|
|
|
bsSize: this.props.bsSize,
|
|
|
|
|
className: classNames(this.props.className, groupClasses) },
|
|
|
|
|
children
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderNavItem: function renderNavItem(children) {
|
|
|
|
|
var classes = {
|
|
|
|
|
dropdown: true,
|
|
|
|
|
open: this.state.open,
|
|
|
|
|
dropup: this.props.dropup
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"li",
|
|
|
|
|
{ className: classNames(this.props.className, classes) },
|
|
|
|
|
children
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderMenuItem: function renderMenuItem(child, index) {
|
|
|
|
|
// Only handle the option selection if an onSelect prop has been set on the
|
|
|
|
|
// component or it's child, this allows a user not to pass an onSelect
|
|
|
|
|
// handler and have the browser preform the default action.
|
|
|
|
|
var handleOptionSelect = this.props.onSelect || child.props.onSelect ? this.handleOptionSelect : null;
|
|
|
|
|
|
|
|
|
|
return cloneElement(child, {
|
|
|
|
|
// Capture onSelect events
|
|
|
|
|
onSelect: createChainedFunction(child.props.onSelect, handleOptionSelect),
|
|
|
|
|
key: child.key ? child.key : index
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleDropdownClick: function handleDropdownClick(e) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
|
|
this.setDropdownState(!this.state.open);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleOptionSelect: function handleOptionSelect(key) {
|
|
|
|
|
if (this.props.onSelect) {
|
|
|
|
|
this.props.onSelect(key);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.setDropdownState(false);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = DropdownButton;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 16 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var createChainedFunction = _interopRequire(__webpack_require__(55));
|
|
|
|
|
|
|
|
|
|
var ValidComponentChildren = _interopRequire(__webpack_require__(54));
|
|
|
|
|
|
|
|
|
|
var DropdownMenu = React.createClass({
|
|
|
|
|
displayName: "DropdownMenu",
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
pullRight: React.PropTypes.bool,
|
|
|
|
|
onSelect: React.PropTypes.func
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = {
|
|
|
|
|
"dropdown-menu": true,
|
|
|
|
|
"dropdown-menu-right": this.props.pullRight
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"ul",
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
className: classNames(this.props.className, classes),
|
|
|
|
|
role: "menu" }),
|
|
|
|
|
ValidComponentChildren.map(this.props.children, this.renderMenuItem)
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderMenuItem: function renderMenuItem(child, index) {
|
|
|
|
|
return cloneElement(child, {
|
|
|
|
|
// Capture onSelect events
|
|
|
|
|
onSelect: createChainedFunction(child.props.onSelect, this.props.onSelect),
|
|
|
|
|
|
|
|
|
|
// Force special props to be transferred
|
|
|
|
|
key: child.key ? child.key : index
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = DropdownMenu;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 17 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var domUtils = _interopRequire(__webpack_require__(52));
|
|
|
|
|
|
|
|
|
|
var EventListener = _interopRequire(__webpack_require__(53));
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Checks whether a node is within
|
|
|
|
|
* a root nodes tree
|
|
|
|
|
*
|
|
|
|
|
* @param {DOMElement} node
|
|
|
|
|
* @param {DOMElement} root
|
|
|
|
|
* @returns {boolean}
|
|
|
|
|
*/
|
|
|
|
|
function isNodeInRoot(node, root) {
|
|
|
|
|
while (node) {
|
|
|
|
|
if (node === root) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
node = node.parentNode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var DropdownStateMixin = {
|
|
|
|
|
getInitialState: function getInitialState() {
|
|
|
|
|
return {
|
|
|
|
|
open: false
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
setDropdownState: function setDropdownState(newState, onStateChangeComplete) {
|
|
|
|
|
if (newState) {
|
|
|
|
|
this.bindRootCloseHandlers();
|
|
|
|
|
} else {
|
|
|
|
|
this.unbindRootCloseHandlers();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
open: newState
|
|
|
|
|
}, onStateChangeComplete);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleDocumentKeyUp: function handleDocumentKeyUp(e) {
|
|
|
|
|
if (e.keyCode === 27) {
|
|
|
|
|
this.setDropdownState(false);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleDocumentClick: function handleDocumentClick(e) {
|
|
|
|
|
// If the click originated from within this component
|
|
|
|
|
// don't do anything.
|
|
|
|
|
if (isNodeInRoot(e.target, React.findDOMNode(this))) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.setDropdownState(false);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
bindRootCloseHandlers: function bindRootCloseHandlers() {
|
|
|
|
|
var doc = domUtils.ownerDocument(this);
|
|
|
|
|
|
|
|
|
|
this._onDocumentClickListener = EventListener.listen(doc, "click", this.handleDocumentClick);
|
|
|
|
|
this._onDocumentKeyupListener = EventListener.listen(doc, "keyup", this.handleDocumentKeyUp);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
unbindRootCloseHandlers: function unbindRootCloseHandlers() {
|
|
|
|
|
if (this._onDocumentClickListener) {
|
|
|
|
|
this._onDocumentClickListener.remove();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this._onDocumentKeyupListener) {
|
|
|
|
|
this._onDocumentKeyupListener.remove();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentWillUnmount: function componentWillUnmount() {
|
|
|
|
|
this.unbindRootCloseHandlers();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = DropdownStateMixin;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 18 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var domUtils = _interopRequire(__webpack_require__(52));
|
|
|
|
|
|
|
|
|
|
// TODO: listen for onTransitionEnd to remove el
|
|
|
|
|
function getElementsAndSelf(root, classes) {
|
|
|
|
|
var els = root.querySelectorAll("." + classes.join("."));
|
|
|
|
|
|
|
|
|
|
els = [].map.call(els, function (e) {
|
|
|
|
|
return e;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < classes.length; i++) {
|
|
|
|
|
if (!root.className.match(new RegExp("\\b" + classes[i] + "\\b"))) {
|
|
|
|
|
return els;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
els.unshift(root);
|
|
|
|
|
return els;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
_fadeIn: function _fadeIn() {
|
|
|
|
|
var els = undefined;
|
|
|
|
|
|
|
|
|
|
if (this.isMounted()) {
|
|
|
|
|
els = getElementsAndSelf(React.findDOMNode(this), ["fade"]);
|
|
|
|
|
|
|
|
|
|
if (els.length) {
|
|
|
|
|
els.forEach(function (el) {
|
|
|
|
|
el.className += " in";
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
_fadeOut: function _fadeOut() {
|
|
|
|
|
var els = getElementsAndSelf(this._fadeOutEl, ["fade", "in"]);
|
|
|
|
|
|
|
|
|
|
if (els.length) {
|
|
|
|
|
els.forEach(function (el) {
|
|
|
|
|
el.className = el.className.replace(/\bin\b/, "");
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
setTimeout(this._handleFadeOutEnd, 300);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
_handleFadeOutEnd: function _handleFadeOutEnd() {
|
|
|
|
|
if (this._fadeOutEl && this._fadeOutEl.parentNode) {
|
|
|
|
|
this._fadeOutEl.parentNode.removeChild(this._fadeOutEl);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentDidMount: function componentDidMount() {
|
|
|
|
|
if (document.querySelectorAll) {
|
|
|
|
|
// Firefox needs delay for transition to be triggered
|
|
|
|
|
setTimeout(this._fadeIn, 20);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentWillUnmount: function componentWillUnmount() {
|
|
|
|
|
var els = getElementsAndSelf(React.findDOMNode(this), ["fade"]),
|
|
|
|
|
container = this.props.container && React.findDOMNode(this.props.container) || domUtils.ownerDocument(this).body;
|
|
|
|
|
|
|
|
|
|
if (els.length) {
|
|
|
|
|
this._fadeOutEl = document.createElement("div");
|
|
|
|
|
container.appendChild(this._fadeOutEl);
|
|
|
|
|
this._fadeOutEl.appendChild(React.findDOMNode(this).cloneNode(true));
|
|
|
|
|
// Firefox needs delay for transition to be triggered
|
|
|
|
|
setTimeout(this._fadeOut, 20);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 19 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var constants = _interopRequire(__webpack_require__(50));
|
|
|
|
|
|
|
|
|
|
var Glyphicon = React.createClass({
|
|
|
|
|
displayName: "Glyphicon",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
glyph: React.PropTypes.oneOf(constants.GLYPHS).isRequired
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "glyphicon"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = this.getBsClassSet();
|
|
|
|
|
|
|
|
|
|
classes["glyphicon-" + this.props.glyph] = true;
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"span",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes) }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Glyphicon;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 20 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var Grid = React.createClass({
|
|
|
|
|
displayName: "Grid",
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
fluid: React.PropTypes.bool,
|
|
|
|
|
componentClass: React.PropTypes.node.isRequired
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
componentClass: "div"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var ComponentClass = this.props.componentClass;
|
|
|
|
|
var className = this.props.fluid ? "container-fluid" : "container";
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
ComponentClass,
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
className: classNames(this.props.className, className) }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Grid;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 21 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var Button = _interopRequire(__webpack_require__(7));
|
|
|
|
|
|
|
|
|
|
var FormGroup = _interopRequire(__webpack_require__(57));
|
|
|
|
|
|
|
|
|
|
var Input = React.createClass({
|
|
|
|
|
displayName: "Input",
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
type: React.PropTypes.string,
|
|
|
|
|
label: React.PropTypes.node,
|
|
|
|
|
help: React.PropTypes.node,
|
|
|
|
|
addonBefore: React.PropTypes.node,
|
|
|
|
|
addonAfter: React.PropTypes.node,
|
|
|
|
|
buttonBefore: React.PropTypes.node,
|
|
|
|
|
buttonAfter: React.PropTypes.node,
|
|
|
|
|
bsSize: React.PropTypes.oneOf(["small", "medium", "large"]),
|
|
|
|
|
bsStyle: function bsStyle(props) {
|
|
|
|
|
if (props.type === "submit") {
|
|
|
|
|
// Return early if `type=submit` as the `Button` component
|
|
|
|
|
// it transfers these props to has its own propType checks.
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return React.PropTypes.oneOf(["success", "warning", "error"]).apply(null, arguments);
|
|
|
|
|
},
|
|
|
|
|
hasFeedback: React.PropTypes.bool,
|
|
|
|
|
id: React.PropTypes.string,
|
|
|
|
|
groupClassName: React.PropTypes.string,
|
|
|
|
|
wrapperClassName: React.PropTypes.string,
|
|
|
|
|
labelClassName: React.PropTypes.string,
|
|
|
|
|
multiple: React.PropTypes.bool,
|
|
|
|
|
disabled: React.PropTypes.bool,
|
|
|
|
|
value: React.PropTypes.any
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getInputDOMNode: function getInputDOMNode() {
|
|
|
|
|
return React.findDOMNode(this.refs.input);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getValue: function getValue() {
|
|
|
|
|
if (this.props.type === "static") {
|
|
|
|
|
return this.props.value;
|
|
|
|
|
} else if (this.props.type) {
|
|
|
|
|
if (this.props.type === "select" && this.props.multiple) {
|
|
|
|
|
return this.getSelectedOptions();
|
|
|
|
|
} else {
|
|
|
|
|
return this.getInputDOMNode().value;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
throw "Cannot use getValue without specifying input type.";
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getChecked: function getChecked() {
|
|
|
|
|
return this.getInputDOMNode().checked;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getSelectedOptions: function getSelectedOptions() {
|
|
|
|
|
var values = [];
|
|
|
|
|
|
|
|
|
|
Array.prototype.forEach.call(this.getInputDOMNode().getElementsByTagName("option"), function (option) {
|
|
|
|
|
if (option.selected) {
|
|
|
|
|
var value = option.getAttribute("value") || option.innerHTML;
|
|
|
|
|
|
|
|
|
|
values.push(value);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return values;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
isCheckboxOrRadio: function isCheckboxOrRadio() {
|
|
|
|
|
return this.props.type === "radio" || this.props.type === "checkbox";
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
isFile: function isFile() {
|
|
|
|
|
return this.props.type === "file";
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderInput: function renderInput() {
|
|
|
|
|
var input = null;
|
|
|
|
|
|
|
|
|
|
if (!this.props.type) {
|
|
|
|
|
return this.props.children;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (this.props.type) {
|
|
|
|
|
case "select":
|
|
|
|
|
input = React.createElement(
|
|
|
|
|
"select",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, "form-control"), ref: "input", key: "input" }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
case "textarea":
|
|
|
|
|
input = React.createElement("textarea", _extends({}, this.props, { className: classNames(this.props.className, "form-control"), ref: "input", key: "input" }));
|
|
|
|
|
break;
|
|
|
|
|
case "static":
|
|
|
|
|
input = React.createElement(
|
|
|
|
|
"p",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, "form-control-static"), ref: "input", key: "input" }),
|
|
|
|
|
this.props.value
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
case "submit":
|
|
|
|
|
input = React.createElement(Button, _extends({}, this.props, { componentClass: "input", ref: "input", key: "input" }));
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
var className = this.isCheckboxOrRadio() || this.isFile() ? "" : "form-control";
|
|
|
|
|
input = React.createElement("input", _extends({}, this.props, { className: classNames(this.props.className, className), ref: "input", key: "input" }));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return input;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderInputGroup: function renderInputGroup(children) {
|
|
|
|
|
var addonBefore = this.props.addonBefore ? React.createElement(
|
|
|
|
|
"span",
|
|
|
|
|
{ className: "input-group-addon", key: "addonBefore" },
|
|
|
|
|
this.props.addonBefore
|
|
|
|
|
) : null;
|
|
|
|
|
|
|
|
|
|
var addonAfter = this.props.addonAfter ? React.createElement(
|
|
|
|
|
"span",
|
|
|
|
|
{ className: "input-group-addon", key: "addonAfter" },
|
|
|
|
|
this.props.addonAfter
|
|
|
|
|
) : null;
|
|
|
|
|
|
|
|
|
|
var buttonBefore = this.props.buttonBefore ? React.createElement(
|
|
|
|
|
"span",
|
|
|
|
|
{ className: "input-group-btn" },
|
|
|
|
|
this.props.buttonBefore
|
|
|
|
|
) : null;
|
|
|
|
|
|
|
|
|
|
var buttonAfter = this.props.buttonAfter ? React.createElement(
|
|
|
|
|
"span",
|
|
|
|
|
{ className: "input-group-btn" },
|
|
|
|
|
this.props.buttonAfter
|
|
|
|
|
) : null;
|
|
|
|
|
|
|
|
|
|
var inputGroupClassName = undefined;
|
|
|
|
|
switch (this.props.bsSize) {
|
|
|
|
|
case "small":
|
|
|
|
|
inputGroupClassName = "input-group-sm";break;
|
|
|
|
|
case "large":
|
|
|
|
|
inputGroupClassName = "input-group-lg";break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return addonBefore || addonAfter || buttonBefore || buttonAfter ? React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: classNames(inputGroupClassName, "input-group"), key: "input-group" },
|
|
|
|
|
addonBefore,
|
|
|
|
|
buttonBefore,
|
|
|
|
|
children,
|
|
|
|
|
addonAfter,
|
|
|
|
|
buttonAfter
|
|
|
|
|
) : children;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderIcon: function renderIcon() {
|
|
|
|
|
var classes = {
|
|
|
|
|
glyphicon: true,
|
|
|
|
|
"form-control-feedback": true,
|
|
|
|
|
"glyphicon-ok": this.props.bsStyle === "success",
|
|
|
|
|
"glyphicon-warning-sign": this.props.bsStyle === "warning",
|
|
|
|
|
"glyphicon-remove": this.props.bsStyle === "error"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return this.props.hasFeedback ? React.createElement("span", { className: classNames(classes), key: "icon" }) : null;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderHelp: function renderHelp() {
|
|
|
|
|
return this.props.help ? React.createElement(
|
|
|
|
|
"span",
|
|
|
|
|
{ className: "help-block", key: "help" },
|
|
|
|
|
this.props.help
|
|
|
|
|
) : null;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderCheckboxandRadioWrapper: function renderCheckboxandRadioWrapper(children) {
|
|
|
|
|
var classes = {
|
|
|
|
|
checkbox: this.props.type === "checkbox",
|
|
|
|
|
radio: this.props.type === "radio"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: classNames(classes), key: "checkboxRadioWrapper" },
|
|
|
|
|
children
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderWrapper: function renderWrapper(children) {
|
|
|
|
|
return this.props.wrapperClassName ? React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: this.props.wrapperClassName, key: "wrapper" },
|
|
|
|
|
children
|
|
|
|
|
) : children;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderLabel: function renderLabel(children) {
|
|
|
|
|
var classes = {
|
|
|
|
|
"control-label": !this.isCheckboxOrRadio()
|
|
|
|
|
};
|
|
|
|
|
classes[this.props.labelClassName] = this.props.labelClassName;
|
|
|
|
|
|
|
|
|
|
return this.props.label ? React.createElement(
|
|
|
|
|
"label",
|
|
|
|
|
{ htmlFor: this.props.id, className: classNames(classes), key: "label" },
|
|
|
|
|
children,
|
|
|
|
|
this.props.label
|
|
|
|
|
) : children;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var children = undefined;
|
|
|
|
|
|
|
|
|
|
if (this.isCheckboxOrRadio()) {
|
|
|
|
|
children = this.renderWrapper([this.renderCheckboxandRadioWrapper(this.renderLabel(this.renderInput())), this.renderHelp()]);
|
|
|
|
|
} else {
|
|
|
|
|
children = [this.renderLabel(), this.renderWrapper([this.renderInputGroup(this.renderInput()), this.renderIcon(), this.renderHelp()])];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
FormGroup,
|
|
|
|
|
this.props,
|
|
|
|
|
children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Input;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 22 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
// https://www.npmjs.org/package/react-interpolate-component
|
|
|
|
|
// TODO: Drop this in favor of es6 string interpolation
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var ValidComponentChildren = _interopRequire(__webpack_require__(54));
|
|
|
|
|
|
|
|
|
|
var assign = _interopRequire(__webpack_require__(58));
|
|
|
|
|
|
|
|
|
|
var REGEXP = /\%\((.+?)\)s/;
|
|
|
|
|
|
|
|
|
|
var Interpolate = React.createClass({
|
|
|
|
|
displayName: "Interpolate",
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
format: React.PropTypes.string
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return { component: "span" };
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var format = ValidComponentChildren.hasValidComponent(this.props.children) || typeof this.props.children === "string" ? this.props.children : this.props.format;
|
|
|
|
|
var parent = this.props.component;
|
|
|
|
|
var unsafe = this.props.unsafe === true;
|
|
|
|
|
var props = assign({}, this.props);
|
|
|
|
|
|
|
|
|
|
delete props.children;
|
|
|
|
|
delete props.format;
|
|
|
|
|
delete props.component;
|
|
|
|
|
delete props.unsafe;
|
|
|
|
|
|
|
|
|
|
if (unsafe) {
|
|
|
|
|
var content = format.split(REGEXP).reduce(function (memo, match, index) {
|
|
|
|
|
var html = undefined;
|
|
|
|
|
|
|
|
|
|
if (index % 2 === 0) {
|
|
|
|
|
html = match;
|
|
|
|
|
} else {
|
|
|
|
|
html = props[match];
|
|
|
|
|
delete props[match];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (React.isValidElement(html)) {
|
|
|
|
|
throw new Error("cannot interpolate a React component into unsafe text");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
memo += html;
|
|
|
|
|
|
|
|
|
|
return memo;
|
|
|
|
|
}, "");
|
|
|
|
|
|
|
|
|
|
props.dangerouslySetInnerHTML = { __html: content };
|
|
|
|
|
|
|
|
|
|
return React.createElement(parent, props);
|
|
|
|
|
} else {
|
|
|
|
|
var kids = format.split(REGEXP).reduce(function (memo, match, index) {
|
|
|
|
|
var child = undefined;
|
|
|
|
|
|
|
|
|
|
if (index % 2 === 0) {
|
|
|
|
|
if (match.length === 0) {
|
|
|
|
|
return memo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
child = match;
|
|
|
|
|
} else {
|
|
|
|
|
child = props[match];
|
|
|
|
|
delete props[match];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
memo.push(child);
|
|
|
|
|
|
|
|
|
|
return memo;
|
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
|
|
return React.createElement(parent, props, kids);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Interpolate;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 23 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var Jumbotron = React.createClass({
|
|
|
|
|
displayName: "Jumbotron",
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, "jumbotron") }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Jumbotron;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 24 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var Label = React.createClass({
|
|
|
|
|
displayName: "Label",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "label",
|
|
|
|
|
bsStyle: "default"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = this.getBsClassSet();
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"span",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes) }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Label;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 25 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
|
|
|
|
|
|
|
|
|
var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
|
|
|
|
|
|
|
|
|
|
var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var ValidComponentChildren = _interopRequire(__webpack_require__(54));
|
|
|
|
|
|
|
|
|
|
var ListGroup = (function (_React$Component) {
|
|
|
|
|
function ListGroup() {
|
|
|
|
|
_classCallCheck(this, ListGroup);
|
|
|
|
|
|
|
|
|
|
if (_React$Component != null) {
|
|
|
|
|
_React$Component.apply(this, arguments);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_inherits(ListGroup, _React$Component);
|
|
|
|
|
|
|
|
|
|
_createClass(ListGroup, {
|
|
|
|
|
render: {
|
|
|
|
|
value: function render() {
|
|
|
|
|
var items = ValidComponentChildren.map(this.props.children, function (item, index) {
|
|
|
|
|
return cloneElement(item, { key: item.key ? item.key : index });
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: classNames(this.props.className, "list-group") },
|
|
|
|
|
items
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return ListGroup;
|
|
|
|
|
})(React.Component);
|
|
|
|
|
|
|
|
|
|
ListGroup.propTypes = {
|
|
|
|
|
className: React.PropTypes.string
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = ListGroup;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 26 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var ListGroupItem = React.createClass({
|
|
|
|
|
displayName: "ListGroupItem",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
bsStyle: React.PropTypes.oneOf(["danger", "info", "success", "warning"]),
|
|
|
|
|
active: React.PropTypes.any,
|
|
|
|
|
disabled: React.PropTypes.any,
|
|
|
|
|
header: React.PropTypes.node,
|
|
|
|
|
onClick: React.PropTypes.func,
|
|
|
|
|
eventKey: React.PropTypes.any,
|
|
|
|
|
href: React.PropTypes.string,
|
|
|
|
|
target: React.PropTypes.string
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "list-group-item"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = this.getBsClassSet();
|
|
|
|
|
|
|
|
|
|
classes.active = this.props.active;
|
|
|
|
|
classes.disabled = this.props.disabled;
|
|
|
|
|
|
|
|
|
|
if (this.props.href || this.props.target || this.props.onClick) {
|
|
|
|
|
return this.renderAnchor(classes);
|
|
|
|
|
} else {
|
|
|
|
|
return this.renderSpan(classes);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderSpan: function renderSpan(classes) {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"span",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes) }),
|
|
|
|
|
this.props.header ? this.renderStructuredContent() : this.props.children
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderAnchor: function renderAnchor(classes) {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"a",
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
className: classNames(this.props.className, classes)
|
|
|
|
|
}),
|
|
|
|
|
this.props.header ? this.renderStructuredContent() : this.props.children
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderStructuredContent: function renderStructuredContent() {
|
|
|
|
|
var header = undefined;
|
|
|
|
|
if (React.isValidElement(this.props.header)) {
|
|
|
|
|
header = cloneElement(this.props.header, {
|
|
|
|
|
key: "header",
|
|
|
|
|
className: classNames(this.props.header.props.className, "list-group-item-heading")
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
header = React.createElement(
|
|
|
|
|
"h4",
|
|
|
|
|
{ key: "header", className: "list-group-item-heading" },
|
|
|
|
|
this.props.header
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var content = React.createElement(
|
|
|
|
|
"p",
|
|
|
|
|
{ key: "content", className: "list-group-item-text" },
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return [header, content];
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = ListGroupItem;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 27 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var MenuItem = React.createClass({
|
|
|
|
|
displayName: "MenuItem",
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
header: React.PropTypes.bool,
|
|
|
|
|
divider: React.PropTypes.bool,
|
|
|
|
|
href: React.PropTypes.string,
|
|
|
|
|
title: React.PropTypes.string,
|
|
|
|
|
target: React.PropTypes.string,
|
|
|
|
|
onSelect: React.PropTypes.func,
|
|
|
|
|
eventKey: React.PropTypes.any
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
href: "#"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleClick: function handleClick(e) {
|
|
|
|
|
if (this.props.onSelect) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
this.props.onSelect(this.props.eventKey, this.props.href, this.props.target);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderAnchor: function renderAnchor() {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"a",
|
|
|
|
|
{ onClick: this.handleClick, href: this.props.href, target: this.props.target, title: this.props.title, tabIndex: "-1" },
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = {
|
|
|
|
|
"dropdown-header": this.props.header,
|
|
|
|
|
divider: this.props.divider
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var children = null;
|
|
|
|
|
if (this.props.header) {
|
|
|
|
|
children = this.props.children;
|
|
|
|
|
} else if (!this.props.divider) {
|
|
|
|
|
children = this.renderAnchor();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"li",
|
|
|
|
|
_extends({}, this.props, { role: "presentation", title: null, href: null,
|
|
|
|
|
className: classNames(this.props.className, classes) }),
|
|
|
|
|
children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = MenuItem;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 28 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var FadeMixin = _interopRequire(__webpack_require__(18));
|
|
|
|
|
|
|
|
|
|
var domUtils = _interopRequire(__webpack_require__(52));
|
|
|
|
|
|
|
|
|
|
var EventListener = _interopRequire(__webpack_require__(53));
|
|
|
|
|
|
|
|
|
|
// TODO:
|
|
|
|
|
// - aria-labelledby
|
|
|
|
|
// - Add `modal-body` div if only one child passed in that doesn't already have it
|
|
|
|
|
// - Tests
|
|
|
|
|
|
|
|
|
|
var Modal = React.createClass({
|
|
|
|
|
displayName: "Modal",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin, FadeMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
title: React.PropTypes.node,
|
|
|
|
|
backdrop: React.PropTypes.oneOf(["static", true, false]),
|
|
|
|
|
keyboard: React.PropTypes.bool,
|
|
|
|
|
closeButton: React.PropTypes.bool,
|
|
|
|
|
animation: React.PropTypes.bool,
|
|
|
|
|
onRequestHide: React.PropTypes.func.isRequired
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "modal",
|
|
|
|
|
backdrop: true,
|
|
|
|
|
keyboard: true,
|
|
|
|
|
animation: true,
|
|
|
|
|
closeButton: true
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var modalStyle = { display: "block" };
|
|
|
|
|
var dialogClasses = this.getBsClassSet();
|
|
|
|
|
delete dialogClasses.modal;
|
|
|
|
|
dialogClasses["modal-dialog"] = true;
|
|
|
|
|
|
|
|
|
|
var classes = {
|
|
|
|
|
modal: true,
|
|
|
|
|
fade: this.props.animation,
|
|
|
|
|
"in": !this.props.animation || !document.querySelectorAll
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var modal = React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
title: null,
|
|
|
|
|
tabIndex: "-1",
|
|
|
|
|
role: "dialog",
|
|
|
|
|
style: modalStyle,
|
|
|
|
|
className: classNames(this.props.className, classes),
|
|
|
|
|
onClick: this.props.backdrop === true ? this.handleBackdropClick : null,
|
|
|
|
|
ref: "modal" }),
|
|
|
|
|
React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: classNames(dialogClasses) },
|
|
|
|
|
React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: "modal-content", style: { overflow: "hidden" } },
|
|
|
|
|
this.props.title ? this.renderHeader() : null,
|
|
|
|
|
this.props.children
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return this.props.backdrop ? this.renderBackdrop(modal) : modal;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderBackdrop: function renderBackdrop(modal) {
|
|
|
|
|
var classes = {
|
|
|
|
|
"modal-backdrop": true,
|
|
|
|
|
fade: this.props.animation
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
classes["in"] = !this.props.animation || !document.querySelectorAll;
|
|
|
|
|
|
|
|
|
|
var onClick = this.props.backdrop === true ? this.handleBackdropClick : null;
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
null,
|
|
|
|
|
React.createElement("div", { className: classNames(classes), ref: "backdrop", onClick: onClick }),
|
|
|
|
|
modal
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderHeader: function renderHeader() {
|
|
|
|
|
var closeButton = undefined;
|
|
|
|
|
if (this.props.closeButton) {
|
|
|
|
|
closeButton = React.createElement(
|
|
|
|
|
"button",
|
|
|
|
|
{ type: "button", className: "close", "aria-hidden": "true", onClick: this.props.onRequestHide },
|
|
|
|
|
"×"
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var style = this.props.bsStyle;
|
|
|
|
|
var classes = {
|
|
|
|
|
"modal-header": true
|
|
|
|
|
};
|
|
|
|
|
classes["bg-" + style] = style;
|
|
|
|
|
classes["text-" + style] = style;
|
|
|
|
|
|
|
|
|
|
var className = classNames(classes);
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: className },
|
|
|
|
|
closeButton,
|
|
|
|
|
this.renderTitle()
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderTitle: function renderTitle() {
|
|
|
|
|
return React.isValidElement(this.props.title) ? this.props.title : React.createElement(
|
|
|
|
|
"h4",
|
|
|
|
|
{ className: "modal-title" },
|
|
|
|
|
this.props.title
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
iosClickHack: function iosClickHack() {
|
|
|
|
|
// IOS only allows click events to be delegated to the document on elements
|
|
|
|
|
// it considers 'clickable' - anchors, buttons, etc. We fake a click handler on the
|
|
|
|
|
// DOM nodes themselves. Remove if handled by React: https://github.com/facebook/react/issues/1169
|
|
|
|
|
React.findDOMNode(this.refs.modal).onclick = function () {};
|
|
|
|
|
React.findDOMNode(this.refs.backdrop).onclick = function () {};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentDidMount: function componentDidMount() {
|
|
|
|
|
this._onDocumentKeyupListener = EventListener.listen(domUtils.ownerDocument(this), "keyup", this.handleDocumentKeyUp);
|
|
|
|
|
|
|
|
|
|
var container = this.props.container && React.findDOMNode(this.props.container) || domUtils.ownerDocument(this).body;
|
|
|
|
|
container.className += container.className.length ? " modal-open" : "modal-open";
|
|
|
|
|
|
|
|
|
|
if (this.props.backdrop) {
|
|
|
|
|
this.iosClickHack();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentDidUpdate: function componentDidUpdate(prevProps) {
|
|
|
|
|
if (this.props.backdrop && this.props.backdrop !== prevProps.backdrop) {
|
|
|
|
|
this.iosClickHack();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentWillUnmount: function componentWillUnmount() {
|
|
|
|
|
this._onDocumentKeyupListener.remove();
|
|
|
|
|
var container = this.props.container && React.findDOMNode(this.props.container) || domUtils.ownerDocument(this).body;
|
|
|
|
|
container.className = container.className.replace(/ ?modal-open/, "");
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleBackdropClick: function handleBackdropClick(e) {
|
|
|
|
|
if (e.target !== e.currentTarget) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.props.onRequestHide();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleDocumentKeyUp: function handleDocumentKeyUp(e) {
|
|
|
|
|
if (this.props.keyboard && e.keyCode === 27) {
|
|
|
|
|
this.props.onRequestHide();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Modal;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 29 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var CollapsableMixin = _interopRequire(__webpack_require__(14));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var domUtils = _interopRequire(__webpack_require__(52));
|
|
|
|
|
|
|
|
|
|
var ValidComponentChildren = _interopRequire(__webpack_require__(54));
|
|
|
|
|
|
|
|
|
|
var createChainedFunction = _interopRequire(__webpack_require__(55));
|
|
|
|
|
|
|
|
|
|
var Nav = React.createClass({
|
|
|
|
|
displayName: "Nav",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin, CollapsableMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
activeHref: React.PropTypes.string,
|
|
|
|
|
activeKey: React.PropTypes.any,
|
|
|
|
|
bsStyle: React.PropTypes.oneOf(["tabs", "pills"]),
|
|
|
|
|
stacked: React.PropTypes.bool,
|
|
|
|
|
justified: React.PropTypes.bool,
|
|
|
|
|
onSelect: React.PropTypes.func,
|
|
|
|
|
collapsable: React.PropTypes.bool,
|
|
|
|
|
expanded: React.PropTypes.bool,
|
|
|
|
|
navbar: React.PropTypes.bool,
|
|
|
|
|
eventKey: React.PropTypes.any,
|
|
|
|
|
pullRight: React.PropTypes.bool,
|
|
|
|
|
right: React.PropTypes.bool
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "nav"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getCollapsableDOMNode: function getCollapsableDOMNode() {
|
|
|
|
|
return React.findDOMNode(this);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getCollapsableDimensionValue: function getCollapsableDimensionValue() {
|
|
|
|
|
var node = React.findDOMNode(this.refs.ul),
|
|
|
|
|
height = node.offsetHeight,
|
|
|
|
|
computedStyles = domUtils.getComputedStyles(node);
|
|
|
|
|
|
|
|
|
|
return height + parseInt(computedStyles.marginTop, 10) + parseInt(computedStyles.marginBottom, 10);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = this.props.collapsable ? this.getCollapsableClassSet() : {};
|
|
|
|
|
|
|
|
|
|
classes["navbar-collapse"] = this.props.collapsable;
|
|
|
|
|
|
|
|
|
|
if (this.props.navbar && !this.props.collapsable) {
|
|
|
|
|
return this.renderUl();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"nav",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes) }),
|
|
|
|
|
this.renderUl()
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderUl: function renderUl() {
|
|
|
|
|
var classes = this.getBsClassSet();
|
|
|
|
|
|
|
|
|
|
classes["nav-stacked"] = this.props.stacked;
|
|
|
|
|
classes["nav-justified"] = this.props.justified;
|
|
|
|
|
classes["navbar-nav"] = this.props.navbar;
|
|
|
|
|
classes["pull-right"] = this.props.pullRight;
|
|
|
|
|
classes["navbar-right"] = this.props.right;
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"ul",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes), ref: "ul" }),
|
|
|
|
|
ValidComponentChildren.map(this.props.children, this.renderNavItem)
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getChildActiveProp: function getChildActiveProp(child) {
|
|
|
|
|
if (child.props.active) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
if (this.props.activeKey != null) {
|
|
|
|
|
if (child.props.eventKey === this.props.activeKey) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (this.props.activeHref != null) {
|
|
|
|
|
if (child.props.href === this.props.activeHref) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return child.props.active;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderNavItem: function renderNavItem(child, index) {
|
|
|
|
|
return cloneElement(child, {
|
|
|
|
|
active: this.getChildActiveProp(child),
|
|
|
|
|
activeKey: this.props.activeKey,
|
|
|
|
|
activeHref: this.props.activeHref,
|
|
|
|
|
onSelect: createChainedFunction(child.props.onSelect, this.props.onSelect),
|
|
|
|
|
key: child.key ? child.key : index,
|
|
|
|
|
navItem: true
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Nav;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 30 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var ValidComponentChildren = _interopRequire(__webpack_require__(54));
|
|
|
|
|
|
|
|
|
|
var createChainedFunction = _interopRequire(__webpack_require__(55));
|
|
|
|
|
|
|
|
|
|
var Navbar = React.createClass({
|
|
|
|
|
displayName: "Navbar",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
fixedTop: React.PropTypes.bool,
|
|
|
|
|
fixedBottom: React.PropTypes.bool,
|
|
|
|
|
staticTop: React.PropTypes.bool,
|
|
|
|
|
inverse: React.PropTypes.bool,
|
|
|
|
|
fluid: React.PropTypes.bool,
|
|
|
|
|
role: React.PropTypes.string,
|
|
|
|
|
componentClass: React.PropTypes.node.isRequired,
|
|
|
|
|
brand: React.PropTypes.node,
|
|
|
|
|
toggleButton: React.PropTypes.node,
|
|
|
|
|
toggleNavKey: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.number]),
|
|
|
|
|
onToggle: React.PropTypes.func,
|
|
|
|
|
navExpanded: React.PropTypes.bool,
|
|
|
|
|
defaultNavExpanded: React.PropTypes.bool
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "navbar",
|
|
|
|
|
bsStyle: "default",
|
|
|
|
|
role: "navigation",
|
|
|
|
|
componentClass: "Nav"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getInitialState: function getInitialState() {
|
|
|
|
|
return {
|
|
|
|
|
navExpanded: this.props.defaultNavExpanded
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
shouldComponentUpdate: function shouldComponentUpdate() {
|
|
|
|
|
// Defer any updates to this component during the `onSelect` handler.
|
|
|
|
|
return !this._isChanging;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleToggle: function handleToggle() {
|
|
|
|
|
if (this.props.onToggle) {
|
|
|
|
|
this._isChanging = true;
|
|
|
|
|
this.props.onToggle();
|
|
|
|
|
this._isChanging = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
navExpanded: !this.state.navExpanded
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
isNavExpanded: function isNavExpanded() {
|
|
|
|
|
return this.props.navExpanded != null ? this.props.navExpanded : this.state.navExpanded;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = this.getBsClassSet();
|
|
|
|
|
var ComponentClass = this.props.componentClass;
|
|
|
|
|
|
|
|
|
|
classes["navbar-fixed-top"] = this.props.fixedTop;
|
|
|
|
|
classes["navbar-fixed-bottom"] = this.props.fixedBottom;
|
|
|
|
|
classes["navbar-static-top"] = this.props.staticTop;
|
|
|
|
|
classes["navbar-inverse"] = this.props.inverse;
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
ComponentClass,
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes) }),
|
|
|
|
|
React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: this.props.fluid ? "container-fluid" : "container" },
|
|
|
|
|
this.props.brand || this.props.toggleButton || this.props.toggleNavKey != null ? this.renderHeader() : null,
|
|
|
|
|
ValidComponentChildren.map(this.props.children, this.renderChild)
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderChild: function renderChild(child, index) {
|
|
|
|
|
return cloneElement(child, {
|
|
|
|
|
navbar: true,
|
|
|
|
|
collapsable: this.props.toggleNavKey != null && this.props.toggleNavKey === child.props.eventKey,
|
|
|
|
|
expanded: this.props.toggleNavKey != null && this.props.toggleNavKey === child.props.eventKey && this.isNavExpanded(),
|
|
|
|
|
key: child.key ? child.key : index
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderHeader: function renderHeader() {
|
|
|
|
|
var brand = undefined;
|
|
|
|
|
|
|
|
|
|
if (this.props.brand) {
|
|
|
|
|
if (React.isValidElement(this.props.brand)) {
|
|
|
|
|
brand = cloneElement(this.props.brand, {
|
|
|
|
|
className: classNames(this.props.brand.props.className, "navbar-brand")
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
brand = React.createElement(
|
|
|
|
|
"span",
|
|
|
|
|
{ className: "navbar-brand" },
|
|
|
|
|
this.props.brand
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: "navbar-header" },
|
|
|
|
|
brand,
|
|
|
|
|
this.props.toggleButton || this.props.toggleNavKey != null ? this.renderToggleButton() : null
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderToggleButton: function renderToggleButton() {
|
|
|
|
|
var children = undefined;
|
|
|
|
|
|
|
|
|
|
if (React.isValidElement(this.props.toggleButton)) {
|
|
|
|
|
|
|
|
|
|
return cloneElement(this.props.toggleButton, {
|
|
|
|
|
className: classNames(this.props.toggleButton.props.className, "navbar-toggle"),
|
|
|
|
|
onClick: createChainedFunction(this.handleToggle, this.props.toggleButton.props.onClick)
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
children = this.props.toggleButton != null ? this.props.toggleButton : [React.createElement(
|
|
|
|
|
"span",
|
|
|
|
|
{ className: "sr-only", key: 0 },
|
|
|
|
|
"Toggle navigation"
|
|
|
|
|
), React.createElement("span", { className: "icon-bar", key: 1 }), React.createElement("span", { className: "icon-bar", key: 2 }), React.createElement("span", { className: "icon-bar", key: 3 })];
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"button",
|
|
|
|
|
{ className: "navbar-toggle", type: "button", onClick: this.handleToggle },
|
|
|
|
|
children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Navbar;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 31 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _objectWithoutProperties = function (obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var NavItem = React.createClass({
|
|
|
|
|
displayName: "NavItem",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
onSelect: React.PropTypes.func,
|
|
|
|
|
active: React.PropTypes.bool,
|
|
|
|
|
disabled: React.PropTypes.bool,
|
|
|
|
|
href: React.PropTypes.string,
|
|
|
|
|
title: React.PropTypes.node,
|
|
|
|
|
eventKey: React.PropTypes.any,
|
|
|
|
|
target: React.PropTypes.string
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
href: "#"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var _props = this.props;
|
|
|
|
|
var disabled = _props.disabled;
|
|
|
|
|
var active = _props.active;
|
|
|
|
|
var href = _props.href;
|
|
|
|
|
var title = _props.title;
|
|
|
|
|
var target = _props.target;
|
|
|
|
|
var children = _props.children;
|
|
|
|
|
|
|
|
|
|
var props = _objectWithoutProperties(_props, ["disabled", "active", "href", "title", "target", "children"]);
|
|
|
|
|
|
|
|
|
|
var classes = {
|
|
|
|
|
active: active,
|
|
|
|
|
disabled: disabled
|
|
|
|
|
};
|
|
|
|
|
var linkProps = {
|
|
|
|
|
href: href,
|
|
|
|
|
title: title,
|
|
|
|
|
target: target,
|
|
|
|
|
onClick: this.handleClick,
|
|
|
|
|
ref: "anchor"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (href === "#") {
|
|
|
|
|
linkProps.role = "button";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"li",
|
|
|
|
|
_extends({}, props, { className: classNames(props.className, classes) }),
|
|
|
|
|
React.createElement(
|
|
|
|
|
"a",
|
|
|
|
|
linkProps,
|
|
|
|
|
children
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleClick: function handleClick(e) {
|
|
|
|
|
if (this.props.onSelect) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
|
|
if (!this.props.disabled) {
|
|
|
|
|
this.props.onSelect(this.props.eventKey, this.props.href, this.props.target);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = NavItem;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 32 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var OverlayMixin = _interopRequire(__webpack_require__(34));
|
|
|
|
|
|
|
|
|
|
var createChainedFunction = _interopRequire(__webpack_require__(55));
|
|
|
|
|
|
|
|
|
|
var ModalTrigger = React.createClass({
|
|
|
|
|
displayName: "ModalTrigger",
|
|
|
|
|
|
|
|
|
|
mixins: [OverlayMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
modal: React.PropTypes.node.isRequired
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getInitialState: function getInitialState() {
|
|
|
|
|
return {
|
|
|
|
|
isOverlayShown: false
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
show: function show() {
|
|
|
|
|
this.setState({
|
|
|
|
|
isOverlayShown: true
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
hide: function hide() {
|
|
|
|
|
this.setState({
|
|
|
|
|
isOverlayShown: false
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
toggle: function toggle() {
|
|
|
|
|
this.setState({
|
|
|
|
|
isOverlayShown: !this.state.isOverlayShown
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderOverlay: function renderOverlay() {
|
|
|
|
|
if (!this.state.isOverlayShown) {
|
|
|
|
|
return React.createElement("span", null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return cloneElement(this.props.modal, {
|
|
|
|
|
onRequestHide: this.hide
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var child = React.Children.only(this.props.children);
|
|
|
|
|
return cloneElement(child, {
|
|
|
|
|
onClick: createChainedFunction(child.props.onClick, this.toggle)
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = ModalTrigger;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 33 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var OverlayMixin = _interopRequire(__webpack_require__(34));
|
|
|
|
|
|
|
|
|
|
var domUtils = _interopRequire(__webpack_require__(52));
|
|
|
|
|
|
|
|
|
|
var createChainedFunction = _interopRequire(__webpack_require__(55));
|
|
|
|
|
|
|
|
|
|
var assign = _interopRequire(__webpack_require__(58));
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Check if value one is inside or equal to the of value
|
|
|
|
|
*
|
|
|
|
|
* @param {string} one
|
|
|
|
|
* @param {string|array} of
|
|
|
|
|
* @returns {boolean}
|
|
|
|
|
*/
|
|
|
|
|
function isOneOf(one, of) {
|
|
|
|
|
if (Array.isArray(of)) {
|
|
|
|
|
return of.indexOf(one) >= 0;
|
|
|
|
|
}
|
|
|
|
|
return one === of;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var OverlayTrigger = React.createClass({
|
|
|
|
|
displayName: "OverlayTrigger",
|
|
|
|
|
|
|
|
|
|
mixins: [OverlayMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
trigger: React.PropTypes.oneOfType([React.PropTypes.oneOf(["manual", "click", "hover", "focus"]), React.PropTypes.arrayOf(React.PropTypes.oneOf(["click", "hover", "focus"]))]),
|
|
|
|
|
placement: React.PropTypes.oneOf(["top", "right", "bottom", "left"]),
|
|
|
|
|
delay: React.PropTypes.number,
|
|
|
|
|
delayShow: React.PropTypes.number,
|
|
|
|
|
delayHide: React.PropTypes.number,
|
|
|
|
|
defaultOverlayShown: React.PropTypes.bool,
|
|
|
|
|
overlay: React.PropTypes.node.isRequired
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
placement: "right",
|
|
|
|
|
trigger: ["hover", "focus"]
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getInitialState: function getInitialState() {
|
|
|
|
|
return {
|
|
|
|
|
isOverlayShown: this.props.defaultOverlayShown == null ? false : this.props.defaultOverlayShown,
|
|
|
|
|
overlayLeft: null,
|
|
|
|
|
overlayTop: null
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
show: function show() {
|
|
|
|
|
this.setState({
|
|
|
|
|
isOverlayShown: true
|
|
|
|
|
}, function () {
|
|
|
|
|
this.updateOverlayPosition();
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
hide: function hide() {
|
|
|
|
|
this.setState({
|
|
|
|
|
isOverlayShown: false
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
toggle: function toggle() {
|
|
|
|
|
if (this.state.isOverlayShown) {
|
|
|
|
|
this.hide();
|
|
|
|
|
} else {
|
|
|
|
|
this.show();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderOverlay: function renderOverlay() {
|
|
|
|
|
if (!this.state.isOverlayShown) {
|
|
|
|
|
return React.createElement("span", null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return cloneElement(this.props.overlay, {
|
|
|
|
|
onRequestHide: this.hide,
|
|
|
|
|
placement: this.props.placement,
|
|
|
|
|
positionLeft: this.state.overlayLeft,
|
|
|
|
|
positionTop: this.state.overlayTop
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
if (this.props.trigger === "manual") {
|
|
|
|
|
return React.Children.only(this.props.children);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var props = {};
|
|
|
|
|
|
|
|
|
|
if (isOneOf("click", this.props.trigger)) {
|
|
|
|
|
props.onClick = createChainedFunction(this.toggle, this.props.onClick);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isOneOf("hover", this.props.trigger)) {
|
|
|
|
|
props.onMouseOver = createChainedFunction(this.handleDelayedShow, this.props.onMouseOver);
|
|
|
|
|
props.onMouseOut = createChainedFunction(this.handleDelayedHide, this.props.onMouseOut);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isOneOf("focus", this.props.trigger)) {
|
|
|
|
|
props.onFocus = createChainedFunction(this.handleDelayedShow, this.props.onFocus);
|
|
|
|
|
props.onBlur = createChainedFunction(this.handleDelayedHide, this.props.onBlur);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return cloneElement(React.Children.only(this.props.children), props);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentWillUnmount: function componentWillUnmount() {
|
|
|
|
|
clearTimeout(this._hoverDelay);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentDidMount: function componentDidMount() {
|
|
|
|
|
if (this.props.defaultOverlayShown) {
|
|
|
|
|
this.updateOverlayPosition();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleDelayedShow: function handleDelayedShow() {
|
|
|
|
|
if (this._hoverDelay != null) {
|
|
|
|
|
clearTimeout(this._hoverDelay);
|
|
|
|
|
this._hoverDelay = null;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var delay = this.props.delayShow != null ? this.props.delayShow : this.props.delay;
|
|
|
|
|
|
|
|
|
|
if (!delay) {
|
|
|
|
|
this.show();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this._hoverDelay = setTimeout((function () {
|
|
|
|
|
this._hoverDelay = null;
|
|
|
|
|
this.show();
|
|
|
|
|
}).bind(this), delay);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleDelayedHide: function handleDelayedHide() {
|
|
|
|
|
if (this._hoverDelay != null) {
|
|
|
|
|
clearTimeout(this._hoverDelay);
|
|
|
|
|
this._hoverDelay = null;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var delay = this.props.delayHide != null ? this.props.delayHide : this.props.delay;
|
|
|
|
|
|
|
|
|
|
if (!delay) {
|
|
|
|
|
this.hide();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this._hoverDelay = setTimeout((function () {
|
|
|
|
|
this._hoverDelay = null;
|
|
|
|
|
this.hide();
|
|
|
|
|
}).bind(this), delay);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
updateOverlayPosition: function updateOverlayPosition() {
|
|
|
|
|
if (!this.isMounted()) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var pos = this.calcOverlayPosition();
|
|
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
overlayLeft: pos.left,
|
|
|
|
|
overlayTop: pos.top
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
calcOverlayPosition: function calcOverlayPosition() {
|
|
|
|
|
var childOffset = this.getPosition();
|
|
|
|
|
|
|
|
|
|
var overlayNode = this.getOverlayDOMNode();
|
|
|
|
|
var overlayHeight = overlayNode.offsetHeight;
|
|
|
|
|
var overlayWidth = overlayNode.offsetWidth;
|
|
|
|
|
|
|
|
|
|
switch (this.props.placement) {
|
|
|
|
|
case "right":
|
|
|
|
|
return {
|
|
|
|
|
top: childOffset.top + childOffset.height / 2 - overlayHeight / 2,
|
|
|
|
|
left: childOffset.left + childOffset.width
|
|
|
|
|
};
|
|
|
|
|
case "left":
|
|
|
|
|
return {
|
|
|
|
|
top: childOffset.top + childOffset.height / 2 - overlayHeight / 2,
|
|
|
|
|
left: childOffset.left - overlayWidth
|
|
|
|
|
};
|
|
|
|
|
case "top":
|
|
|
|
|
return {
|
|
|
|
|
top: childOffset.top - overlayHeight,
|
|
|
|
|
left: childOffset.left + childOffset.width / 2 - overlayWidth / 2
|
|
|
|
|
};
|
|
|
|
|
case "bottom":
|
|
|
|
|
return {
|
|
|
|
|
top: childOffset.top + childOffset.height,
|
|
|
|
|
left: childOffset.left + childOffset.width / 2 - overlayWidth / 2
|
|
|
|
|
};
|
|
|
|
|
default:
|
|
|
|
|
throw new Error("calcOverlayPosition(): No such placement of \"" + this.props.placement + "\" found.");
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getPosition: function getPosition() {
|
|
|
|
|
var node = React.findDOMNode(this);
|
|
|
|
|
var container = this.getContainerDOMNode();
|
|
|
|
|
|
|
|
|
|
var offset = container.tagName === "BODY" ? domUtils.getOffset(node) : domUtils.getPosition(node, container);
|
|
|
|
|
|
|
|
|
|
return assign({}, offset, {
|
|
|
|
|
height: node.offsetHeight,
|
|
|
|
|
width: node.offsetWidth
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = OverlayTrigger;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 34 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var CustomPropTypes = _interopRequire(__webpack_require__(59));
|
|
|
|
|
|
|
|
|
|
var domUtils = _interopRequire(__webpack_require__(52));
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
propTypes: {
|
|
|
|
|
container: CustomPropTypes.mountable
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentWillUnmount: function componentWillUnmount() {
|
|
|
|
|
this._unrenderOverlay();
|
|
|
|
|
if (this._overlayTarget) {
|
|
|
|
|
this.getContainerDOMNode().removeChild(this._overlayTarget);
|
|
|
|
|
this._overlayTarget = null;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentDidUpdate: function componentDidUpdate() {
|
|
|
|
|
this._renderOverlay();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentDidMount: function componentDidMount() {
|
|
|
|
|
this._renderOverlay();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
_mountOverlayTarget: function _mountOverlayTarget() {
|
|
|
|
|
this._overlayTarget = document.createElement("div");
|
|
|
|
|
this.getContainerDOMNode().appendChild(this._overlayTarget);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
_renderOverlay: function _renderOverlay() {
|
|
|
|
|
if (!this._overlayTarget) {
|
|
|
|
|
this._mountOverlayTarget();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var overlay = this.renderOverlay();
|
|
|
|
|
|
|
|
|
|
// Save reference to help testing
|
|
|
|
|
if (overlay !== null) {
|
|
|
|
|
this._overlayInstance = React.render(overlay, this._overlayTarget);
|
|
|
|
|
} else {
|
|
|
|
|
// Unrender if the component is null for transitions to null
|
|
|
|
|
this._unrenderOverlay();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
_unrenderOverlay: function _unrenderOverlay() {
|
|
|
|
|
React.unmountComponentAtNode(this._overlayTarget);
|
|
|
|
|
this._overlayInstance = null;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getOverlayDOMNode: function getOverlayDOMNode() {
|
|
|
|
|
if (!this.isMounted()) {
|
|
|
|
|
throw new Error("getOverlayDOMNode(): A component must be mounted to have a DOM node.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this._overlayInstance) {
|
|
|
|
|
return React.findDOMNode(this._overlayInstance);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getContainerDOMNode: function getContainerDOMNode() {
|
|
|
|
|
return React.findDOMNode(this.props.container) || domUtils.ownerDocument(this).body;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 35 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var PageHeader = React.createClass({
|
|
|
|
|
displayName: "PageHeader",
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, "page-header") }),
|
|
|
|
|
React.createElement(
|
|
|
|
|
"h1",
|
|
|
|
|
null,
|
|
|
|
|
this.props.children
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = PageHeader;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 36 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var CollapsableMixin = _interopRequire(__webpack_require__(14));
|
|
|
|
|
|
|
|
|
|
var Panel = React.createClass({
|
|
|
|
|
displayName: "Panel",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin, CollapsableMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
collapsable: React.PropTypes.bool,
|
|
|
|
|
onSelect: React.PropTypes.func,
|
|
|
|
|
header: React.PropTypes.node,
|
|
|
|
|
id: React.PropTypes.string,
|
|
|
|
|
footer: React.PropTypes.node,
|
|
|
|
|
eventKey: React.PropTypes.any
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "panel",
|
|
|
|
|
bsStyle: "default"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleSelect: function handleSelect(e) {
|
|
|
|
|
e.selected = true;
|
|
|
|
|
|
|
|
|
|
if (this.props.onSelect) {
|
|
|
|
|
this.props.onSelect(e, this.props.eventKey);
|
|
|
|
|
} else {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (e.selected) {
|
|
|
|
|
this.handleToggle();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleToggle: function handleToggle() {
|
|
|
|
|
this.setState({ expanded: !this.state.expanded });
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getCollapsableDimensionValue: function getCollapsableDimensionValue() {
|
|
|
|
|
return React.findDOMNode(this.refs.panel).scrollHeight;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getCollapsableDOMNode: function getCollapsableDOMNode() {
|
|
|
|
|
if (!this.isMounted() || !this.refs || !this.refs.panel) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return React.findDOMNode(this.refs.panel);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = this.getBsClassSet();
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
className: classNames(this.props.className, classes),
|
|
|
|
|
id: this.props.collapsable ? null : this.props.id, onSelect: null }),
|
|
|
|
|
this.renderHeading(),
|
|
|
|
|
this.props.collapsable ? this.renderCollapsableBody() : this.renderBody(),
|
|
|
|
|
this.renderFooter()
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderCollapsableBody: function renderCollapsableBody() {
|
|
|
|
|
var collapseClass = this.prefixClass("collapse");
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{
|
|
|
|
|
className: classNames(this.getCollapsableClassSet(collapseClass)),
|
|
|
|
|
id: this.props.id,
|
|
|
|
|
ref: "panel",
|
|
|
|
|
"aria-expanded": this.isExpanded() ? "true" : "false" },
|
|
|
|
|
this.renderBody()
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderBody: function renderBody() {
|
|
|
|
|
var allChildren = this.props.children;
|
|
|
|
|
var bodyElements = [];
|
|
|
|
|
var panelBodyChildren = [];
|
|
|
|
|
var bodyClass = this.prefixClass("body");
|
|
|
|
|
|
|
|
|
|
function getProps() {
|
|
|
|
|
return { key: bodyElements.length };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function addPanelChild(child) {
|
|
|
|
|
bodyElements.push(cloneElement(child, getProps()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function addPanelBody(children) {
|
|
|
|
|
bodyElements.push(React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({ className: bodyClass }, getProps()),
|
|
|
|
|
children
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function maybeRenderPanelBody() {
|
|
|
|
|
if (panelBodyChildren.length === 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
addPanelBody(panelBodyChildren);
|
|
|
|
|
panelBodyChildren = [];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Handle edge cases where we should not iterate through children.
|
|
|
|
|
if (!Array.isArray(allChildren) || allChildren.length === 0) {
|
|
|
|
|
if (this.shouldRenderFill(allChildren)) {
|
|
|
|
|
addPanelChild(allChildren);
|
|
|
|
|
} else {
|
|
|
|
|
addPanelBody(allChildren);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
allChildren.forEach((function (child) {
|
|
|
|
|
if (this.shouldRenderFill(child)) {
|
|
|
|
|
maybeRenderPanelBody();
|
|
|
|
|
|
|
|
|
|
// Separately add the filled element.
|
|
|
|
|
addPanelChild(child);
|
|
|
|
|
} else {
|
|
|
|
|
panelBodyChildren.push(child);
|
|
|
|
|
}
|
|
|
|
|
}).bind(this));
|
|
|
|
|
|
|
|
|
|
maybeRenderPanelBody();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return bodyElements;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
shouldRenderFill: function shouldRenderFill(child) {
|
|
|
|
|
return React.isValidElement(child) && child.props.fill != null;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderHeading: function renderHeading() {
|
|
|
|
|
var header = this.props.header;
|
|
|
|
|
|
|
|
|
|
if (!header) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!React.isValidElement(header) || Array.isArray(header)) {
|
|
|
|
|
header = this.props.collapsable ? this.renderCollapsableTitle(header) : header;
|
|
|
|
|
} else if (this.props.collapsable) {
|
|
|
|
|
|
|
|
|
|
header = cloneElement(header, {
|
|
|
|
|
className: classNames(this.prefixClass("title")),
|
|
|
|
|
children: this.renderAnchor(header.props.children)
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
header = cloneElement(header, {
|
|
|
|
|
className: classNames(this.prefixClass("title"))
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: this.prefixClass("heading") },
|
|
|
|
|
header
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderAnchor: function renderAnchor(header) {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"a",
|
|
|
|
|
{
|
|
|
|
|
href: "#" + (this.props.id || ""),
|
|
|
|
|
className: this.isExpanded() ? null : "collapsed",
|
|
|
|
|
"aria-expanded": this.isExpanded() ? "true" : "false",
|
|
|
|
|
onClick: this.handleSelect },
|
|
|
|
|
header
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderCollapsableTitle: function renderCollapsableTitle(header) {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"h4",
|
|
|
|
|
{ className: this.prefixClass("title") },
|
|
|
|
|
this.renderAnchor(header)
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderFooter: function renderFooter() {
|
|
|
|
|
if (!this.props.footer) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: this.prefixClass("footer") },
|
|
|
|
|
this.props.footer
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Panel;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 37 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
/* eslint react/prop-types: [1, {ignore: ["children", "className", "bsStyle"]}]*/
|
|
|
|
|
/* BootstrapMixin contains `bsStyle` type validation */
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var ValidComponentChildren = _interopRequire(__webpack_require__(54));
|
|
|
|
|
|
|
|
|
|
var PanelGroup = React.createClass({
|
|
|
|
|
displayName: "PanelGroup",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
collapsable: React.PropTypes.bool,
|
|
|
|
|
accordion: React.PropTypes.bool,
|
|
|
|
|
activeKey: React.PropTypes.any,
|
|
|
|
|
defaultActiveKey: React.PropTypes.any,
|
|
|
|
|
onSelect: React.PropTypes.func
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "panel-group"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getInitialState: function getInitialState() {
|
|
|
|
|
var defaultActiveKey = this.props.defaultActiveKey;
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
activeKey: defaultActiveKey
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = this.getBsClassSet();
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes), onSelect: null }),
|
|
|
|
|
ValidComponentChildren.map(this.props.children, this.renderPanel)
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderPanel: function renderPanel(child, index) {
|
|
|
|
|
var activeKey = this.props.activeKey != null ? this.props.activeKey : this.state.activeKey;
|
|
|
|
|
|
|
|
|
|
var props = {
|
|
|
|
|
bsStyle: child.props.bsStyle || this.props.bsStyle,
|
|
|
|
|
key: child.key ? child.key : index,
|
|
|
|
|
ref: child.ref
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (this.props.accordion) {
|
|
|
|
|
props.collapsable = true;
|
|
|
|
|
props.expanded = child.props.eventKey === activeKey;
|
|
|
|
|
props.onSelect = this.handleSelect;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return cloneElement(child, props);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
shouldComponentUpdate: function shouldComponentUpdate() {
|
|
|
|
|
// Defer any updates to this component during the `onSelect` handler.
|
|
|
|
|
return !this._isChanging;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleSelect: function handleSelect(e, key) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
|
|
if (this.props.onSelect) {
|
|
|
|
|
this._isChanging = true;
|
|
|
|
|
this.props.onSelect(key);
|
|
|
|
|
this._isChanging = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.state.activeKey === key) {
|
|
|
|
|
key = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
activeKey: key
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = PanelGroup;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 38 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var PageItem = React.createClass({
|
|
|
|
|
displayName: "PageItem",
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
href: React.PropTypes.string,
|
|
|
|
|
target: React.PropTypes.string,
|
|
|
|
|
title: React.PropTypes.string,
|
|
|
|
|
disabled: React.PropTypes.bool,
|
|
|
|
|
previous: React.PropTypes.bool,
|
|
|
|
|
next: React.PropTypes.bool,
|
|
|
|
|
onSelect: React.PropTypes.func,
|
|
|
|
|
eventKey: React.PropTypes.any
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
href: "#"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = {
|
|
|
|
|
disabled: this.props.disabled,
|
|
|
|
|
previous: this.props.previous,
|
|
|
|
|
next: this.props.next
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"li",
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
className: classNames(this.props.className, classes) }),
|
|
|
|
|
React.createElement(
|
|
|
|
|
"a",
|
|
|
|
|
{
|
|
|
|
|
href: this.props.href,
|
|
|
|
|
title: this.props.title,
|
|
|
|
|
target: this.props.target,
|
|
|
|
|
onClick: this.handleSelect,
|
|
|
|
|
ref: "anchor" },
|
|
|
|
|
this.props.children
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleSelect: function handleSelect(e) {
|
|
|
|
|
if (this.props.onSelect) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
|
|
if (!this.props.disabled) {
|
|
|
|
|
this.props.onSelect(this.props.eventKey, this.props.href, this.props.target);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = PageItem;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 39 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var ValidComponentChildren = _interopRequire(__webpack_require__(54));
|
|
|
|
|
|
|
|
|
|
var createChainedFunction = _interopRequire(__webpack_require__(55));
|
|
|
|
|
|
|
|
|
|
var Pager = React.createClass({
|
|
|
|
|
displayName: "Pager",
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
onSelect: React.PropTypes.func
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"ul",
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
className: classNames(this.props.className, "pager") }),
|
|
|
|
|
ValidComponentChildren.map(this.props.children, this.renderPageItem)
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderPageItem: function renderPageItem(child, index) {
|
|
|
|
|
return cloneElement(child, {
|
|
|
|
|
onSelect: createChainedFunction(child.props.onSelect, this.props.onSelect),
|
|
|
|
|
key: child.key ? child.key : index
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Pager;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 40 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _defineProperty = function (obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var Popover = React.createClass({
|
|
|
|
|
displayName: "Popover",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
placement: React.PropTypes.oneOf(["top", "right", "bottom", "left"]),
|
|
|
|
|
positionLeft: React.PropTypes.number,
|
|
|
|
|
positionTop: React.PropTypes.number,
|
|
|
|
|
arrowOffsetLeft: React.PropTypes.number,
|
|
|
|
|
arrowOffsetTop: React.PropTypes.number,
|
|
|
|
|
title: React.PropTypes.node
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
placement: "right"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var _this = this;
|
|
|
|
|
|
|
|
|
|
var classes = (function () {
|
|
|
|
|
var _classes = {
|
|
|
|
|
popover: true };
|
|
|
|
|
|
|
|
|
|
_defineProperty(_classes, _this.props.placement, true);
|
|
|
|
|
|
|
|
|
|
_defineProperty(_classes, "in", _this.props.positionLeft != null || _this.props.positionTop != null);
|
|
|
|
|
|
|
|
|
|
return _classes;
|
|
|
|
|
})();
|
|
|
|
|
|
|
|
|
|
var style = {
|
|
|
|
|
left: this.props.positionLeft,
|
|
|
|
|
top: this.props.positionTop,
|
|
|
|
|
display: "block"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var arrowStyle = {
|
|
|
|
|
left: this.props.arrowOffsetLeft,
|
|
|
|
|
top: this.props.arrowOffsetTop
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes), style: style, title: null }),
|
|
|
|
|
React.createElement("div", { className: "arrow", style: arrowStyle }),
|
|
|
|
|
this.props.title ? this.renderTitle() : null,
|
|
|
|
|
React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: "popover-content" },
|
|
|
|
|
this.props.children
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderTitle: function renderTitle() {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"h3",
|
|
|
|
|
{ className: "popover-title" },
|
|
|
|
|
this.props.title
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Popover;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 41 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var Interpolate = _interopRequire(__webpack_require__(22));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var ValidComponentChildren = _interopRequire(__webpack_require__(54));
|
|
|
|
|
|
|
|
|
|
var ProgressBar = React.createClass({
|
|
|
|
|
displayName: "ProgressBar",
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
min: React.PropTypes.number,
|
|
|
|
|
now: React.PropTypes.number,
|
|
|
|
|
max: React.PropTypes.number,
|
|
|
|
|
label: React.PropTypes.node,
|
|
|
|
|
srOnly: React.PropTypes.bool,
|
|
|
|
|
striped: React.PropTypes.bool,
|
|
|
|
|
active: React.PropTypes.bool
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "progress-bar",
|
|
|
|
|
min: 0,
|
|
|
|
|
max: 100
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getPercentage: function getPercentage(now, min, max) {
|
|
|
|
|
return Math.ceil((now - min) / (max - min) * 100);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = {
|
|
|
|
|
progress: true
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (this.props.active) {
|
|
|
|
|
classes["progress-striped"] = true;
|
|
|
|
|
classes.active = true;
|
|
|
|
|
} else if (this.props.striped) {
|
|
|
|
|
classes["progress-striped"] = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!ValidComponentChildren.hasValidComponent(this.props.children)) {
|
|
|
|
|
if (!this.props.isChild) {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes) }),
|
|
|
|
|
this.renderProgressBar()
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
return this.renderProgressBar();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes) }),
|
|
|
|
|
ValidComponentChildren.map(this.props.children, this.renderChildBar)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderChildBar: function renderChildBar(child, index) {
|
|
|
|
|
return cloneElement(child, {
|
|
|
|
|
isChild: true,
|
|
|
|
|
key: child.key ? child.key : index
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderProgressBar: function renderProgressBar() {
|
|
|
|
|
var percentage = this.getPercentage(this.props.now, this.props.min, this.props.max);
|
|
|
|
|
|
|
|
|
|
var label = undefined;
|
|
|
|
|
|
|
|
|
|
if (typeof this.props.label === "string") {
|
|
|
|
|
label = this.renderLabel(percentage);
|
|
|
|
|
} else if (this.props.label) {
|
|
|
|
|
label = this.props.label;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.props.srOnly) {
|
|
|
|
|
label = this.renderScreenReaderOnlyLabel(label);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var classes = this.getBsClassSet();
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes), role: "progressbar",
|
|
|
|
|
style: { width: percentage + "%" },
|
|
|
|
|
"aria-valuenow": this.props.now,
|
|
|
|
|
"aria-valuemin": this.props.min,
|
|
|
|
|
"aria-valuemax": this.props.max }),
|
|
|
|
|
label
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderLabel: function renderLabel(percentage) {
|
|
|
|
|
var InterpolateClass = this.props.interpolateClass || Interpolate;
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
InterpolateClass,
|
|
|
|
|
{
|
|
|
|
|
now: this.props.now,
|
|
|
|
|
min: this.props.min,
|
|
|
|
|
max: this.props.max,
|
|
|
|
|
percent: percentage,
|
|
|
|
|
bsStyle: this.props.bsStyle },
|
|
|
|
|
this.props.label
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderScreenReaderOnlyLabel: function renderScreenReaderOnlyLabel(label) {
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"span",
|
|
|
|
|
{ className: "sr-only" },
|
|
|
|
|
label
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = ProgressBar;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 42 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var Row = React.createClass({
|
|
|
|
|
displayName: "Row",
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
componentClass: React.PropTypes.node.isRequired
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
componentClass: "div"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var ComponentClass = this.props.componentClass;
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
ComponentClass,
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, "row") }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Row;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 43 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
/* eslint react/prop-types: [1, {ignore: ["children", "className", "bsSize"]}]*/
|
|
|
|
|
/* BootstrapMixin contains `bsSize` type validation */
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var DropdownStateMixin = _interopRequire(__webpack_require__(17));
|
|
|
|
|
|
|
|
|
|
var Button = _interopRequire(__webpack_require__(7));
|
|
|
|
|
|
|
|
|
|
var ButtonGroup = _interopRequire(__webpack_require__(8));
|
|
|
|
|
|
|
|
|
|
var DropdownMenu = _interopRequire(__webpack_require__(16));
|
|
|
|
|
|
|
|
|
|
var SplitButton = React.createClass({
|
|
|
|
|
displayName: "SplitButton",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin, DropdownStateMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
pullRight: React.PropTypes.bool,
|
|
|
|
|
title: React.PropTypes.node,
|
|
|
|
|
href: React.PropTypes.string,
|
|
|
|
|
id: React.PropTypes.string,
|
|
|
|
|
target: React.PropTypes.string,
|
|
|
|
|
dropdownTitle: React.PropTypes.node,
|
|
|
|
|
dropup: React.PropTypes.bool,
|
|
|
|
|
onClick: React.PropTypes.func,
|
|
|
|
|
onSelect: React.PropTypes.func,
|
|
|
|
|
disabled: React.PropTypes.bool
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
dropdownTitle: "Toggle dropdown"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var groupClasses = {
|
|
|
|
|
open: this.state.open,
|
|
|
|
|
dropup: this.props.dropup
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var button = React.createElement(
|
|
|
|
|
Button,
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
ref: "button",
|
|
|
|
|
onClick: this.handleButtonClick,
|
|
|
|
|
title: null,
|
|
|
|
|
id: null }),
|
|
|
|
|
this.props.title
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
var dropdownButton = React.createElement(
|
|
|
|
|
Button,
|
|
|
|
|
_extends({}, this.props, {
|
|
|
|
|
ref: "dropdownButton",
|
|
|
|
|
className: classNames(this.props.className, "dropdown-toggle"),
|
|
|
|
|
onClick: this.handleDropdownClick,
|
|
|
|
|
title: null,
|
|
|
|
|
href: null,
|
|
|
|
|
target: null,
|
|
|
|
|
id: null }),
|
|
|
|
|
React.createElement(
|
|
|
|
|
"span",
|
|
|
|
|
{ className: "sr-only" },
|
|
|
|
|
this.props.dropdownTitle
|
|
|
|
|
),
|
|
|
|
|
React.createElement("span", { className: "caret" }),
|
|
|
|
|
React.createElement(
|
|
|
|
|
"span",
|
|
|
|
|
{ style: { letterSpacing: "-.3em" } },
|
|
|
|
|
" "
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
ButtonGroup,
|
|
|
|
|
{
|
|
|
|
|
bsSize: this.props.bsSize,
|
|
|
|
|
className: classNames(groupClasses),
|
|
|
|
|
id: this.props.id },
|
|
|
|
|
button,
|
|
|
|
|
dropdownButton,
|
|
|
|
|
React.createElement(
|
|
|
|
|
DropdownMenu,
|
|
|
|
|
{
|
|
|
|
|
ref: "menu",
|
|
|
|
|
onSelect: this.handleOptionSelect,
|
|
|
|
|
"aria-labelledby": this.props.id,
|
|
|
|
|
pullRight: this.props.pullRight },
|
|
|
|
|
this.props.children
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleButtonClick: function handleButtonClick(e) {
|
|
|
|
|
if (this.state.open) {
|
|
|
|
|
this.setDropdownState(false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.props.onClick) {
|
|
|
|
|
this.props.onClick(e, this.props.href, this.props.target);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleDropdownClick: function handleDropdownClick(e) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
|
|
this.setDropdownState(!this.state.open);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleOptionSelect: function handleOptionSelect(key) {
|
|
|
|
|
if (this.props.onSelect) {
|
|
|
|
|
this.props.onSelect(key);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.setDropdownState(false);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = SplitButton;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 44 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var ValidComponentChildren = _interopRequire(__webpack_require__(54));
|
|
|
|
|
|
|
|
|
|
var createChainedFunction = _interopRequire(__webpack_require__(55));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var SubNav = React.createClass({
|
|
|
|
|
displayName: "SubNav",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
onSelect: React.PropTypes.func,
|
|
|
|
|
active: React.PropTypes.bool,
|
|
|
|
|
activeHref: React.PropTypes.string,
|
|
|
|
|
activeKey: React.PropTypes.any,
|
|
|
|
|
disabled: React.PropTypes.bool,
|
|
|
|
|
eventKey: React.PropTypes.any,
|
|
|
|
|
href: React.PropTypes.string,
|
|
|
|
|
title: React.PropTypes.string,
|
|
|
|
|
text: React.PropTypes.node,
|
|
|
|
|
target: React.PropTypes.string
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "nav"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleClick: function handleClick(e) {
|
|
|
|
|
if (this.props.onSelect) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
|
|
if (!this.props.disabled) {
|
|
|
|
|
this.props.onSelect(this.props.eventKey, this.props.href, this.props.target);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
isActive: function isActive() {
|
|
|
|
|
return this.isChildActive(this);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
isChildActive: function isChildActive(child) {
|
|
|
|
|
var _this = this;
|
|
|
|
|
|
|
|
|
|
if (child.props.active) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.props.activeKey != null && this.props.activeKey === child.props.eventKey) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.props.activeHref != null && this.props.activeHref === child.props.href) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (child.props.children) {
|
|
|
|
|
var _ret = (function () {
|
|
|
|
|
var isActive = false;
|
|
|
|
|
|
|
|
|
|
ValidComponentChildren.forEach(child.props.children, function (grandchild) {
|
|
|
|
|
if (this.isChildActive(grandchild)) {
|
|
|
|
|
isActive = true;
|
|
|
|
|
}
|
|
|
|
|
}, _this);
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
v: isActive
|
|
|
|
|
};
|
|
|
|
|
})();
|
|
|
|
|
|
|
|
|
|
if (typeof _ret === "object") {
|
|
|
|
|
return _ret.v;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getChildActiveProp: function getChildActiveProp(child) {
|
|
|
|
|
if (child.props.active) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
if (this.props.activeKey != null) {
|
|
|
|
|
if (child.props.eventKey === this.props.activeKey) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (this.props.activeHref != null) {
|
|
|
|
|
if (child.props.href === this.props.activeHref) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return child.props.active;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = {
|
|
|
|
|
active: this.isActive(),
|
|
|
|
|
disabled: this.props.disabled
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"li",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes) }),
|
|
|
|
|
React.createElement(
|
|
|
|
|
"a",
|
|
|
|
|
{
|
|
|
|
|
href: this.props.href,
|
|
|
|
|
title: this.props.title,
|
|
|
|
|
target: this.props.target,
|
|
|
|
|
onClick: this.handleClick,
|
|
|
|
|
ref: "anchor" },
|
|
|
|
|
this.props.text
|
|
|
|
|
),
|
|
|
|
|
React.createElement(
|
|
|
|
|
"ul",
|
|
|
|
|
{ className: "nav" },
|
|
|
|
|
ValidComponentChildren.map(this.props.children, this.renderNavItem)
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderNavItem: function renderNavItem(child, index) {
|
|
|
|
|
return cloneElement(child, {
|
|
|
|
|
active: this.getChildActiveProp(child),
|
|
|
|
|
onSelect: createChainedFunction(child.props.onSelect, this.props.onSelect),
|
|
|
|
|
key: child.key ? child.key : index
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = SubNav;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 45 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var _react = __webpack_require__(51);
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(_react);
|
|
|
|
|
|
|
|
|
|
var cloneElement = _react.cloneElement;
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var ValidComponentChildren = _interopRequire(__webpack_require__(54));
|
|
|
|
|
|
|
|
|
|
var Nav = _interopRequire(__webpack_require__(29));
|
|
|
|
|
|
|
|
|
|
var NavItem = _interopRequire(__webpack_require__(31));
|
|
|
|
|
|
|
|
|
|
function getDefaultActiveKeyFromChildren(children) {
|
|
|
|
|
var defaultActiveKey = undefined;
|
|
|
|
|
|
|
|
|
|
ValidComponentChildren.forEach(children, function (child) {
|
|
|
|
|
if (defaultActiveKey == null) {
|
|
|
|
|
defaultActiveKey = child.props.eventKey;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return defaultActiveKey;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var TabbedArea = React.createClass({
|
|
|
|
|
displayName: "TabbedArea",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
activeKey: React.PropTypes.any,
|
|
|
|
|
defaultActiveKey: React.PropTypes.any,
|
|
|
|
|
bsStyle: React.PropTypes.oneOf(["tabs", "pills"]),
|
|
|
|
|
animation: React.PropTypes.bool,
|
|
|
|
|
id: React.PropTypes.string,
|
|
|
|
|
onSelect: React.PropTypes.func
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsStyle: "tabs",
|
|
|
|
|
animation: true
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getInitialState: function getInitialState() {
|
|
|
|
|
var defaultActiveKey = this.props.defaultActiveKey != null ? this.props.defaultActiveKey : getDefaultActiveKeyFromChildren(this.props.children);
|
|
|
|
|
|
|
|
|
|
// TODO: In __DEV__ mode warn via `console.warn` if no `defaultActiveKey` has
|
|
|
|
|
// been set by this point, invalid children or missing key properties are likely the cause.
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
activeKey: defaultActiveKey,
|
|
|
|
|
previousActiveKey: null
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
|
|
|
|
|
if (nextProps.activeKey != null && nextProps.activeKey !== this.props.activeKey) {
|
|
|
|
|
this.setState({
|
|
|
|
|
previousActiveKey: this.props.activeKey
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handlePaneAnimateOutEnd: function handlePaneAnimateOutEnd() {
|
|
|
|
|
this.setState({
|
|
|
|
|
previousActiveKey: null
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var activeKey = this.props.activeKey != null ? this.props.activeKey : this.state.activeKey;
|
|
|
|
|
|
|
|
|
|
function renderTabIfSet(child) {
|
|
|
|
|
return child.props.tab != null ? this.renderTab(child) : null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var nav = React.createElement(
|
|
|
|
|
Nav,
|
|
|
|
|
_extends({}, this.props, { activeKey: activeKey, onSelect: this.handleSelect, ref: "tabs" }),
|
|
|
|
|
ValidComponentChildren.map(this.props.children, renderTabIfSet, this)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
null,
|
|
|
|
|
nav,
|
|
|
|
|
React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ id: this.props.id, className: "tab-content", ref: "panes" },
|
|
|
|
|
ValidComponentChildren.map(this.props.children, this.renderPane)
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getActiveKey: function getActiveKey() {
|
|
|
|
|
return this.props.activeKey != null ? this.props.activeKey : this.state.activeKey;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderPane: function renderPane(child, index) {
|
|
|
|
|
var activeKey = this.getActiveKey();
|
|
|
|
|
|
|
|
|
|
return cloneElement(child, {
|
|
|
|
|
active: child.props.eventKey === activeKey && (this.state.previousActiveKey == null || !this.props.animation),
|
|
|
|
|
key: child.key ? child.key : index,
|
|
|
|
|
animation: this.props.animation,
|
|
|
|
|
onAnimateOutEnd: this.state.previousActiveKey != null && child.props.eventKey === this.state.previousActiveKey ? this.handlePaneAnimateOutEnd : null
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
renderTab: function renderTab(child) {
|
|
|
|
|
var key = child.props.eventKey;
|
|
|
|
|
return React.createElement(
|
|
|
|
|
NavItem,
|
|
|
|
|
{
|
|
|
|
|
ref: "tab" + key,
|
|
|
|
|
eventKey: key },
|
|
|
|
|
child.props.tab
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
shouldComponentUpdate: function shouldComponentUpdate() {
|
|
|
|
|
// Defer any updates to this component during the `onSelect` handler.
|
|
|
|
|
return !this._isChanging;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleSelect: function handleSelect(key) {
|
|
|
|
|
if (this.props.onSelect) {
|
|
|
|
|
this._isChanging = true;
|
|
|
|
|
this.props.onSelect(key);
|
|
|
|
|
this._isChanging = false;
|
|
|
|
|
} else if (key !== this.getActiveKey()) {
|
|
|
|
|
this.setState({
|
|
|
|
|
activeKey: key,
|
|
|
|
|
previousActiveKey: this.getActiveKey()
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = TabbedArea;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 46 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var Table = React.createClass({
|
|
|
|
|
displayName: "Table",
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
striped: React.PropTypes.bool,
|
|
|
|
|
bordered: React.PropTypes.bool,
|
|
|
|
|
condensed: React.PropTypes.bool,
|
|
|
|
|
hover: React.PropTypes.bool,
|
|
|
|
|
responsive: React.PropTypes.bool
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = {
|
|
|
|
|
table: true,
|
|
|
|
|
"table-striped": this.props.striped,
|
|
|
|
|
"table-bordered": this.props.bordered,
|
|
|
|
|
"table-condensed": this.props.condensed,
|
|
|
|
|
"table-hover": this.props.hover
|
|
|
|
|
};
|
|
|
|
|
var table = React.createElement(
|
|
|
|
|
"table",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes) }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return this.props.responsive ? React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: "table-responsive" },
|
|
|
|
|
table
|
|
|
|
|
) : table;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Table;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 47 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var TransitionEvents = _interopRequire(__webpack_require__(56));
|
|
|
|
|
|
|
|
|
|
var TabPane = React.createClass({
|
|
|
|
|
displayName: "TabPane",
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
active: React.PropTypes.bool,
|
|
|
|
|
animation: React.PropTypes.bool,
|
|
|
|
|
onAnimateOutEnd: React.PropTypes.func
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
animation: true
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getInitialState: function getInitialState() {
|
|
|
|
|
return {
|
|
|
|
|
animateIn: false,
|
|
|
|
|
animateOut: false
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
|
|
|
|
|
if (this.props.animation) {
|
|
|
|
|
if (!this.state.animateIn && nextProps.active && !this.props.active) {
|
|
|
|
|
this.setState({
|
|
|
|
|
animateIn: true
|
|
|
|
|
});
|
|
|
|
|
} else if (!this.state.animateOut && !nextProps.active && this.props.active) {
|
|
|
|
|
this.setState({
|
|
|
|
|
animateOut: true
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
componentDidUpdate: function componentDidUpdate() {
|
|
|
|
|
if (this.state.animateIn) {
|
|
|
|
|
setTimeout(this.startAnimateIn, 0);
|
|
|
|
|
}
|
|
|
|
|
if (this.state.animateOut) {
|
|
|
|
|
TransitionEvents.addEndEventListener(React.findDOMNode(this), this.stopAnimateOut);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
startAnimateIn: function startAnimateIn() {
|
|
|
|
|
if (this.isMounted()) {
|
|
|
|
|
this.setState({
|
|
|
|
|
animateIn: false
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
stopAnimateOut: function stopAnimateOut() {
|
|
|
|
|
if (this.isMounted()) {
|
|
|
|
|
this.setState({
|
|
|
|
|
animateOut: false
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (this.props.onAnimateOutEnd) {
|
|
|
|
|
this.props.onAnimateOutEnd();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = {
|
|
|
|
|
"tab-pane": true,
|
|
|
|
|
fade: true,
|
|
|
|
|
active: this.props.active || this.state.animateOut,
|
|
|
|
|
"in": this.props.active && !this.state.animateIn
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes) }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = TabPane;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 48 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _defineProperty = function (obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var Tooltip = React.createClass({
|
|
|
|
|
displayName: "Tooltip",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
propTypes: {
|
|
|
|
|
placement: React.PropTypes.oneOf(["top", "right", "bottom", "left"]),
|
|
|
|
|
positionLeft: React.PropTypes.number,
|
|
|
|
|
positionTop: React.PropTypes.number,
|
|
|
|
|
arrowOffsetLeft: React.PropTypes.number,
|
|
|
|
|
arrowOffsetTop: React.PropTypes.number
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
placement: "right"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var _this = this;
|
|
|
|
|
|
|
|
|
|
var classes = (function () {
|
|
|
|
|
var _classes = {
|
|
|
|
|
tooltip: true };
|
|
|
|
|
|
|
|
|
|
_defineProperty(_classes, _this.props.placement, true);
|
|
|
|
|
|
|
|
|
|
_defineProperty(_classes, "in", _this.props.positionLeft != null || _this.props.positionTop != null);
|
|
|
|
|
|
|
|
|
|
return _classes;
|
|
|
|
|
})();
|
|
|
|
|
|
|
|
|
|
var style = {
|
|
|
|
|
left: this.props.positionLeft,
|
|
|
|
|
top: this.props.positionTop
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var arrowStyle = {
|
|
|
|
|
left: this.props.arrowOffsetLeft,
|
|
|
|
|
top: this.props.arrowOffsetTop
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes), style: style }),
|
|
|
|
|
React.createElement("div", { className: "tooltip-arrow", style: arrowStyle }),
|
|
|
|
|
React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: "tooltip-inner" },
|
|
|
|
|
this.props.children
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Tooltip;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 49 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var BootstrapMixin = _interopRequire(__webpack_require__(5));
|
|
|
|
|
|
|
|
|
|
var Well = React.createClass({
|
|
|
|
|
displayName: "Well",
|
|
|
|
|
|
|
|
|
|
mixins: [BootstrapMixin],
|
|
|
|
|
|
|
|
|
|
getDefaultProps: function getDefaultProps() {
|
|
|
|
|
return {
|
|
|
|
|
bsClass: "well"
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
render: function render() {
|
|
|
|
|
var classes = this.getBsClassSet();
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
_extends({}, this.props, { className: classNames(this.props.className, classes) }),
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = Well;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 50 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
CLASSES: {
|
|
|
|
|
alert: "alert",
|
|
|
|
|
button: "btn",
|
|
|
|
|
"button-group": "btn-group",
|
|
|
|
|
"button-toolbar": "btn-toolbar",
|
|
|
|
|
column: "col",
|
|
|
|
|
"input-group": "input-group",
|
|
|
|
|
form: "form",
|
|
|
|
|
glyphicon: "glyphicon",
|
|
|
|
|
label: "label",
|
|
|
|
|
"list-group-item": "list-group-item",
|
|
|
|
|
panel: "panel",
|
|
|
|
|
"panel-group": "panel-group",
|
|
|
|
|
"progress-bar": "progress-bar",
|
|
|
|
|
nav: "nav",
|
|
|
|
|
navbar: "navbar",
|
|
|
|
|
modal: "modal",
|
|
|
|
|
row: "row",
|
|
|
|
|
well: "well"
|
|
|
|
|
},
|
|
|
|
|
STYLES: {
|
|
|
|
|
"default": "default",
|
|
|
|
|
primary: "primary",
|
|
|
|
|
success: "success",
|
|
|
|
|
info: "info",
|
|
|
|
|
warning: "warning",
|
|
|
|
|
danger: "danger",
|
|
|
|
|
link: "link",
|
|
|
|
|
inline: "inline",
|
|
|
|
|
tabs: "tabs",
|
|
|
|
|
pills: "pills"
|
|
|
|
|
},
|
|
|
|
|
SIZES: {
|
|
|
|
|
large: "lg",
|
|
|
|
|
medium: "md",
|
|
|
|
|
small: "sm",
|
|
|
|
|
xsmall: "xs"
|
|
|
|
|
},
|
|
|
|
|
GLYPHS: ["asterisk", "plus", "euro", "eur", "minus", "cloud", "envelope", "pencil", "glass", "music", "search", "heart", "star", "star-empty", "user", "film", "th-large", "th", "th-list", "ok", "remove", "zoom-in", "zoom-out", "off", "signal", "cog", "trash", "home", "file", "time", "road", "download-alt", "download", "upload", "inbox", "play-circle", "repeat", "refresh", "list-alt", "lock", "flag", "headphones", "volume-off", "volume-down", "volume-up", "qrcode", "barcode", "tag", "tags", "book", "bookmark", "print", "camera", "font", "bold", "italic", "text-height", "text-width", "align-left", "align-center", "align-right", "align-justify", "list", "indent-left", "indent-right", "facetime-video", "picture", "map-marker", "adjust", "tint", "edit", "share", "check", "move", "step-backward", "fast-backward", "backward", "play", "pause", "stop", "forward", "fast-forward", "step-forward", "eject", "chevron-left", "chevron-right", "plus-sign", "minus-sign", "remove-sign", "ok-sign", "question-sign", "info-sign", "screenshot", "remove-circle", "ok-circle", "ban-circle", "arrow-left", "arrow-right", "arrow-up", "arrow-down", "share-alt", "resize-full", "resize-small", "exclamation-sign", "gift", "leaf", "fire", "eye-open", "eye-close", "warning-sign", "plane", "calendar", "random", "comment", "magnet", "chevron-up", "chevron-down", "retweet", "shopping-cart", "folder-close", "folder-open", "resize-vertical", "resize-horizontal", "hdd", "bullhorn", "bell", "certificate", "thumbs-up", "thumbs-down", "hand-right", "hand-left", "hand-up", "hand-down", "circle-arrow-right", "circle-arrow-left", "circle-arrow-up", "circle-arrow-down", "globe", "wrench", "tasks", "filter", "briefcase", "fullscreen", "dashboard", "paperclip", "heart-empty", "link", "phone", "pushpin", "usd", "gbp", "sort", "sort-by-alphabet", "sort-by-alphabet-alt", "sort-by-order", "sort-by-order-alt", "sort-by-attributes", "sort-by-attributes-alt", "unchecked", "expand", "collapse-down", "collapse-up", "log-in", "flash", "log-out", "new-window", "record", "save", "open", "saved", "import", "export", "send", "floppy-disk", "floppy-saved", "floppy-remove", "floppy-save", "floppy-open", "credit-card", "transfer", "cutlery", "header", "compressed", "earphone", "phone-alt", "tower", "stats", "sd-video", "hd-video", "subtitles", "sound-stereo", "sound-dolby", "sound-5-1", "sound-6-1", "sound-7-1", "copyright-mark", "registration-mark", "cloud-download", "cloud-upload", "tree-conifer", "tree-deciduous", "cd", "save-file", "open-file", "level-up", "copy", "paste", "alert", "equalizer", "king", "queen", "pawn", "bishop", "knight", "baby-formula", "tent", "blackboard", "bed", "apple", "erase", "hourglass", "lamp", "duplicate", "piggy-bank", "scissors", "bitcoin", "yen", "ruble", "scale", "ice-lolly", "ice-lolly-tasted", "education", "option-horizontal", "option-vertical", "menu-hamburger", "modal-window", "oil", "grain", "sunglasses", "text-size", "text-color", "text-background", "object-align-top", "object-align-bottom", "object-align-horizontal", "object-align-left", "object-align-vertical", "object-align-right", "triangle-right", "triangle-left", "triangle-bottom", "triangle-top", "console", "superscript", "subscript", "menu-left", "menu-right", "menu-down", "menu-up"]
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 51 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
module.exports = __WEBPACK_EXTERNAL_MODULE_51__;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 52 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get elements owner document
|
|
|
|
|
*
|
|
|
|
|
* @param {ReactComponent|HTMLElement} componentOrElement
|
|
|
|
|
* @returns {HTMLElement}
|
|
|
|
|
*/
|
|
|
|
|
function ownerDocument(componentOrElement) {
|
|
|
|
|
var elem = React.findDOMNode(componentOrElement);
|
|
|
|
|
return elem && elem.ownerDocument || document;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Shortcut to compute element style
|
|
|
|
|
*
|
|
|
|
|
* @param {HTMLElement} elem
|
|
|
|
|
* @returns {CssStyle}
|
|
|
|
|
*/
|
|
|
|
|
function getComputedStyles(elem) {
|
|
|
|
|
return ownerDocument(elem).defaultView.getComputedStyle(elem, null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get elements offset
|
|
|
|
|
*
|
|
|
|
|
* TODO: REMOVE JQUERY!
|
|
|
|
|
*
|
|
|
|
|
* @param {HTMLElement} DOMNode
|
|
|
|
|
* @returns {{top: number, left: number}}
|
|
|
|
|
*/
|
|
|
|
|
function getOffset(DOMNode) {
|
|
|
|
|
if (window.jQuery) {
|
|
|
|
|
return window.jQuery(DOMNode).offset();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var docElem = ownerDocument(DOMNode).documentElement;
|
|
|
|
|
var box = { top: 0, left: 0 };
|
|
|
|
|
|
|
|
|
|
// If we don't have gBCR, just use 0,0 rather than error
|
|
|
|
|
// BlackBerry 5, iOS 3 (original iPhone)
|
|
|
|
|
if (typeof DOMNode.getBoundingClientRect !== "undefined") {
|
|
|
|
|
box = DOMNode.getBoundingClientRect();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
top: box.top + window.pageYOffset - docElem.clientTop,
|
|
|
|
|
left: box.left + window.pageXOffset - docElem.clientLeft
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get elements position
|
|
|
|
|
*
|
|
|
|
|
* TODO: REMOVE JQUERY!
|
|
|
|
|
*
|
|
|
|
|
* @param {HTMLElement} elem
|
|
|
|
|
* @param {HTMLElement?} offsetParent
|
|
|
|
|
* @returns {{top: number, left: number}}
|
|
|
|
|
*/
|
|
|
|
|
function getPosition(elem, offsetParent) {
|
|
|
|
|
if (window.jQuery) {
|
|
|
|
|
return window.jQuery(elem).position();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var offset = undefined,
|
|
|
|
|
parentOffset = { top: 0, left: 0 };
|
|
|
|
|
|
|
|
|
|
// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
|
|
|
|
|
if (getComputedStyles(elem).position === "fixed") {
|
|
|
|
|
// We assume that getBoundingClientRect is available when computed position is fixed
|
|
|
|
|
offset = elem.getBoundingClientRect();
|
|
|
|
|
} else {
|
|
|
|
|
if (!offsetParent) {
|
|
|
|
|
// Get *real* offsetParent
|
|
|
|
|
offsetParent = offsetParentFunc(elem);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Get correct offsets
|
|
|
|
|
offset = getOffset(elem);
|
|
|
|
|
if (offsetParent.nodeName !== "HTML") {
|
|
|
|
|
parentOffset = getOffset(offsetParent);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Add offsetParent borders
|
|
|
|
|
parentOffset.top += parseInt(getComputedStyles(offsetParent).borderTopWidth, 10);
|
|
|
|
|
parentOffset.left += parseInt(getComputedStyles(offsetParent).borderLeftWidth, 10);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Subtract parent offsets and element margins
|
|
|
|
|
return {
|
|
|
|
|
top: offset.top - parentOffset.top - parseInt(getComputedStyles(elem).marginTop, 10),
|
|
|
|
|
left: offset.left - parentOffset.left - parseInt(getComputedStyles(elem).marginLeft, 10)
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get parent element
|
|
|
|
|
*
|
|
|
|
|
* @param {HTMLElement?} elem
|
|
|
|
|
* @returns {HTMLElement}
|
|
|
|
|
*/
|
|
|
|
|
function offsetParentFunc(elem) {
|
|
|
|
|
var docElem = ownerDocument(elem).documentElement;
|
|
|
|
|
var offsetParent = elem.offsetParent || docElem;
|
|
|
|
|
|
|
|
|
|
while (offsetParent && (offsetParent.nodeName !== "HTML" && getComputedStyles(offsetParent).position === "static")) {
|
|
|
|
|
offsetParent = offsetParent.offsetParent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return offsetParent || docElem;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
ownerDocument: ownerDocument,
|
|
|
|
|
getComputedStyles: getComputedStyles,
|
|
|
|
|
getOffset: getOffset,
|
|
|
|
|
getPosition: getPosition,
|
|
|
|
|
offsetParent: offsetParentFunc
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 53 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Copyright 2013-2014 Facebook, Inc.
|
|
|
|
|
*
|
|
|
|
|
* This file contains a modified version of:
|
|
|
|
|
* https://github.com/facebook/react/blob/v0.12.0/src/vendor/stubs/EventListener.js
|
|
|
|
|
*
|
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
|
*
|
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
*
|
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
|
* limitations under the License.
|
|
|
|
|
*
|
|
|
|
|
* TODO: remove in favour of solution provided by:
|
|
|
|
|
* https://github.com/facebook/react/issues/285
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Does not take into account specific nature of platform.
|
|
|
|
|
*/
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var EventListener = {
|
|
|
|
|
/**
|
|
|
|
|
* Listen to DOM events during the bubble phase.
|
|
|
|
|
*
|
|
|
|
|
* @param {DOMEventTarget} target DOM element to register listener on.
|
|
|
|
|
* @param {string} eventType Event type, e.g. 'click' or 'mouseover'.
|
|
|
|
|
* @param {function} callback Callback function.
|
|
|
|
|
* @return {object} Object with a `remove` method.
|
|
|
|
|
*/
|
|
|
|
|
listen: function listen(target, eventType, callback) {
|
|
|
|
|
if (target.addEventListener) {
|
|
|
|
|
target.addEventListener(eventType, callback, false);
|
|
|
|
|
return {
|
|
|
|
|
remove: function remove() {
|
|
|
|
|
target.removeEventListener(eventType, callback, false);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
} else if (target.attachEvent) {
|
|
|
|
|
target.attachEvent("on" + eventType, callback);
|
|
|
|
|
return {
|
|
|
|
|
remove: function remove() {
|
|
|
|
|
target.detachEvent("on" + eventType, callback);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = EventListener;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 54 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Maps children that are typically specified as `props.children`,
|
|
|
|
|
* but only iterates over children that are "valid components".
|
|
|
|
|
*
|
|
|
|
|
* The mapFunction provided index will be normalised to the components mapped,
|
|
|
|
|
* so an invalid component would not increase the index.
|
|
|
|
|
*
|
|
|
|
|
* @param {?*} children Children tree container.
|
|
|
|
|
* @param {function(*, int)} mapFunction.
|
|
|
|
|
* @param {*} mapContext Context for mapFunction.
|
|
|
|
|
* @return {object} Object containing the ordered map of results.
|
|
|
|
|
*/
|
|
|
|
|
function mapValidComponents(children, func, context) {
|
|
|
|
|
var index = 0;
|
|
|
|
|
|
|
|
|
|
return React.Children.map(children, function (child) {
|
|
|
|
|
if (React.isValidElement(child)) {
|
|
|
|
|
var lastIndex = index;
|
|
|
|
|
index++;
|
|
|
|
|
return func.call(context, child, lastIndex);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return child;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Iterates through children that are typically specified as `props.children`,
|
|
|
|
|
* but only iterates over children that are "valid components".
|
|
|
|
|
*
|
|
|
|
|
* The provided forEachFunc(child, index) will be called for each
|
|
|
|
|
* leaf child with the index reflecting the position relative to "valid components".
|
|
|
|
|
*
|
|
|
|
|
* @param {?*} children Children tree container.
|
|
|
|
|
* @param {function(*, int)} forEachFunc.
|
|
|
|
|
* @param {*} forEachContext Context for forEachContext.
|
|
|
|
|
*/
|
|
|
|
|
function forEachValidComponents(children, func, context) {
|
|
|
|
|
var index = 0;
|
|
|
|
|
|
|
|
|
|
return React.Children.forEach(children, function (child) {
|
|
|
|
|
if (React.isValidElement(child)) {
|
|
|
|
|
func.call(context, child, index);
|
|
|
|
|
index++;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Count the number of "valid components" in the Children container.
|
|
|
|
|
*
|
|
|
|
|
* @param {?*} children Children tree container.
|
|
|
|
|
* @returns {number}
|
|
|
|
|
*/
|
|
|
|
|
function numberOfValidComponents(children) {
|
|
|
|
|
var count = 0;
|
|
|
|
|
|
|
|
|
|
React.Children.forEach(children, function (child) {
|
|
|
|
|
if (React.isValidElement(child)) {
|
|
|
|
|
count++;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return count;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Determine if the Child container has one or more "valid components".
|
|
|
|
|
*
|
|
|
|
|
* @param {?*} children Children tree container.
|
|
|
|
|
* @returns {boolean}
|
|
|
|
|
*/
|
|
|
|
|
function hasValidComponent(children) {
|
|
|
|
|
var hasValid = false;
|
|
|
|
|
|
|
|
|
|
React.Children.forEach(children, function (child) {
|
|
|
|
|
if (!hasValid && React.isValidElement(child)) {
|
|
|
|
|
hasValid = true;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return hasValid;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
map: mapValidComponents,
|
|
|
|
|
forEach: forEachValidComponents,
|
|
|
|
|
numberOf: numberOfValidComponents,
|
|
|
|
|
hasValidComponent: hasValidComponent
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 55 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Safe chained function
|
|
|
|
|
*
|
|
|
|
|
* Will only create a new function if needed,
|
|
|
|
|
* otherwise will pass back existing functions or null.
|
|
|
|
|
*
|
|
|
|
|
* @param {function} one
|
|
|
|
|
* @param {function} two
|
|
|
|
|
* @returns {function|null}
|
|
|
|
|
*/
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
function createChainedFunction(one, two) {
|
|
|
|
|
var hasOne = typeof one === "function";
|
|
|
|
|
var hasTwo = typeof two === "function";
|
|
|
|
|
|
|
|
|
|
if (!hasOne && !hasTwo) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
if (!hasOne) {
|
|
|
|
|
return two;
|
|
|
|
|
}
|
|
|
|
|
if (!hasTwo) {
|
|
|
|
|
return one;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return function chainedFunction() {
|
|
|
|
|
one.apply(this, arguments);
|
|
|
|
|
two.apply(this, arguments);
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = createChainedFunction;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 56 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Copyright 2013-2014, Facebook, Inc.
|
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* This file contains a modified version of:
|
|
|
|
|
* https://github.com/facebook/react/blob/v0.12.0/src/addons/transitions/ReactTransitionEvents.js
|
|
|
|
|
*
|
|
|
|
|
* This source code is licensed under the BSD-style license found here:
|
|
|
|
|
* https://github.com/facebook/react/blob/v0.12.0/LICENSE
|
|
|
|
|
* An additional grant of patent rights can be found here:
|
|
|
|
|
* https://github.com/facebook/react/blob/v0.12.0/PATENTS
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var canUseDOM = !!(typeof window !== "undefined" && window.document && window.document.createElement);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* EVENT_NAME_MAP is used to determine which event fired when a
|
|
|
|
|
* transition/animation ends, based on the style property used to
|
|
|
|
|
* define that event.
|
|
|
|
|
*/
|
|
|
|
|
var EVENT_NAME_MAP = {
|
|
|
|
|
transitionend: {
|
|
|
|
|
transition: "transitionend",
|
|
|
|
|
WebkitTransition: "webkitTransitionEnd",
|
|
|
|
|
MozTransition: "mozTransitionEnd",
|
|
|
|
|
OTransition: "oTransitionEnd",
|
|
|
|
|
msTransition: "MSTransitionEnd"
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
animationend: {
|
|
|
|
|
animation: "animationend",
|
|
|
|
|
WebkitAnimation: "webkitAnimationEnd",
|
|
|
|
|
MozAnimation: "mozAnimationEnd",
|
|
|
|
|
OAnimation: "oAnimationEnd",
|
|
|
|
|
msAnimation: "MSAnimationEnd"
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var endEvents = [];
|
|
|
|
|
|
|
|
|
|
function detectEvents() {
|
|
|
|
|
var testEl = document.createElement("div");
|
|
|
|
|
var style = testEl.style;
|
|
|
|
|
|
|
|
|
|
// On some platforms, in particular some releases of Android 4.x,
|
|
|
|
|
// the un-prefixed "animation" and "transition" properties are defined on the
|
|
|
|
|
// style object but the events that fire will still be prefixed, so we need
|
|
|
|
|
// to check if the un-prefixed events are useable, and if not remove them
|
|
|
|
|
// from the map
|
|
|
|
|
if (!("AnimationEvent" in window)) {
|
|
|
|
|
delete EVENT_NAME_MAP.animationend.animation;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!("TransitionEvent" in window)) {
|
|
|
|
|
delete EVENT_NAME_MAP.transitionend.transition;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (var baseEventName in EVENT_NAME_MAP) {
|
|
|
|
|
var baseEvents = EVENT_NAME_MAP[baseEventName];
|
|
|
|
|
for (var styleName in baseEvents) {
|
|
|
|
|
if (styleName in style) {
|
|
|
|
|
endEvents.push(baseEvents[styleName]);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (canUseDOM) {
|
|
|
|
|
detectEvents();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// We use the raw {add|remove}EventListener() call because EventListener
|
|
|
|
|
// does not know how to remove event listeners and we really should
|
|
|
|
|
// clean up. Also, these events are not triggered in older browsers
|
|
|
|
|
// so we should be A-OK here.
|
|
|
|
|
|
|
|
|
|
function addEventListener(node, eventName, eventListener) {
|
|
|
|
|
node.addEventListener(eventName, eventListener, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function removeEventListener(node, eventName, eventListener) {
|
|
|
|
|
node.removeEventListener(eventName, eventListener, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var ReactTransitionEvents = {
|
|
|
|
|
addEndEventListener: function addEndEventListener(node, eventListener) {
|
|
|
|
|
if (endEvents.length === 0) {
|
|
|
|
|
// If CSS transitions are not supported, trigger an "end animation"
|
|
|
|
|
// event immediately.
|
|
|
|
|
window.setTimeout(eventListener, 0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
endEvents.forEach(function (endEvent) {
|
|
|
|
|
addEventListener(node, endEvent, eventListener);
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
removeEndEventListener: function removeEndEventListener(node, eventListener) {
|
|
|
|
|
if (endEvents.length === 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
endEvents.forEach(function (endEvent) {
|
|
|
|
|
removeEventListener(node, endEvent, eventListener);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = ReactTransitionEvents;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 57 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
|
|
|
|
|
|
|
|
|
|
var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
|
|
|
|
|
|
|
|
|
var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
|
|
|
|
|
|
|
|
|
|
var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
|
|
|
|
|
|
|
|
|
|
var React = _interopRequire(__webpack_require__(51));
|
|
|
|
|
|
|
|
|
|
var classNames = _interopRequire(__webpack_require__(60));
|
|
|
|
|
|
|
|
|
|
var FormGroup = (function (_React$Component) {
|
|
|
|
|
function FormGroup() {
|
|
|
|
|
_classCallCheck(this, FormGroup);
|
|
|
|
|
|
|
|
|
|
if (_React$Component != null) {
|
|
|
|
|
_React$Component.apply(this, arguments);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_inherits(FormGroup, _React$Component);
|
|
|
|
|
|
|
|
|
|
_createClass(FormGroup, {
|
|
|
|
|
render: {
|
|
|
|
|
value: function render() {
|
|
|
|
|
var classes = {
|
|
|
|
|
"form-group": !this.props.standalone,
|
|
|
|
|
"has-feedback": this.props.hasFeedback,
|
|
|
|
|
"has-success": this.props.bsStyle === "success",
|
|
|
|
|
"has-warning": this.props.bsStyle === "warning",
|
|
|
|
|
"has-error": this.props.bsStyle === "error"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return React.createElement(
|
|
|
|
|
"div",
|
|
|
|
|
{ className: classNames(classes, this.props.groupClassName) },
|
|
|
|
|
this.props.children
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return FormGroup;
|
|
|
|
|
})(React.Component);
|
|
|
|
|
|
|
|
|
|
FormGroup.defaultProps = {
|
|
|
|
|
standalone: false
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
FormGroup.propTypes = {
|
|
|
|
|
standalone: React.PropTypes.bool,
|
|
|
|
|
hasFeedback: React.PropTypes.bool,
|
|
|
|
|
bsStyle: React.PropTypes.oneOf(["success", "warning", "error"]),
|
|
|
|
|
groupClassName: React.PropTypes.string
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = FormGroup;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 58 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Copyright 2014, Facebook, Inc.
|
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* This file contains an unmodified version of:
|
|
|
|
|
* https://github.com/facebook/react/blob/v0.12.0/src/vendor/stubs/Object.assign.js
|
|
|
|
|
*
|
|
|
|
|
* This source code is licensed under the BSD-style license found here:
|
|
|
|
|
* https://github.com/facebook/react/blob/v0.12.0/LICENSE
|
|
|
|
|
* An additional grant of patent rights can be found here:
|
|
|
|
|
* https://github.com/facebook/react/blob/v0.12.0/PATENTS
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
function assign(target, sources) {
|
|
|
|
|
if (target == null) {
|
|
|
|
|
throw new TypeError("Object.assign target cannot be null or undefined");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var to = Object(target);
|
|
|
|
|
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
|
|
|
|
|
|
|
|
for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {
|
|
|
|
|
var nextSource = arguments[nextIndex];
|
|
|
|
|
if (nextSource == null) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var from = Object(nextSource);
|
|
|
|
|
|
|
|
|
|
// We don't currently support accessors nor proxies. Therefore this
|
|
|
|
|
// copy cannot throw. If we ever supported this then we must handle
|
|
|
|
|
// exceptions and side-effects. We don't support symbols so they won't
|
|
|
|
|
// be transferred.
|
|
|
|
|
|
|
|
|
|
for (var key in from) {
|
|
|
|
|
if (hasOwnProperty.call(from, key)) {
|
|
|
|
|
to[key] = from[key];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return to;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = assign;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 59 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var ANONYMOUS = "<<anonymous>>";
|
|
|
|
|
|
|
|
|
|
var CustomPropTypes = {
|
|
|
|
|
/**
|
|
|
|
|
* Checks whether a prop provides a DOM element
|
|
|
|
|
*
|
|
|
|
|
* The element can be provided in two forms:
|
|
|
|
|
* - Directly passed
|
|
|
|
|
* - Or passed an object which has a `getDOMNode` method which will return the required DOM element
|
|
|
|
|
*
|
|
|
|
|
* @param props
|
|
|
|
|
* @param propName
|
|
|
|
|
* @param componentName
|
|
|
|
|
* @returns {Error|undefined}
|
|
|
|
|
*/
|
|
|
|
|
mountable: createMountableChecker()
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create chain-able isRequired validator
|
|
|
|
|
*
|
|
|
|
|
* Largely copied directly from:
|
|
|
|
|
* https://github.com/facebook/react/blob/0.11-stable/src/core/ReactPropTypes.js#L94
|
|
|
|
|
*/
|
|
|
|
|
function createChainableTypeChecker(validate) {
|
|
|
|
|
function checkType(isRequired, props, propName, componentName) {
|
|
|
|
|
componentName = componentName || ANONYMOUS;
|
|
|
|
|
if (props[propName] == null) {
|
|
|
|
|
if (isRequired) {
|
|
|
|
|
return new Error("Required prop `" + propName + "` was not specified in " + "`" + componentName + "`.");
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return validate(props, propName, componentName);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var chainedCheckType = checkType.bind(null, false);
|
|
|
|
|
chainedCheckType.isRequired = checkType.bind(null, true);
|
|
|
|
|
|
|
|
|
|
return chainedCheckType;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function createMountableChecker() {
|
|
|
|
|
function validate(props, propName, componentName) {
|
|
|
|
|
if (typeof props[propName] !== "object" || typeof props[propName].render !== "function" && props[propName].nodeType !== 1) {
|
|
|
|
|
return new Error("Invalid prop `" + propName + "` supplied to " + "`" + componentName + "`, expected a DOM element or an object that has a `render` method");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return createChainableTypeChecker(validate);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = CustomPropTypes;
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 60 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
function classNames() {
|
|
|
|
|
var classes = '';
|
|
|
|
|
var arg;
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < arguments.length; i++) {
|
|
|
|
|
arg = arguments[i];
|
|
|
|
|
if (!arg) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ('string' === typeof arg || 'number' === typeof arg) {
|
|
|
|
|
classes += ' ' + arg;
|
|
|
|
|
} else if (Object.prototype.toString.call(arg) === '[object Array]') {
|
|
|
|
|
classes += ' ' + classNames.apply(null, arg);
|
|
|
|
|
} else if ('object' === typeof arg) {
|
|
|
|
|
for (var key in arg) {
|
|
|
|
|
if (!arg.hasOwnProperty(key) || !arg[key]) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
classes += ' ' + key;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return classes.substr(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// safely export classNames in case the script is included directly on a page
|
|
|
|
|
if (typeof module !== 'undefined' && module.exports) {
|
|
|
|
|
module.exports = classNames;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 61 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Copyright 2013-2015, Facebook, Inc.
|
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* This source code is licensed under the BSD-style license found in the
|
|
|
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
|
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
|
*
|
|
|
|
|
* @providesModule ReactTransitionEvents
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
var ExecutionEnvironment = __webpack_require__(62);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* EVENT_NAME_MAP is used to determine which event fired when a
|
|
|
|
|
* transition/animation ends, based on the style property used to
|
|
|
|
|
* define that event.
|
|
|
|
|
*/
|
|
|
|
|
var EVENT_NAME_MAP = {
|
|
|
|
|
transitionend: {
|
|
|
|
|
'transition': 'transitionend',
|
|
|
|
|
'WebkitTransition': 'webkitTransitionEnd',
|
|
|
|
|
'MozTransition': 'mozTransitionEnd',
|
|
|
|
|
'OTransition': 'oTransitionEnd',
|
|
|
|
|
'msTransition': 'MSTransitionEnd'
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
animationend: {
|
|
|
|
|
'animation': 'animationend',
|
|
|
|
|
'WebkitAnimation': 'webkitAnimationEnd',
|
|
|
|
|
'MozAnimation': 'mozAnimationEnd',
|
|
|
|
|
'OAnimation': 'oAnimationEnd',
|
|
|
|
|
'msAnimation': 'MSAnimationEnd'
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var endEvents = [];
|
|
|
|
|
|
|
|
|
|
function detectEvents() {
|
|
|
|
|
var testEl = document.createElement('div');
|
|
|
|
|
var style = testEl.style;
|
|
|
|
|
|
|
|
|
|
// On some platforms, in particular some releases of Android 4.x,
|
|
|
|
|
// the un-prefixed "animation" and "transition" properties are defined on the
|
|
|
|
|
// style object but the events that fire will still be prefixed, so we need
|
|
|
|
|
// to check if the un-prefixed events are useable, and if not remove them
|
|
|
|
|
// from the map
|
|
|
|
|
if (!('AnimationEvent' in window)) {
|
|
|
|
|
delete EVENT_NAME_MAP.animationend.animation;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!('TransitionEvent' in window)) {
|
|
|
|
|
delete EVENT_NAME_MAP.transitionend.transition;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (var baseEventName in EVENT_NAME_MAP) {
|
|
|
|
|
var baseEvents = EVENT_NAME_MAP[baseEventName];
|
|
|
|
|
for (var styleName in baseEvents) {
|
|
|
|
|
if (styleName in style) {
|
|
|
|
|
endEvents.push(baseEvents[styleName]);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ExecutionEnvironment.canUseDOM) {
|
|
|
|
|
detectEvents();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// We use the raw {add|remove}EventListener() call because EventListener
|
|
|
|
|
// does not know how to remove event listeners and we really should
|
|
|
|
|
// clean up. Also, these events are not triggered in older browsers
|
|
|
|
|
// so we should be A-OK here.
|
|
|
|
|
|
|
|
|
|
function addEventListener(node, eventName, eventListener) {
|
|
|
|
|
node.addEventListener(eventName, eventListener, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function removeEventListener(node, eventName, eventListener) {
|
|
|
|
|
node.removeEventListener(eventName, eventListener, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var ReactTransitionEvents = {
|
|
|
|
|
addEndEventListener: function(node, eventListener) {
|
|
|
|
|
if (endEvents.length === 0) {
|
|
|
|
|
// If CSS transitions are not supported, trigger an "end animation"
|
|
|
|
|
// event immediately.
|
|
|
|
|
window.setTimeout(eventListener, 0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
endEvents.forEach(function(endEvent) {
|
|
|
|
|
addEventListener(node, endEvent, eventListener);
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
removeEndEventListener: function(node, eventListener) {
|
|
|
|
|
if (endEvents.length === 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
endEvents.forEach(function(endEvent) {
|
|
|
|
|
removeEventListener(node, endEvent, eventListener);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = ReactTransitionEvents;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/***/ },
|
|
|
|
|
/* 62 */
|
|
|
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Copyright 2013-2015, Facebook, Inc.
|
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* This source code is licensed under the BSD-style license found in the
|
|
|
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
|
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
|
*
|
|
|
|
|
* @providesModule ExecutionEnvironment
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*jslint evil: true */
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
var canUseDOM = !!(
|
|
|
|
|
(typeof window !== 'undefined' &&
|
|
|
|
|
window.document && window.document.createElement)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Simple, lightweight module assisting with the detection and context of
|
|
|
|
|
* Worker. Helps avoid circular dependencies and allows code to reason about
|
|
|
|
|
* whether or not they are in a Worker, even if they never include the main
|
|
|
|
|
* `ReactWorker` dependency.
|
|
|
|
|
*/
|
|
|
|
|
var ExecutionEnvironment = {
|
|
|
|
|
|
|
|
|
|
canUseDOM: canUseDOM,
|
|
|
|
|
|
|
|
|
|
canUseWorkers: typeof Worker !== 'undefined',
|
|
|
|
|
|
|
|
|
|
canUseEventListeners:
|
|
|
|
|
canUseDOM && !!(window.addEventListener || window.attachEvent),
|
|
|
|
|
|
|
|
|
|
canUseViewport: canUseDOM && !!window.screen,
|
|
|
|
|
|
|
|
|
|
isInWorker: !canUseDOM // For now, this is true - might change in the future.
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = ExecutionEnvironment;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/***/ }
|
|
|
|
|
/******/ ])
|
|
|
|
|
});
|
|
|
|
|
;
|