UNPKG

react-web-tabs

Version:
1,181 lines (920 loc) 45.8 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("react"), require("prop-types")); else if(typeof define === 'function' && define.amd) define(["react", "prop-types"], factory); else if(typeof exports === 'object') exports["react-web-tabs"] = factory(require("react"), require("prop-types")); else root["react-web-tabs"] = factory(root["React"], root["PropTypes"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_1__) { 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] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = 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; /******/ /******/ // identity function for calling harmony imports with the correct context /******/ __webpack_require__.i = function(value) { return value; }; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 12); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_0__; /***/ }), /* 1 */ /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_1__; /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TabSelectionContext = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = __webpack_require__(0); var _react2 = _interopRequireDefault(_react); var _propTypes = __webpack_require__(1); var _propTypes2 = _interopRequireDefault(_propTypes); var _TabSelection = __webpack_require__(7); var _TabSelection2 = _interopRequireDefault(_TabSelection); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var TabSelectionContext = exports.TabSelectionContext = _react2.default.createContext({ selection: {} }); var TabProvider = function (_Component) { _inherits(TabProvider, _Component); function TabProvider(props) { _classCallCheck(this, TabProvider); var _this = _possibleConstructorReturn(this, (TabProvider.__proto__ || Object.getPrototypeOf(TabProvider)).call(this, props)); _this.selection = new _TabSelection2.default({ defaultTab: props.defaultTab, vertical: props.vertical, collapsible: props.collapsible, onChange: props.onChange }); return _this; } _createClass(TabProvider, [{ key: 'componentWillReceiveProps', value: function componentWillReceiveProps(nextProps) { if (this.props.defaultTab !== nextProps.defaultTab && !this.selection.isSelected(nextProps.defaultTab)) { this.selection.select(nextProps.defaultTab); } } }, { key: 'render', value: function render() { var children = this.props.children; return _react2.default.createElement( TabSelectionContext.Provider, { value: this.selection }, children ); } }]); return TabProvider; }(_react.Component); TabProvider.defaultProps = { defaultTab: undefined, onChange: undefined, vertical: false, collapsible: false }; TabProvider.propTypes = { children: _propTypes2.default.node.isRequired, defaultTab: _propTypes2.default.string, vertical: _propTypes2.default.bool, collapsible: _propTypes2.default.bool, onChange: _propTypes2.default.func }; exports.default = TabProvider; /***/ }), /* 3 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: 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 = __webpack_require__(0); var _react2 = _interopRequireDefault(_react); var _TabProvider = __webpack_require__(2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function getDisplayName(WrappedComponent) { return WrappedComponent.displayName || WrappedComponent.name || 'Component'; } var withTabSelection = function withTabSelection(Component) { var TabSelectionComponent = function TabSelectionComponent(props) { return _react2.default.createElement( _TabProvider.TabSelectionContext.Consumer, null, function (selection) { return _react2.default.createElement(Component, _extends({}, props, { selection: selection })); } ); }; TabSelectionComponent.WrappedComponent = Component; TabSelectionComponent.displayName = 'withTabSelection(' + getDisplayName(Component) + ')'; return TabSelectionComponent; }; exports.default = withTabSelection; /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = __webpack_require__(0); var _react2 = _interopRequireDefault(_react); var _propTypes = __webpack_require__(1); var _propTypes2 = _interopRequireDefault(_propTypes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(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; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var TabComponent = function (_Component) { _inherits(TabComponent, _Component); function TabComponent() { _classCallCheck(this, TabComponent); return _possibleConstructorReturn(this, (TabComponent.__proto__ || Object.getPrototypeOf(TabComponent)).apply(this, arguments)); } _createClass(TabComponent, [{ key: 'render', value: function render() { var _props = this.props, tabFor = _props.tabFor, children = _props.children, className = _props.className, selected = _props.selected, focusable = _props.focusable, tabRef = _props.tabRef, onClick = _props.onClick, onKeyDown = _props.onKeyDown, props = _objectWithoutProperties(_props, ['tabFor', 'children', 'className', 'selected', 'focusable', 'tabRef', 'onClick', 'onKeyDown']); return _react2.default.createElement( 'button', _extends({}, props, { id: tabFor + '-tab', role: 'tab', 'aria-selected': selected, 'aria-controls': tabFor, onClick: onClick, onKeyDown: onKeyDown, tabIndex: focusable || selected ? '0' : '-1', className: 'rwt__tab ' + (className || ''), ref: tabRef }), children ); } }]); return TabComponent; }(_react.Component); TabComponent.defaultProps = { className: '', selected: false, focusable: false, onClick: undefined, onKeyDown: undefined, tabRef: undefined }; TabComponent.propTypes = { tabFor: _propTypes2.default.string.isRequired, children: _propTypes2.default.node.isRequired, className: _propTypes2.default.string, selected: _propTypes2.default.bool, focusable: _propTypes2.default.bool, onClick: _propTypes2.default.func, onKeyDown: _propTypes2.default.func, tabRef: _propTypes2.default.func }; exports.default = TabComponent; /***/ }), /* 5 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = __webpack_require__(0); var _react2 = _interopRequireDefault(_react); var _propTypes = __webpack_require__(1); var _propTypes2 = _interopRequireDefault(_propTypes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(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; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable jsx-a11y/role-supports-aria-props */ var TabListComponent = function (_Component) { _inherits(TabListComponent, _Component); function TabListComponent() { _classCallCheck(this, TabListComponent); return _possibleConstructorReturn(this, (TabListComponent.__proto__ || Object.getPrototypeOf(TabListComponent)).apply(this, arguments)); } _createClass(TabListComponent, [{ key: 'render', value: function render() { var _props = this.props, children = _props.children, className = _props.className, verticalOrientation = _props.verticalOrientation, props = _objectWithoutProperties(_props, ['children', 'className', 'verticalOrientation']); return _react2.default.createElement( 'div', _extends({}, props, { role: 'tablist', 'aria-orientation': verticalOrientation ? 'vertical' : '', className: 'rwt__tablist ' + (className || '') }), children ); } }]); return TabListComponent; }(_react.Component); TabListComponent.defaultProps = { className: '', verticalOrientation: false }; TabListComponent.propTypes = { children: _propTypes2.default.node.isRequired, className: _propTypes2.default.string, verticalOrientation: _propTypes2.default.bool }; exports.default = TabListComponent; /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = __webpack_require__(0); var _react2 = _interopRequireDefault(_react); var _propTypes = __webpack_require__(1); var _propTypes2 = _interopRequireDefault(_propTypes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(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; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable no-nested-ternary */ var TabPanelComponent = function (_Component) { _inherits(TabPanelComponent, _Component); function TabPanelComponent() { _classCallCheck(this, TabPanelComponent); return _possibleConstructorReturn(this, (TabPanelComponent.__proto__ || Object.getPrototypeOf(TabPanelComponent)).apply(this, arguments)); } _createClass(TabPanelComponent, [{ key: 'render', value: function render() { var _props = this.props, component = _props.component, render = _props.render, tabId = _props.tabId, children = _props.children, className = _props.className, selected = _props.selected, props = _objectWithoutProperties(_props, ['component', 'render', 'tabId', 'children', 'className', 'selected']); var childProps = { selected: selected }; return _react2.default.createElement( 'div', _extends({}, props, { id: tabId, role: 'tabpanel', 'aria-expanded': selected, 'aria-hidden': !selected, 'aria-labelledby': tabId + '-tab', hidden: !selected, className: 'rwt__tabpanel ' + (className || '') }), component ? _react2.default.createElement(component, childProps) : render ? render(childProps) : children ? children : null ); } }]); return TabPanelComponent; }(_react.Component); TabPanelComponent.defaultProps = { className: '', component: null, children: null, render: null, selected: false }; TabPanelComponent.propTypes = { tabId: _propTypes2.default.string.isRequired, children: _propTypes2.default.node, className: _propTypes2.default.string, component: _propTypes2.default.func, render: _propTypes2.default.func, selected: _propTypes2.default.bool }; exports.default = TabPanelComponent; /***/ }), /* 7 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var TabSelection = function () { function TabSelection() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, defaultTab = _ref.defaultTab, _ref$vertical = _ref.vertical, vertical = _ref$vertical === undefined ? false : _ref$vertical, _ref$collapsible = _ref.collapsible, collapsible = _ref$collapsible === undefined ? false : _ref$collapsible, onChange = _ref.onChange; _classCallCheck(this, TabSelection); this.selected = defaultTab; this.tabs = []; this.subscribtions = []; this.onChange = onChange; this.vertical = vertical; this.collapsible = collapsible; } _createClass(TabSelection, [{ key: "select", value: function select(tabId) { var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, _ref2$focus = _ref2.focus, focus = _ref2$focus === undefined ? false : _ref2$focus; if (!this.tabs.includes(tabId) || !this.collapsible && this.isSelected(tabId)) { return; } if (this.isSelected(tabId)) { this.selected = undefined; } else { this.selected = tabId; } this.subscribtions.forEach(function (callback) { return callback({ focus: focus }); }); if (this.onChange) { this.onChange(tabId); } } }, { key: "selectPrevious", value: function selectPrevious(options) { var prevIndex = this.tabs.indexOf(this.selected) - 1; this.select(this.tabs[prevIndex >= 0 ? prevIndex : this.tabs.length - 1], options); } }, { key: "selectNext", value: function selectNext(options) { var nextIndex = (this.tabs.indexOf(this.selected) + 1) % this.tabs.length; this.select(this.tabs[nextIndex], options); } }, { key: "selectFirst", value: function selectFirst(options) { this.select(this.tabs[0], options); } }, { key: "selectLast", value: function selectLast(options) { this.select(this.tabs[this.tabs.length - 1], options); } }, { key: "isSelected", value: function isSelected(tabId) { return tabId === this.selected; } }, { key: "isVertical", value: function isVertical() { return this.vertical; } }, { key: "register", value: function register(tabId) { if (this.tabs.includes(tabId)) { return; } this.tabs.push(tabId); // set the first registered tab as select if no tab was assigned as default if (!this.selected) { this.select(tabId); } } }, { key: "unregister", value: function unregister(tabId) { this.tabs = this.tabs.filter(function (id) { return id !== tabId; }); } }, { key: "subscribe", value: function subscribe(callback) { this.subscribtions.push(callback); } }, { key: "unsubscribe", value: function unsubscribe(callback) { this.subscribtions = this.subscribtions.filter(function (cb) { return cb !== callback; }); } }]); return TabSelection; }(); exports.default = TabSelection; /***/ }), /* 8 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.KeyCode = undefined; 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = __webpack_require__(0); var _react2 = _interopRequireDefault(_react); var _propTypes = __webpack_require__(1); var _propTypes2 = _interopRequireDefault(_propTypes); var _TabComponent = __webpack_require__(4); var _TabComponent2 = _interopRequireDefault(_TabComponent); var _withTabSelection = __webpack_require__(3); var _withTabSelection2 = _interopRequireDefault(_withTabSelection); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(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; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var KeyCode = exports.KeyCode = { END: 35, HOME: 36, LEFT_ARROW: 37, UP_ARROW: 38, RIGHT_ARROW: 39, DOWN_ARROW: 40 }; var Tab = function (_Component) { _inherits(Tab, _Component); function Tab(props) { _classCallCheck(this, Tab); var _this = _possibleConstructorReturn(this, (Tab.__proto__ || Object.getPrototypeOf(Tab)).call(this, props)); _this.update = _this.update.bind(_this); _this.handleClick = _this.handleClick.bind(_this); _this.handleKeyDown = _this.handleKeyDown.bind(_this); props.selection.register(props.tabFor); return _this; } _createClass(Tab, [{ key: 'componentDidMount', value: function componentDidMount() { this.props.selection.subscribe(this.update); } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { this.props.selection.unsubscribe(this.update); this.props.selection.unregister(this.props.tabFor); } }, { key: 'update', value: function update() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, focus = _ref.focus; this.forceUpdate(); if (focus && this.props.selection.isSelected(this.props.tabFor)) { this.tabComponent.focus(); } } }, { key: 'handleClick', value: function handleClick(event) { this.props.selection.select(this.props.tabFor); if (this.props.onClick) { this.props.onClick(event); } } }, { key: 'handleKeyDown', value: function handleKeyDown(e) { var verticalOrientation = this.props.selection.isVertical(); if (e.keyCode === KeyCode.HOME) { this.props.selection.selectFirst({ focus: true }); } else if (e.keyCode === KeyCode.END) { this.props.selection.selectLast({ focus: true }); } else if (e.keyCode === KeyCode.LEFT_ARROW && !verticalOrientation) { this.props.selection.selectPrevious({ focus: true }); } else if (e.keyCode === KeyCode.RIGHT_ARROW && !verticalOrientation) { this.props.selection.selectNext({ focus: true }); } else if (e.keyCode === KeyCode.UP_ARROW && verticalOrientation) { e.preventDefault(); this.props.selection.selectPrevious({ focus: true }); } else if (e.keyCode === KeyCode.DOWN_ARROW && verticalOrientation) { e.preventDefault(); this.props.selection.selectNext({ focus: true }); } } }, { key: 'render', value: function render() { var _this2 = this; var _props = this.props, tabFor = _props.tabFor, children = _props.children, className = _props.className, props = _objectWithoutProperties(_props, ['tabFor', 'children', 'className']); var isSelected = this.props.selection.isSelected(tabFor); return _react2.default.createElement( _TabComponent2.default, _extends({}, props, { tabFor: tabFor, onClick: this.handleClick, onKeyDown: this.handleKeyDown, selected: isSelected, className: className, tabRef: function tabRef(e) { _this2.tabComponent = e; } }), children ); } }]); return Tab; }(_react.Component); Tab.defaultProps = { className: '', selected: false, onClick: undefined }; Tab.propTypes = { selection: _propTypes2.default.shape({ subscribe: _propTypes2.default.func.isRequired, unsubscribe: _propTypes2.default.func.isRequired, register: _propTypes2.default.func.isRequired, unregister: _propTypes2.default.func.isRequired, isSelected: _propTypes2.default.func.isRequired, select: _propTypes2.default.func.isRequired, selectNext: _propTypes2.default.func.isRequired, selectPrevious: _propTypes2.default.func.isRequired, selectFirst: _propTypes2.default.func.isRequired, selectLast: _propTypes2.default.func.isRequired, isVertical: _propTypes2.default.func.isRequired }).isRequired, tabFor: _propTypes2.default.string.isRequired, children: _propTypes2.default.node.isRequired, className: _propTypes2.default.string, selected: _propTypes2.default.bool, onClick: _propTypes2.default.func }; exports.default = (0, _withTabSelection2.default)(Tab); /***/ }), /* 9 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = __webpack_require__(0); var _react2 = _interopRequireDefault(_react); var _propTypes = __webpack_require__(1); var _propTypes2 = _interopRequireDefault(_propTypes); var _TabListComponent = __webpack_require__(5); var _TabListComponent2 = _interopRequireDefault(_TabListComponent); var _withTabSelection = __webpack_require__(3); var _withTabSelection2 = _interopRequireDefault(_withTabSelection); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(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; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var TabList = function (_Component) { _inherits(TabList, _Component); function TabList() { _classCallCheck(this, TabList); return _possibleConstructorReturn(this, (TabList.__proto__ || Object.getPrototypeOf(TabList)).apply(this, arguments)); } _createClass(TabList, [{ key: 'render', value: function render() { var _props = this.props, selection = _props.selection, children = _props.children, className = _props.className, props = _objectWithoutProperties(_props, ['selection', 'children', 'className']); var verticalOrientation = selection.isVertical(); return _react2.default.createElement( _TabListComponent2.default, _extends({}, props, { verticalOrientation: verticalOrientation, className: className }), children ); } }]); return TabList; }(_react.Component); TabList.defaultProps = { className: '' }; TabList.propTypes = { selection: _propTypes2.default.shape({ isVertical: _propTypes2.default.func.isRequired }).isRequired, children: _propTypes2.default.node.isRequired, className: _propTypes2.default.string }; exports.default = (0, _withTabSelection2.default)(TabList); /***/ }), /* 10 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = __webpack_require__(0); var _react2 = _interopRequireDefault(_react); var _propTypes = __webpack_require__(1); var _propTypes2 = _interopRequireDefault(_propTypes); var _TabPanelComponent = __webpack_require__(6); var _TabPanelComponent2 = _interopRequireDefault(_TabPanelComponent); var _withTabSelection = __webpack_require__(3); var _withTabSelection2 = _interopRequireDefault(_withTabSelection); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(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; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable no-nested-ternary */ var TabPanel = function (_Component) { _inherits(TabPanel, _Component); function TabPanel(props) { _classCallCheck(this, TabPanel); var _this = _possibleConstructorReturn(this, (TabPanel.__proto__ || Object.getPrototypeOf(TabPanel)).call(this, props)); _this.update = _this.update.bind(_this); return _this; } _createClass(TabPanel, [{ key: 'componentDidMount', value: function componentDidMount() { this.props.selection.subscribe(this.update); } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { this.props.selection.unsubscribe(this.update); } }, { key: 'update', value: function update() { this.forceUpdate(); } }, { key: 'render', value: function render() { var _props = this.props, tabId = _props.tabId, props = _objectWithoutProperties(_props, ['tabId']); var selected = this.props.selection.isSelected(tabId); return _react2.default.createElement(_TabPanelComponent2.default, _extends({ tabId: tabId, selected: selected }, props)); } }]); return TabPanel; }(_react.Component); TabPanel.propTypes = { selection: _propTypes2.default.shape({ subscribe: _propTypes2.default.func.isRequired, unsubscribe: _propTypes2.default.func.isRequired, isSelected: _propTypes2.default.func.isRequired }).isRequired, tabId: _propTypes2.default.string.isRequired }; exports.default = (0, _withTabSelection2.default)(TabPanel); /***/ }), /* 11 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = __webpack_require__(0); var _react2 = _interopRequireDefault(_react); var _propTypes = __webpack_require__(1); var _propTypes2 = _interopRequireDefault(_propTypes); var _TabProvider = __webpack_require__(2); var _TabProvider2 = _interopRequireDefault(_TabProvider); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(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; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var Tabs = function (_Component) { _inherits(Tabs, _Component); function Tabs() { _classCallCheck(this, Tabs); return _possibleConstructorReturn(this, (Tabs.__proto__ || Object.getPrototypeOf(Tabs)).apply(this, arguments)); } _createClass(Tabs, [{ key: 'render', value: function render() { var _props = this.props, children = _props.children, defaultTab = _props.defaultTab, onChange = _props.onChange, vertical = _props.vertical, collapsible = _props.collapsible, className = _props.className, props = _objectWithoutProperties(_props, ['children', 'defaultTab', 'onChange', 'vertical', 'collapsible', 'className']); return _react2.default.createElement( _TabProvider2.default, { defaultTab: defaultTab, onChange: onChange, vertical: vertical, collapsible: collapsible }, _react2.default.createElement( 'div', _extends({}, props, { 'data-rwt-vertical': vertical, className: 'rwt__tabs ' + (className || '') }), children ) ); } }]); return Tabs; }(_react.Component); Tabs.defaultProps = { defaultTab: undefined, className: '', vertical: false, collapsible: false, onChange: undefined }; Tabs.propTypes = { children: _propTypes2.default.node.isRequired, defaultTab: _propTypes2.default.string, className: _propTypes2.default.string, vertical: _propTypes2.default.bool, collapsible: _propTypes2.default.bool, onChange: _propTypes2.default.func }; exports.default = Tabs; /***/ }), /* 12 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _Tab = __webpack_require__(8); Object.defineProperty(exports, 'Tab', { enumerable: true, get: function get() { return _interopRequireDefault(_Tab).default; } }); var _TabComponent = __webpack_require__(4); Object.defineProperty(exports, 'TabComponent', { enumerable: true, get: function get() { return _interopRequireDefault(_TabComponent).default; } }); var _Tabs = __webpack_require__(11); Object.defineProperty(exports, 'Tabs', { enumerable: true, get: function get() { return _interopRequireDefault(_Tabs).default; } }); var _TabList = __webpack_require__(9); Object.defineProperty(exports, 'TabList', { enumerable: true, get: function get() { return _interopRequireDefault(_TabList).default; } }); var _TabListComponent = __webpack_require__(5); Object.defineProperty(exports, 'TabListComponent', { enumerable: true, get: function get() { return _interopRequireDefault(_TabListComponent).default; } }); var _TabPanel = __webpack_require__(10); Object.defineProperty(exports, 'TabPanel', { enumerable: true, get: function get() { return _interopRequireDefault(_TabPanel).default; } }); var _TabPanelComponent = __webpack_require__(6); Object.defineProperty(exports, 'TabPanelComponent', { enumerable: true, get: function get() { return _interopRequireDefault(_TabPanelComponent).default; } }); var _TabProvider = __webpack_require__(2); Object.defineProperty(exports, 'TabProvider', { enumerable: true, get: function get() { return _interopRequireDefault(_TabProvider).default; } }); var _TabSelection = __webpack_require__(7); Object.defineProperty(exports, 'TabSelection', { enumerable: true, get: function get() { return _interopRequireDefault(_TabSelection).default; } }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /***/ }) /******/ ]); });