New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

react-aria

Package Overview
Dependencies
Maintainers
1
Versions
859
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-aria - npm Package Compare versions

Comparing version 0.5.0 to 0.6.0

lib/Accordion/index.js

12

CHANGELOG.md
## CHANGELOG
### 0.6.0
Exports as `Tabs`, and `Overlays` now, can be imported individually if needed ( e.g. import `Tabs` from `react-aria/Tabs` )
All new props will be documented in README
### 0.5.1
Fixed `Item` component to accept and use `value` prop
Added `isOpen` prop to `Manager` so user can control `Popover` open/close state
Ignore `input` when listening for taps
### 0.5.0

@@ -3,0 +15,0 @@ Removed `Aria` prefix from each component name

1338

dist/react-aria.js
/*!
* React Aria 0.5.0
* React Aria 0.6.0
* https://github.com/souporserious/react-aria

@@ -8,10 +8,10 @@ * Copyright (c) 2016 React Aria Authors

if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("react"), require("react-dom"), require("focus-trap"), require("focus-group"), require("no-scroll"), require("teeny-tap"));
module.exports = factory(require("react"), require("react-dom"), require("focus-trap"), require("no-scroll"), require("focus-group"));
else if(typeof define === 'function' && define.amd)
define(["react", "react-dom", "focus-trap", "focus-group", "no-scroll", "teeny-tap"], factory);
define(["react", "react-dom", "focus-trap", "no-scroll", "focus-group"], factory);
else if(typeof exports === 'object')
exports["ReactARIA"] = factory(require("react"), require("react-dom"), require("focus-trap"), require("focus-group"), require("no-scroll"), require("teeny-tap"));
exports["ReactARIA"] = factory(require("react"), require("react-dom"), require("focus-trap"), require("no-scroll"), require("focus-group"));
else
root["ReactARIA"] = factory(root["React"], root["ReactDOM"], root["focusTrap"], root["createFocusGroup"], root["noScroll"], root["createTapListener"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_7__, __WEBPACK_EXTERNAL_MODULE_14__, __WEBPACK_EXTERNAL_MODULE_15__, __WEBPACK_EXTERNAL_MODULE_17__) {
root["ReactARIA"] = factory(root["React"], root["ReactDOM"], root["focusTrap"], root["noScroll"], root["createFocusGroup"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_7__, __WEBPACK_EXTERNAL_MODULE_8__, __WEBPACK_EXTERNAL_MODULE_10__) {
return /******/ (function(modules) { // webpackBootstrap

@@ -68,36 +68,17 @@ /******/ // The module cache

});
exports.Manager = undefined;
exports.Tabs = exports.Overlays = undefined;
var _Menu = __webpack_require__(1);
var _Overlays2 = __webpack_require__(1);
Object.keys(_Menu).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _Menu[key];
}
});
});
var _Overlays = _interopRequireWildcard(_Overlays2);
var _Tabs = __webpack_require__(9);
var _Tabs2 = __webpack_require__(13);
Object.keys(_Tabs).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _Tabs[key];
}
});
});
var _Tabs = _interopRequireWildcard(_Tabs2);
var _Manager2 = __webpack_require__(13);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
var _Manager3 = _interopRequireDefault(_Manager2);
exports.Overlays = _Overlays;
exports.Tabs = _Tabs;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.Manager = _Manager3.default;
/***/ },

@@ -112,13 +93,13 @@ /* 1 */

});
exports.Item = exports.Popover = exports.Toggle = undefined;
exports.Item = exports.Overlay = exports.Trigger = undefined;
var _Toggle2 = __webpack_require__(2);
var _Trigger2 = __webpack_require__(2);
var _Toggle3 = _interopRequireDefault(_Toggle2);
var _Trigger3 = _interopRequireDefault(_Trigger2);
var _Popover2 = __webpack_require__(6);
var _Overlay2 = __webpack_require__(6);
var _Popover3 = _interopRequireDefault(_Popover2);
var _Overlay3 = _interopRequireDefault(_Overlay2);
var _Item2 = __webpack_require__(8);
var _Item2 = __webpack_require__(12);

@@ -129,4 +110,4 @@ var _Item3 = _interopRequireDefault(_Item2);

exports.Toggle = _Toggle3.default;
exports.Popover = _Popover3.default;
exports.Trigger = _Trigger3.default;
exports.Overlay = _Overlay3.default;
exports.Item = _Item3.default;

@@ -168,9 +149,11 @@

tag: _react.PropTypes.string,
children: _react.PropTypes.oneOfType([_react.PropTypes.func, _react.PropTypes.node]).isRequired
isOpen: _react.PropTypes.bool,
toggleOn: _react.PropTypes.array,
onToggle: _react.PropTypes.func
};
var Toggle = function (_Component) {
_inherits(Toggle, _Component);
var Trigger = function (_Component) {
_inherits(Trigger, _Component);
function Toggle() {
function Trigger() {
var _ref;

@@ -180,3 +163,3 @@

_classCallCheck(this, Toggle);
_classCallCheck(this, Trigger);

@@ -187,12 +170,15 @@ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {

return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Toggle.__proto__ || Object.getPrototypeOf(Toggle)).call.apply(_ref, [this].concat(args))), _this), _this._handleKeyDown = function (e) {
if (['ArrowUp', 'ArrowDown', ' '].indexOf(e.key) > -1 || _this.props.tag !== 'button' && e.key === 'Enter') {
if (!_this.context.ariaManager.isPopoverOpen) {
_this.context.ariaManager.openPopover();
} else {
_this.context.ariaManager.focusItem(0);
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Trigger.__proto__ || Object.getPrototypeOf(Trigger)).call.apply(_ref, [this].concat(args))), _this), _this._handleKeyDown = function (e) {
var _this$props = _this.props;
var tag = _this$props.tag;
var onToggle = _this$props.onToggle;
var onKeyDown = _this$props.onKeyDown;
if (['ArrowUp', 'ArrowDown'].indexOf(e.key) > -1 || tag !== 'button' && ['Enter', ' '].indexOf(e.key) > -1) {
_this._toggle(e);
}
if (_this.props.onKeyDown) {
_this.props.onKeyDown(e);
if (typeof onKeyDown === 'function') {
onKeyDown(e);
}

@@ -202,24 +188,32 @@ }, _temp), _possibleConstructorReturn(_this, _ret);

_createClass(Toggle, [{
key: 'componentDidMount',
value: function componentDidMount() {
this.context.ariaManager.setToggleNode((0, _reactDom.findDOMNode)(this));
_createClass(Trigger, [{
key: '_handleEvent',
value: function _handleEvent(name, e) {
var onEvent = this.props['on' + name];
this._toggle(e);
if (typeof onEvent === 'function') {
onEvent(e);
}
}
}, {
key: 'render',
value: function render() {
var _context$ariaManager = this.context.ariaManager;
var type = _context$ariaManager.type;
var uuid = _context$ariaManager.uuid;
var isPopoverOpen = _context$ariaManager.isPopoverOpen;
key: '_toggle',
value: function _toggle(e) {
e.preventDefault();
this.props.onToggle();
}
}, {
key: '_getProps',
value: function _getProps() {
var _props = this.props;
var tag = _props.tag;
var disabled = _props.disabled;
var children = _props.children;
var type = _props.type;
var controls = _props.controls;
var isOpen = _props.isOpen;
var toggleOn = _props.toggleOn;
var componentProps = {
var props = {
role: 'button',
tabIndex: disabled ? '' : 0,
'aria-haspopup': true,
'aria-expanded': isPopoverOpen,
'aria-disabled': disabled,

@@ -229,12 +223,36 @@ onKeyDown: this._handleKeyDown

if (type !== 'modal') {
props['aria-haspopup'] = true;
props['aria-expanded'] = isOpen;
}
if (type === 'popover') {
componentProps['id'] = uuid;
props['id'] = controls;
} else if (type === 'tooltip') {
props['aria-describedby'] = controls;
}
if (type === 'tooltip') {
componentProps['aria-describedby'] = uuid;
if (toggleOn.indexOf('click') > -1) {
props.onClick = this._handleEvent.bind(this, 'click');
}
if (toggleOn.indexOf('hover') > -1) {
props.onMouseOver = this._handleEvent.bind(this, 'mouseOver');
props.onMouseOut = this._handleEvent.bind(this, 'mouseOut');
}
if (toggleOn.indexOf('focus') > -1) {
props.onFocus = this._handleEvent.bind(this, 'focus');
props.onBlur = this._handleEvent.bind(this, 'blur');
}
var props = (0, _specialAssign2.default)(componentProps, this.props, checkedProps);
return (0, _specialAssign2.default)(props, this.props, checkedProps);
}
}, {
key: 'render',
value: function render() {
var _props2 = this.props;
var tag = _props2.tag;
var children = _props2.children;
var props = this._getProps();
if (typeof children === 'function') {

@@ -248,13 +266,11 @@ return children(props);

return Toggle;
return Trigger;
}(_react.Component);
Toggle.contextTypes = {
ariaManager: _react.PropTypes.object.isRequired
Trigger.propTypes = checkedProps;
Trigger.defaultProps = {
tag: 'button',
toggleOn: ['click']
};
Toggle.propTypes = checkedProps;
Toggle.defaultProps = {
tag: 'button'
};
exports.default = Toggle;
exports.default = Trigger;
module.exports = exports['default'];

@@ -317,2 +333,14 @@

var _noScroll = __webpack_require__(8);
var _noScroll2 = _interopRequireDefault(_noScroll);
var _Members = __webpack_require__(9);
var _Members2 = _interopRequireDefault(_Members);
var _keys = __webpack_require__(11);
var _keys2 = _interopRequireDefault(_keys);
var _specialAssign = __webpack_require__(5);

@@ -332,25 +360,66 @@

tag: _react.PropTypes.string,
children: _react.PropTypes.oneOfType([_react.PropTypes.func, _react.PropTypes.node]).isRequired
id: _react.PropTypes.string,
type: _react.PropTypes.oneOf(['menu', 'popover', 'modal', 'tooltip', 'alert']),
focusOnMount: _react.PropTypes.bool,
trapFocus: _react.PropTypes.bool,
initialFocus: _react.PropTypes.any,
freezeScroll: _react.PropTypes.bool,
closeOnEscapeKey: _react.PropTypes.bool,
closeOnOutsideClick: _react.PropTypes.bool,
onRequestClose: _react.PropTypes.func,
onItemSelection: _react.PropTypes.func
};
var Popover = function (_Component) {
_inherits(Popover, _Component);
var Overlay = function (_Component) {
_inherits(Overlay, _Component);
function Popover() {
_classCallCheck(this, Popover);
function Overlay() {
var _ref;
return _possibleConstructorReturn(this, (Popover.__proto__ || Object.getPrototypeOf(Popover)).apply(this, arguments));
var _temp, _this, _ret;
_classCallCheck(this, Overlay);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Overlay.__proto__ || Object.getPrototypeOf(Overlay)).call.apply(_ref, [this].concat(args))), _this), _this.members = new _Members2.default(_this.props), _this.focusItem = function (index) {
_this.members.focus(index);
}, _this._handleDocumentKeyDown = function (_ref2) {
var keyCode = _ref2.keyCode;
if (keyCode === _keys2.default.escape) {
_this.props.onRequestClose();
}
}, _this._handleDocumentClick = function (_ref3) {
var target = _ref3.target;
var node = (0, _reactDom.findDOMNode)(_this);
if (node !== target && !node.contains(target)) {
_this.props.onRequestClose();
}
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(Popover, [{
_createClass(Overlay, [{
key: 'getChildContext',
value: function getChildContext() {
return {
overlayManager: {
members: this.members,
onItemSelection: this.props.onItemSelection
}
};
}
}, {
key: 'componentDidMount',
value: function componentDidMount() {
var _context$ariaManager = this.context.ariaManager;
var trapFocus = _context$ariaManager.trapFocus;
var initialFocus = _context$ariaManager.initialFocus;
var onClickOutside = _context$ariaManager.onClickOutside;
var _props = this.props;
var trapFocus = _props.trapFocus;
var initialFocus = _props.initialFocus;
var freezeScroll = _props.freezeScroll;
this._lastActiveElement = document.activeElement;
this._setPopoverNode();
if (trapFocus) {

@@ -363,2 +432,12 @@ this._focusTrap = (0, _focusTrap2.default)((0, _reactDom.findDOMNode)(this), {

}
if (freezeScroll) {
_noScroll2.default.on();
}
if (initialFocus === 'first') {
this.members.focus(0);
}
this._registerEvents();
}

@@ -368,49 +447,66 @@ }, {

value: function componentWillUnmount() {
if (this.context.ariaManager.trapFocus) {
if (this.props.trapFocus) {
this._focusTrap.deactivate();
}
if (this.props.freezeScroll) {
_noScroll2.default.off();
}
if (this._lastActiveElement) {
this._lastActiveElement.focus();
}
this._unregisterEvents();
}
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate(lastProps, lastState, lastContext) {
if (this.context.ariaManager.isPopoverOpen !== lastContext.ariaManager.isPopoverOpen) {
this._setPopoverNode();
key: '_registerEvents',
value: function _registerEvents() {
document.addEventListener('keydown', this._handleDocumentKeyDown);
if (this.props.closeOnOutsideClick) {
document.addEventListener('click', this._handleDocumentClick);
}
}
}, {
key: '_setPopoverNode',
value: function _setPopoverNode() {
this.context.ariaManager.setPopoverNode((0, _reactDom.findDOMNode)(this));
key: '_unregisterEvents',
value: function _unregisterEvents() {
document.removeEventListener('keydown', this._handleDocumentKeyDown);
if (this.props.closeOnOutsideClick) {
document.removeEventListener('click', this._handleDocumentClick);
}
}
}, {
key: 'render',
value: function render() {
var _context$ariaManager2 = this.context.ariaManager;
var type = _context$ariaManager2.type;
var uuid = _context$ariaManager2.uuid;
var isPopoverOpen = _context$ariaManager2.isPopoverOpen;
var _props = this.props;
var tag = _props.tag;
var children = _props.children;
key: '_getProps',
value: function _getProps() {
var _props2 = this.props;
var type = _props2.type;
var id = _props2.id;
var componentProps = {
'aria-hidden': !isPopoverOpen
};
var props = {};
if (type === 'menu') {
componentProps['role'] = 'menu';
props['role'] = 'menu';
} else if (type === 'modal') {
componentProps['role'] = 'dialog';
props['role'] = 'dialog';
} else if (type === 'alert') {
componentProps['role'] = 'alertdialog';
props['role'] = 'alertdialog';
} else if (type === 'tooltip') {
componentProps['id'] = uuid;
componentProps['role'] = 'tooltip';
props['id'] = id;
props['role'] = 'tooltip';
} else if (type === 'popover') {
props['aria-labelledby'] = id;
}
if (type === 'popover') {
componentProps['aria-labelledby'] = uuid;
}
return (0, _specialAssign2.default)(props, this.props, checkedProps);
}
}, {
key: 'render',
value: function render() {
var _props3 = this.props;
var tag = _props3.tag;
var children = _props3.children;
var props = (0, _specialAssign2.default)(componentProps, this.props, checkedProps);
var props = this._getProps();

@@ -425,13 +521,23 @@ if (typeof children === 'function') {

return Popover;
return Overlay;
}(_react.Component);
Popover.contextTypes = {
ariaManager: _react.PropTypes.object.isRequired
Overlay.childContextTypes = {
overlayManager: _react.PropTypes.object
};
Popover.propTypes = checkedProps;
Popover.defaultProps = {
tag: 'div'
Overlay.propTypes = checkedProps;
Overlay.defaultProps = {
tag: 'div',
type: 'popover',
initialFocus: 'first',
closeOnEscapeKey: true,
closeOnOutsideClick: true,
onRequestClose: function onRequestClose() {
return null;
},
onItemSelection: function onItemSelection() {
return null;
}
};
exports.default = Popover;
exports.default = Overlay;
module.exports = exports['default'];

@@ -447,2 +553,8 @@

/* 8 */
/***/ function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_8__;
/***/ },
/* 9 */
/***/ function(module, exports, __webpack_require__) {

@@ -456,2 +568,130 @@

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 _focusGroup = __webpack_require__(10);
var _focusGroup2 = _interopRequireDefault(_focusGroup);
var _keys = __webpack_require__(11);
var _keys2 = _interopRequireDefault(_keys);
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"); } }
var defaultOptions = {
keybindings: {
next: [{ keyCode: _keys2.default.arrowDown }, { keyCode: _keys2.default.arrowRight }],
prev: [{ keyCode: _keys2.default.arrowUp }, { keyCode: _keys2.default.arrowLeft }],
first: { keyCode: _keys2.default.home },
last: { keyCode: _keys2.default.end }
},
wrap: true,
stringSearch: true,
stringSearchDelay: 600
};
var Members = function Members() {
var _this = this;
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, Members);
this.add = function (member) {
var id = member.id;
var index = member.index;
var node = member.node;
var text = member.text;
if (index === undefined) {
_this.collection.push(member);
} else {
_this.collection.splice(index, 0, member);
}
_this.focusGroup.addMember({
node: node,
text: text || node.innerHTML
});
// activate focus group if this was the first member added
if (_this.collection.length === 1) {
_this.focusGroup.activate();
}
if (typeof _this.options.onAdd === 'function') {
_this.options.onAdd(member);
}
};
this.remove = function (member) {
var pos = _this.collection.indexOf(member);
if (pos > -1) {
_this.collection.splice(member, 1);
_this.focusGroup.removeMember(member.node);
}
// deactivate focus group if this was the last member removed
if (_this.collection.length <= 0) {
_this.focusGroup.activate();
}
if (typeof _this.options.onRemove === 'function') {
_this.options.onRemove(member);
}
};
this.focus = function (index) {
_this.focusGroup.focusNodeAtIndex(index);
};
this.collection = [];
this.options = _extends({}, defaultOptions, options);
this.focusGroup = (0, _focusGroup2.default)(this.options);
};
exports.default = Members;
module.exports = exports['default'];
/***/ },
/* 10 */
/***/ function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_10__;
/***/ },
/* 11 */
/***/ function(module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = {
tab: 9,
escape: 27,
end: 35,
home: 36,
arrowLeft: 37,
arrowUp: 38,
arrowRight: 39,
arrowDown: 40
};
module.exports = exports["default"];
/***/ },
/* 12 */
/***/ 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; }; }();

@@ -480,4 +720,3 @@

var checkedProps = {
tag: _react.PropTypes.string,
children: _react.PropTypes.oneOfType([_react.PropTypes.func, _react.PropTypes.node]).isRequired
tag: _react.PropTypes.string
};

@@ -499,3 +738,12 @@

return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Item.__proto__ || Object.getPrototypeOf(Item)).call.apply(_ref, [this].concat(args))), _this), _this._handleKeyDown = function (e) {
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Item.__proto__ || Object.getPrototypeOf(Item)).call.apply(_ref, [this].concat(args))), _this), _this._handleClick = function (e) {
var onClick = _this.props.onClick;
_this._handleSelection(e);
if (typeof onClick === 'function') {
onClick(e);
}
}, _this._handleKeyDown = function (e) {
var onKeyDown = _this.props.onKeyDown;

@@ -505,7 +753,18 @@

if ([' ', 'Enter'].indexOf(e.key) > -1) {
_this.context.ariaManager.onItemSelection(_this._member, e);
e.preventDefault();
_this._handleSelection(e);
}
if (onKeyDown) {
if (typeof onKeyDown === 'function') {
onKeyDown(e);
}
}, _this._handleSelection = function (e) {
var onSelect = _this.props.onSelect;
_this.context.overlayManager.onItemSelection(_this._member, e);
if (typeof onSelect === 'function') {
onSelect(_this._member, e);
}
}, _temp), _possibleConstructorReturn(_this, _ret);

@@ -522,3 +781,8 @@ }

};
this.context.ariaManager.addMember(this._member);
if (this.props.value) {
this._member.value = this.props.value;
}
this.context.overlayManager.members.add(this._member);
}

@@ -528,3 +792,3 @@ }, {

value: function componentWillUnmount() {
this.context.ariaManager.removeMember(this._member);
this.context.overlayManager.members.remove(this._member);
}

@@ -541,2 +805,3 @@ }, {

tabIndex: -1,
onClick: this._handleClick,
onKeyDown: this._handleKeyDown

@@ -557,3 +822,3 @@ }, this.props, checkedProps);

Item.contextTypes = {
ariaManager: _react.PropTypes.object.isRequired
overlayManager: _react.PropTypes.object
};

@@ -568,3 +833,3 @@ Item.propTypes = checkedProps;

/***/ },
/* 9 */
/* 13 */
/***/ function(module, exports, __webpack_require__) {

@@ -577,13 +842,17 @@

});
exports.TabPanel = exports.Tab = exports.TabList = undefined;
exports.TabPanel = exports.Tab = exports.TabList = exports.Manager = undefined;
var _TabList2 = __webpack_require__(10);
var _Manager2 = __webpack_require__(14);
var _Manager3 = _interopRequireDefault(_Manager2);
var _TabList2 = __webpack_require__(15);
var _TabList3 = _interopRequireDefault(_TabList2);
var _Tab2 = __webpack_require__(11);
var _Tab2 = __webpack_require__(16);
var _Tab3 = _interopRequireDefault(_Tab2);
var _TabPanel2 = __webpack_require__(12);
var _TabPanel2 = __webpack_require__(17);

@@ -594,2 +863,3 @@ var _TabPanel3 = _interopRequireDefault(_TabPanel2);

exports.Manager = _Manager3.default;
exports.TabList = _TabList3.default;

@@ -600,3 +870,3 @@ exports.Tab = _Tab3.default;

/***/ },
/* 10 */
/* 14 */
/***/ function(module, exports, __webpack_require__) {

@@ -610,2 +880,4 @@

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; }; }();

@@ -617,2 +889,10 @@

var _reactDom = __webpack_require__(4);
var _reactDom2 = _interopRequireDefault(_reactDom);
var _Members = __webpack_require__(9);
var _Members2 = _interopRequireDefault(_Members);
var _specialAssign = __webpack_require__(5);

@@ -632,2 +912,157 @@

tag: _react.PropTypes.string,
activeTabId: _react.PropTypes.string,
accordion: _react.PropTypes.bool,
multiselect: _react.PropTypes.bool,
onChange: _react.PropTypes.func
};
var Manager = function (_Component) {
_inherits(Manager, _Component);
function Manager(props) {
_classCallCheck(this, Manager);
var _this = _possibleConstructorReturn(this, (Manager.__proto__ || Object.getPrototypeOf(Manager)).call(this, props));
_this._addMember = function (_ref) {
var id = _ref.id;
if (id === _this.props.activeTabId) {
_this._activateTab(id, true, false);
}
};
_this._addPanel = function (panel) {
var controlledBy = panel.controlledBy;
_this._panels.push(panel);
// set an active panel if there is one
if (controlledBy === _this.props.activeTabId) {
_this._activateTab(controlledBy, true, false);
}
};
_this._activateTab = function (id, forceActivate) {
var emitEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
// bail out if this is the same id
if (id === _this.props.activeTabId && !forceActivate) return;
var onChange = _this.props.onChange;
if (emitEvent && typeof onChange === 'function') {
onChange(id);
} else {
_this._setActiveStates(id);
}
};
_this._members = new _Members2.default(_extends({}, _this.props, { onAdd: _this._addMember }));
_this._panels = [];
return _this;
}
_createClass(Manager, [{
key: 'getChildContext',
value: function getChildContext() {
return {
tabs: {
accordion: this.props.accordion,
multiselect: this.props.multiselect,
members: this._members,
addPanel: this._addPanel,
activateTab: this._activateTab,
focusTab: this.focusTab
}
};
}
}, {
key: '_setActiveStates',
value: function _setActiveStates(id) {
var _props = this.props;
var accordion = _props.accordion;
var multiselect = _props.multiselect;
var collection = this._members.collection;
for (var i = collection.length; i--;) {
var tab = collection[i];
if (accordion) {
if (tab.id === id) {
tab.toggleActiveState();
} else if (!multiselect) {
tab.setActiveState(false);
}
} else {
tab.setActiveState(tab.id === id);
}
}
for (var _i = this._panels.length; _i--;) {
var panel = this._panels[_i];
if (accordion) {
if (panel.controlledBy === id) {
panel.toggleActiveState();
} else if (!multiselect) {
panel.setActiveState(false);
}
} else {
panel.setActiveState(panel.controlledBy === id);
}
}
}
}, {
key: 'render',
value: function render() {
var props = (0, _specialAssign2.default)({}, this.props, checkedProps);
return (0, _react.createElement)(this.props.tag, props);
}
}]);
return Manager;
}(_react.Component);
Manager.childContextTypes = {
tabs: _react.PropTypes.object
};
Manager.propTypes = checkedProps;
Manager.defaultProps = {
tag: 'div'
};
exports.default = Manager;
module.exports = exports['default'];
/***/ },
/* 15 */
/***/ 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; }; }();
var _react = __webpack_require__(3);
var _react2 = _interopRequireDefault(_react);
var _specialAssign = __webpack_require__(5);
var _specialAssign2 = _interopRequireDefault(_specialAssign);
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 checkedProps = {
tag: _react.PropTypes.string,
children: _react.PropTypes.oneOfType([_react.PropTypes.func, _react.PropTypes.node]).isRequired

@@ -648,3 +1083,5 @@ };

value: function render() {
var type = this.context.ariaManager.type;
var _context$tabs = this.context.tabs;
var accordion = _context$tabs.accordion;
var multiselect = _context$tabs.multiselect;
var _props = this.props;

@@ -658,3 +1095,3 @@ var tag = _props.tag;

if (type === 'accordion') {
if (accordion && multiselect) {
componentProps['aria-multiselectable'] = true;

@@ -677,3 +1114,3 @@ }

TabList.contextTypes = {
ariaManager: _react.PropTypes.object.isRequired
tabs: _react.PropTypes.object.isRequired
};

@@ -688,3 +1125,3 @@ TabList.propTypes = checkedProps;

/***/ },
/* 11 */
/* 16 */
/***/ function(module, exports, __webpack_require__) {

@@ -721,6 +1158,5 @@

var checkedProps = {
tag: _react.PropTypes.string,
id: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]).isRequired,
isActive: _react.PropTypes.bool,
children: _react.PropTypes.oneOfType([_react.PropTypes.func, _react.PropTypes.node]).isRequired
tag: _react.PropTypes.string
};

@@ -748,14 +1184,23 @@

_this.setState({ isActive: !_this.state.isActive });
}, _this._handleClick = function (e) {
var onClick = _this.props.onClick;
_this.context.tabs.activateTab(_this.props.id);
if (typeof onClick === 'function') {
onClick(e);
}
}, _this._handleKeyDown = function (e) {
var _this$context$ariaMan = _this.context.ariaManager;
var type = _this$context$ariaMan.type;
var activateTab = _this$context$ariaMan.activateTab;
var _this$props = _this.props;
var id = _this$props.id;
var tag = _this$props.tag;
var onKeyDown = _this$props.onKeyDown;
if (type === 'accordion' && [' ', 'Enter'].indexOf(e.key) > -1) {
activateTab(id);
if (tag !== 'button' && ['Enter', ' '].indexOf(e.key) > -1) {
e.preventDefault();
_this.context.tabs.activateTab(id);
}
if (onKeyDown) {

@@ -765,14 +1210,8 @@ onKeyDown(e);

}, _this._handleFocus = function (e) {
var _this$context$ariaMan2 = _this.context.ariaManager;
var type = _this$context$ariaMan2.type;
var activateTab = _this$context$ariaMan2.activateTab;
var _this$props2 = _this.props;
var id = _this$props2.id;
var onFocus = _this$props2.onFocus;
var onFocus = _this.props.onFocus;
if (type === 'tabs') {
activateTab(id);
}
if (onFocus) {
_this.context.tabs.activateTab(_this.props.id);
if (typeof onFocus === 'function') {
onFocus(e);

@@ -787,3 +1226,2 @@ }

this._member = {
type: 'tab',
id: this.props.id,

@@ -795,3 +1233,3 @@ node: (0, _reactDom.findDOMNode)(this),

};
this.context.ariaManager.addMember(this._member);
this.context.tabs.members.add(this._member);
}

@@ -801,3 +1239,3 @@ }, {

value: function componentWillUnmount() {
this.context.ariaManager.removeMember(this._member);
this.context.tabs.members.remove(this._member);
}

@@ -807,3 +1245,3 @@ }, {

value: function render() {
var type = this.context.ariaManager.type;
var accordion = this.context.tabs.accordion;
var _props = this.props;

@@ -819,12 +1257,14 @@ var tag = _props.tag;

role: 'tab',
tabIndex: type === 'accordion' ? 0 : isActive ? 0 : -1,
tabIndex: accordion ? 0 : isActive ? 0 : -1,
'aria-selected': isActive,
'aria-controls': id + '-panel',
'aria-disabled': disabled,
onKeyDown: this._handleKeyDown,
onFocus: this._handleFocus
'aria-disabled': disabled
};
if (type === 'accordion') {
if (accordion) {
componentProps['aria-expanded'] = isActive;
componentProps['onClick'] = this._handleClick;
componentProps['onKeyDown'] = this._handleKeyDown;
} else {
componentProps['onFocus'] = this._handleFocus;
}

@@ -846,3 +1286,3 @@

Tab.contextTypes = {
ariaManager: _react.PropTypes.object.isRequired
tabs: _react.PropTypes.object.isRequired
};

@@ -857,3 +1297,3 @@ Tab.propTypes = checkedProps;

/***/ },
/* 12 */
/* 17 */
/***/ function(module, exports, __webpack_require__) {

@@ -892,6 +1332,5 @@

var checkedProps = {
tag: _react.PropTypes.string,
controlledBy: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]).isRequired,
isActive: _react.PropTypes.bool,
children: _react.PropTypes.oneOfType([_react.PropTypes.func, _react.PropTypes.node]).isRequired
tag: _react.PropTypes.string
};

@@ -920,7 +1359,11 @@

}, _this._handleKeyDown = function (e) {
var onKeyDown = _this.props.onKeyDown;
if (e.ctrlKey && e.key === 'ArrowUp') {
_this.context.ariaManager.focusTab(_this.props.controlledBy);
_this.context.members.focus(_this.props.controlledBy);
}
if (_this.props.onKeyDown) {
_this.props.onKeyDown(e);
if (typeof onKeyDown === 'function') {
onKeyDown(e);
}

@@ -933,3 +1376,3 @@ }, _temp), _possibleConstructorReturn(_this, _ret);

value: function componentDidMount() {
this.context.ariaManager.addPanel({
this.context.tabs.addPanel({
controlledBy: this.props.controlledBy,

@@ -979,3 +1422,3 @@ node: (0, _reactDom.findDOMNode)(this),

TabPanel.contextTypes = {
ariaManager: _react.PropTypes.object.isRequired
tabs: _react.PropTypes.object.isRequired
};

@@ -989,529 +1432,2 @@ TabPanel.propTypes = checkedProps;

/***/ },
/* 13 */
/***/ 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; }; }();
var _react = __webpack_require__(3);
var _react2 = _interopRequireDefault(_react);
var _focusGroup = __webpack_require__(14);
var _focusGroup2 = _interopRequireDefault(_focusGroup);
var _noScroll = __webpack_require__(15);
var _noScroll2 = _interopRequireDefault(_noScroll);
var _eventsHandler = __webpack_require__(16);
var _eventsHandler2 = _interopRequireDefault(_eventsHandler);
var _specialAssign = __webpack_require__(5);
var _specialAssign2 = _interopRequireDefault(_specialAssign);
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 isTarget = function isTarget(node, target) {
return node === target || node.contains(target);
};
var KEYS = {
tab: 9,
escape: 27,
end: 35,
home: 36,
arrowLeft: 37,
arrowUp: 38,
arrowRight: 39,
arrowDown: 40
};
var checkedProps = {
type: _react.PropTypes.oneOf(['menu', 'popover', 'modal', 'tooltip', 'alert', 'tabs', 'accordion']).isRequired,
tag: _react.PropTypes.string,
trapFocus: _react.PropTypes.bool,
freezeScroll: _react.PropTypes.bool,
activeTabId: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]),
children: _react.PropTypes.oneOfType([_react.PropTypes.func, _react.PropTypes.node]).isRequired,
keybindings: _react.PropTypes.shape({
next: _react.PropTypes.oneOfType([_react.PropTypes.object, _react.PropTypes.array]),
prev: _react.PropTypes.oneOfType([_react.PropTypes.object, _react.PropTypes.array]),
first: _react.PropTypes.oneOfType([_react.PropTypes.object, _react.PropTypes.array]),
last: _react.PropTypes.oneOfType([_react.PropTypes.object, _react.PropTypes.array])
}),
wrap: _react.PropTypes.bool,
stringSearch: _react.PropTypes.bool,
stringSearchDelay: _react.PropTypes.number,
collapsible: _react.PropTypes.bool,
openPopoverOn: _react.PropTypes.oneOf(['tap', 'hover']),
closeOnOutsideClick: _react.PropTypes.bool,
closeOnItemSelection: _react.PropTypes.bool,
accordion: _react.PropTypes.bool,
onPopoverOpen: _react.PropTypes.func,
onPopoverClose: _react.PropTypes.func,
onItemSelection: _react.PropTypes.func
};
var Manager = function (_Component) {
_inherits(Manager, _Component);
function Manager(props) {
_classCallCheck(this, Manager);
var _this = _possibleConstructorReturn(this, (Manager.__proto__ || Object.getPrototypeOf(Manager)).call(this, props));
_this._onItemSelection = function (item, e) {
var value = item.value || item.node.innerHTML;
if (_this.props.closeOnItemSelection) {
_this.closePopover();
}
_this.props.onItemSelection(value, e);
};
_this._setToggleNode = function (node) {
_this._toggle = node;
};
_this._setPopoverNode = function (node) {
_this._popover = node;
};
_this._addMember = function (member) {
var activeTabId = _this.props.activeTabId;
var id = member.id;
var index = member.index;
var node = member.node;
var text = member.text;
if (index === undefined) {
_this._members.push(member);
} else {
_this._members.splice(index, 0, member);
}
_this._focusGroup.addMember({
node: node,
text: text || node.innerHTML
});
if (member.type === 'tab') {
if (activeTabId === id) {
_this._activateTab(activeTabId, true, false);
} else {
_this._handleFirstTabSelection(id);
}
}
};
_this._removeMember = function (member) {
var pos = _this._members.indexOf(member);
if (pos > -1) {
_this._members.splice(member, 1);
_this._focusGroup.removeMember(member.node);
}
};
_this._focusItem = function (index) {
_this._focusGroup.focusNodeAtIndex(index);
};
_this.openPopover = function () {
var focusFirstMember = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
var _this$props = _this.props;
var freezeScroll = _this$props.freezeScroll;
var onPopoverOpen = _this$props.onPopoverOpen;
if (_this.state.isPopoverOpen) return;
_this.setState({ isPopoverOpen: true });
if (freezeScroll) {
_noScroll2.default.on();
}
onPopoverOpen();
if (focusFirstMember) {
setTimeout(function () {
_this._focusItem(0);
}, 60);
}
};
_this.closePopover = function () {
var focusToggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
var _this$props2 = _this.props;
var freezeScroll = _this$props2.freezeScroll;
var onPopoverClose = _this$props2.onPopoverClose;
if (!_this.state.isPopoverOpen) return;
_this.setState({ isPopoverOpen: false });
if (freezeScroll) {
_noScroll2.default.off();
}
onPopoverClose();
if (focusToggle) {
setTimeout(function () {
_this._toggle.focus();
}, 60);
}
};
_this.togglePopover = function (focus) {
if (!_this.state.isPopoverOpen) {
_this.openPopover(focus);
} else {
_this.closePopover(focus);
}
};
_this._addPanel = function (panel) {
var activeTabId = _this.props.activeTabId;
var controlledBy = panel.controlledBy;
_this._panels.push(panel);
if (activeTabId === controlledBy) {
_this._activateTab(activeTabId, true, false);
} else {
_this._handleFirstTabSelection(panel.controlledBy);
}
};
_this._focusTab = function (id) {
var tabToFocus = _this._members.filter(function (tab) {
return tab.id === id;
});
if (tabToFocus) {
tabToFocus.node.focus();
}
};
_this._activateTab = function (id, forceActivate) {
var shouldChange = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var _this$props3 = _this.props;
var type = _this$props3.type;
var onChange = _this$props3.onChange;
if (type === 'tabs') {
if (id === _this._activeTabId && !forceActivate) {
return;
} else {
_this._activeTabId = id;
}
}
// shouldChange makes sure we don't fire callbacks when we don't need to
if (shouldChange && typeof onChange === 'function') {
onChange(id);
// if onChange is being used we don't need to go any farther since the
// user is now controlling state
return;
}
for (var i = _this._members.length; i--;) {
var tab = _this._members[i];
if (type === 'accordion') {
if (tab.id === id) {
tab.toggleActiveState();
}
} else {
tab.setActiveState(id === tab.id);
}
}
for (var _i = _this._panels.length; _i--;) {
var panel = _this._panels[_i];
if (type === 'accordion') {
if (panel.controlledBy === id) {
panel.toggleActiveState();
}
} else {
panel.setActiveState(id === panel.controlledBy);
}
}
};
_this.state = {
isPopoverOpen: false
};
_this._focusGroup = (0, _focusGroup2.default)(props);
_this._toggle = null;
_this._popover = null;
_this._members = [];
_this._panels = [];
_this._activeTabId = props.activeTabId;
_this._uuid = 'RA' + Math.abs(~~(Math.random() * new Date()));
return _this;
}
_createClass(Manager, [{
key: 'getChildContext',
value: function getChildContext() {
return {
ariaManager: {
uuid: this._uuid,
type: this.props.type,
trapFocus: this.props.trapFocus,
initialFocus: this.props.initialFocus,
isPopoverOpen: this.state.isPopoverOpen,
onItemSelection: this._onItemSelection,
setToggleNode: this._setToggleNode,
setPopoverNode: this._setPopoverNode,
addMember: this._addMember,
addPanel: this._addPanel,
removeMember: this._removeMember,
activateTab: this._activateTab,
focusItem: this._focusItem,
openPopover: this.openPopover,
closePopover: this.closePopover,
togglePopover: this.togglePopover
}
};
}
}, {
key: 'componentWillMount',
value: function componentWillMount() {
this._focusGroup.activate();
_eventsHandler2.default.add(this);
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
this._focusGroup.deactivate();
_eventsHandler2.default.remove(this);
}
}, {
key: '_onTap',
value: function _onTap(e) {
if (this.props.openPopoverOn === 'tap') {
this._handleTapOrHover(e);
}
}
}, {
key: '_onHover',
value: function _onHover(e) {
if (this.props.openPopoverOn === 'hover') {
this._handleTapOrHover(e);
}
}
}, {
key: '_handleTapOrHover',
value: function _handleTapOrHover(e) {
var _props = this.props;
var openPopoverOn = _props.openPopoverOn;
var closeOnOutsideClick = _props.closeOnOutsideClick;
var target = e.target;
if (this._toggle) {
var toggleDisabled = this._toggle.getAttribute('disabled');
if (isTarget(this._toggle, target) && toggleDisabled === null) {
if (openPopoverOn === 'tap') {
this.togglePopover(false);
} else {
this.openPopover(false);
}
return;
} else if (closeOnOutsideClick && this._popover && !isTarget(this._popover, target)) {
this.closePopover(false);
return;
}
}
for (var i = this._members.length; i--;) {
var member = this._members[i];
if (member.node === target) {
if (member.type === 'item') {
this._onItemSelection(member, e);
} else {
this._activateTab(member.id);
}
return;
}
}
}
}, {
key: '_onKeyDown',
value: function _onKeyDown(_ref) {
var keyCode = _ref.keyCode;
if (this.state.isPopoverOpen) {
if (!this.props.trapFocus && keyCode === KEYS.tab) {
this.closePopover(false);
} else if (keyCode === KEYS.escape) {
this.closePopover();
}
}
}
}, {
key: '_handleFirstTabSelection',
value: function _handleFirstTabSelection(id) {
if (this.props.type === 'tabs' && !this._activeTabId || id === this._activeTabId) {
this._activateTab(id, true, false);
}
}
}, {
key: 'render',
value: function render() {
var _props2 = this.props;
var tag = _props2.tag;
var children = _props2.children;
var props = (0, _specialAssign2.default)({}, this.props, checkedProps);
if (typeof children === 'function') {
return children(this.state.isPopoverOpen);
}
return (0, _react.createElement)(tag, props, children);
}
}]);
return Manager;
}(_react.Component);
Manager.childContextTypes = {
ariaManager: _react.PropTypes.object.isRequired
};
Manager.propTypes = checkedProps;
Manager.defaultProps = {
tag: 'div',
trapFocus: false,
freezeScroll: false,
keybindings: {
next: [{ keyCode: KEYS.arrowDown }, { keyCode: KEYS.arrowRight }],
prev: [{ keyCode: KEYS.arrowUp }, { keyCode: KEYS.arrowLeft }],
first: { keyCode: KEYS.home },
last: { keyCode: KEYS.end }
},
wrap: true,
stringSearch: true,
stringSearchDelay: 600,
collapsible: false,
openPopoverOn: 'tap',
closeOnOutsideClick: true,
closeOnItemSelection: true,
onPopoverOpen: function onPopoverOpen() {
return null;
},
onPopoverClose: function onPopoverClose() {
return null;
},
onItemSelection: function onItemSelection() {
return null;
}
};
exports.default = Manager;
module.exports = exports['default'];
/***/ },
/* 14 */
/***/ function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_14__;
/***/ },
/* 15 */
/***/ function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_15__;
/***/ },
/* 16 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _teenyTap = __webpack_require__(17);
var _teenyTap2 = _interopRequireDefault(_teenyTap);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = {
_queue: [],
add: function add(component) {
this._queue.push(component);
// attach listeners if this was the first component added
if (this._queue.length === 1) {
this._attachListeners();
}
},
remove: function remove(component) {
var pos = this._queue.indexOf(component);
if (pos > -1) {
this._queue.splice(pos, 1);
}
// detach listeners if this was the last component removed
if (this._queue.length <= 0) {
this._detachListeners();
}
},
_attachListeners: function _attachListeners() {
this._tapListener = (0, _teenyTap2.default)(document.documentElement, this._documentEvent.bind(this, '_onTap'));
document.addEventListener('mouseover', this._documentEvent.bind(this, '_onHover'));
document.addEventListener('keydown', this._documentEvent.bind(this, '_onKeyDown'));
},
_detachListeners: function _detachListeners() {
this._tapListener.remove();
document.removeEventListener('mouseover', this._documentEvent);
document.removeEventListener('keydown', this._documentEvent);
},
_documentEvent: function _documentEvent(method, e) {
for (var i = this._queue.length; i--;) {
this._queue[i][method](e);
}
}
};
module.exports = exports['default'];
/***/ },
/* 17 */
/***/ function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_17__;
/***/ }

@@ -1518,0 +1434,0 @@ /******/ ])

/*!
* React Aria 0.5.0
* React Aria 0.6.0
* https://github.com/souporserious/react-aria
* Copyright (c) 2016 React Aria Authors
*/
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("react-dom"),require("focus-trap"),require("focus-group"),require("no-scroll"),require("teeny-tap")):"function"==typeof define&&define.amd?define(["react","react-dom","focus-trap","focus-group","no-scroll","teeny-tap"],t):"object"==typeof exports?exports.ReactARIA=t(require("react"),require("react-dom"),require("focus-trap"),require("focus-group"),require("no-scroll"),require("teeny-tap")):e.ReactARIA=t(e.React,e.ReactDOM,e.focusTrap,e.createFocusGroup,e.noScroll,e.createTapListener)}(this,function(e,t,o,n,r,i){return function(e){function t(n){if(o[n])return o[n].exports;var r=o[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var o={};return t.m=e,t.c=o,t.p="dist/",t(0)}([function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0}),t.Manager=void 0;var r=o(1);Object.keys(r).forEach(function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})});var i=o(9);Object.keys(i).forEach(function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}})});var a=o(13),s=n(a);t.Manager=s["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0}),t.Item=t.Popover=t.Toggle=void 0;var r=o(2),i=n(r),a=o(6),s=n(a),p=o(8),u=n(p);t.Toggle=i["default"],t.Popover=s["default"],t.Item=u["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),p=o(3),u=(n(p),o(4)),c=(n(u),o(5)),l=n(c),f={tag:p.PropTypes.string,children:p.PropTypes.oneOfType([p.PropTypes.func,p.PropTypes.node]).isRequired},d=function(e){function t(){var e,o,n,a;r(this,t);for(var s=arguments.length,p=Array(s),u=0;u<s;u++)p[u]=arguments[u];return o=n=i(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(p))),n._handleKeyDown=function(e){(["ArrowUp","ArrowDown"," "].indexOf(e.key)>-1||"button"!==n.props.tag&&"Enter"===e.key)&&(n.context.ariaManager.isPopoverOpen?n.context.ariaManager.focusItem(0):n.context.ariaManager.openPopover()),n.props.onKeyDown&&n.props.onKeyDown(e)},a=o,i(n,a)}return a(t,e),s(t,[{key:"componentDidMount",value:function(){this.context.ariaManager.setToggleNode((0,u.findDOMNode)(this))}},{key:"render",value:function(){var e=this.context.ariaManager,t=e.type,o=e.uuid,n=e.isPopoverOpen,r=this.props,i=r.tag,a=r.disabled,s=r.children,u={role:"button",tabIndex:a?"":0,"aria-haspopup":!0,"aria-expanded":n,"aria-disabled":a,onKeyDown:this._handleKeyDown};"popover"===t&&(u.id=o),"tooltip"===t&&(u["aria-describedby"]=o);var c=(0,l["default"])(u,this.props,f);return"function"==typeof s?s(c):(0,p.createElement)(i,c,s)}}]),t}(p.Component);d.contextTypes={ariaManager:p.PropTypes.object.isRequired},d.propTypes=f,d.defaultProps={tag:"button"},t["default"]=d,e.exports=t["default"]},function(t,o){t.exports=e},function(e,o){e.exports=t},function(e,t){"use strict";function o(e,t,o){for(var n in t)t.hasOwnProperty(n)&&!o[n]&&(e[n]=t[n]);return e}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=o,e.exports=t["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),p=o(3),u=(n(p),o(4)),c=(n(u),o(7)),l=n(c),f=o(5),d=n(f),y={tag:p.PropTypes.string,children:p.PropTypes.oneOfType([p.PropTypes.func,p.PropTypes.node]).isRequired},v=function(e){function t(){return r(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"componentDidMount",value:function(){var e=this.context.ariaManager,t=e.trapFocus,o=e.initialFocus;e.onClickOutside;this._setPopoverNode(),t&&(this._focusTrap=(0,l["default"])((0,u.findDOMNode)(this),{initialFocus:o,escapeDeactivates:!1,clickOutsideDeactivates:!0}).activate())}},{key:"componentWillUnmount",value:function(){this.context.ariaManager.trapFocus&&this._focusTrap.deactivate()}},{key:"componentDidUpdate",value:function(e,t,o){this.context.ariaManager.isPopoverOpen!==o.ariaManager.isPopoverOpen&&this._setPopoverNode()}},{key:"_setPopoverNode",value:function(){this.context.ariaManager.setPopoverNode((0,u.findDOMNode)(this))}},{key:"render",value:function(){var e=this.context.ariaManager,t=e.type,o=e.uuid,n=e.isPopoverOpen,r=this.props,i=r.tag,a=r.children,s={"aria-hidden":!n};"menu"===t?s.role="menu":"modal"===t?s.role="dialog":"alert"===t?s.role="alertdialog":"tooltip"===t&&(s.id=o,s.role="tooltip"),"popover"===t&&(s["aria-labelledby"]=o);var u=(0,d["default"])(s,this.props,y);return"function"==typeof a?a(u):(0,p.createElement)(i,u,a)}}]),t}(p.Component);v.contextTypes={ariaManager:p.PropTypes.object.isRequired},v.propTypes=y,v.defaultProps={tag:"div"},t["default"]=v,e.exports=t["default"]},function(e,t){e.exports=o},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),p=o(3),u=(n(p),o(4)),c=(n(u),o(5)),l=n(c),f={tag:p.PropTypes.string,children:p.PropTypes.oneOfType([p.PropTypes.func,p.PropTypes.node]).isRequired},d=function(e){function t(){var e,o,n,a;r(this,t);for(var s=arguments.length,p=Array(s),u=0;u<s;u++)p[u]=arguments[u];return o=n=i(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(p))),n._handleKeyDown=function(e){var t=n.props.onKeyDown;[" ","Enter"].indexOf(e.key)>-1&&n.context.ariaManager.onItemSelection(n._member,e),t&&t(e)},a=o,i(n,a)}return a(t,e),s(t,[{key:"componentDidMount",value:function(){this._member={type:"item",node:(0,u.findDOMNode)(this),text:this.props.text},this.context.ariaManager.addMember(this._member)}},{key:"componentWillUnmount",value:function(){this.context.ariaManager.removeMember(this._member)}},{key:"render",value:function(){var e=this.props,t=e.tag,o=e.children,n=(0,l["default"])({role:"menuitem",tabIndex:-1,onKeyDown:this._handleKeyDown},this.props,f);return"function"==typeof o?o(n):(0,p.createElement)(t,n,o)}}]),t}(p.Component);d.contextTypes={ariaManager:p.PropTypes.object.isRequired},d.propTypes=f,d.defaultProps={tag:"div"},t["default"]=d,e.exports=t["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0}),t.TabPanel=t.Tab=t.TabList=void 0;var r=o(10),i=n(r),a=o(11),s=n(a),p=o(12),u=n(p);t.TabList=i["default"],t.Tab=s["default"],t.TabPanel=u["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),p=o(3),u=(n(p),o(5)),c=n(u),l={tag:p.PropTypes.string,children:p.PropTypes.oneOfType([p.PropTypes.func,p.PropTypes.node]).isRequired},f=function(e){function t(){return r(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"render",value:function(){var e=this.context.ariaManager.type,t=this.props,o=t.tag,n=t.children,r={role:"tablist"};"accordion"===e&&(r["aria-multiselectable"]=!0);var i=(0,c["default"])(r,this.props,l);return"function"==typeof n?n(i):(0,p.createElement)(o,i,n)}}]),t}(p.Component);f.contextTypes={ariaManager:p.PropTypes.object.isRequired},f.propTypes=l,f.defaultProps={tag:"div"},t["default"]=f,e.exports=t["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),p=o(3),u=(n(p),o(4)),c=(n(u),o(5)),l=n(c),f={tag:p.PropTypes.string,id:p.PropTypes.oneOfType([p.PropTypes.string,p.PropTypes.number]).isRequired,isActive:p.PropTypes.bool,children:p.PropTypes.oneOfType([p.PropTypes.func,p.PropTypes.node]).isRequired},d=function(e){function t(){var e,o,n,a;r(this,t);for(var s=arguments.length,p=Array(s),u=0;u<s;u++)p[u]=arguments[u];return o=n=i(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(p))),n.state={isActive:!1},n._setActiveState=function(e){n.setState({isActive:e})},n._toggleActiveState=function(){n.setState({isActive:!n.state.isActive})},n._handleKeyDown=function(e){var t=n.context.ariaManager,o=t.type,r=t.activateTab,i=n.props,a=i.id,s=i.onKeyDown;"accordion"===o&&[" ","Enter"].indexOf(e.key)>-1&&r(a),s&&s(e)},n._handleFocus=function(e){var t=n.context.ariaManager,o=t.type,r=t.activateTab,i=n.props,a=i.id,s=i.onFocus;"tabs"===o&&r(a),s&&s(e)},a=o,i(n,a)}return a(t,e),s(t,[{key:"componentDidMount",value:function(){this._member={type:"tab",id:this.props.id,node:(0,u.findDOMNode)(this),text:this.props.text,setActiveState:this._setActiveState,toggleActiveState:this._toggleActiveState},this.context.ariaManager.addMember(this._member)}},{key:"componentWillUnmount",value:function(){this.context.ariaManager.removeMember(this._member)}},{key:"render",value:function(){var e=this.context.ariaManager.type,t=this.props,o=t.tag,n=t.id,r=t.disabled,i=t.children,a=void 0!==this.props.isActive?this.props.isActive:this.state.isActive,s={id:n,role:"tab",tabIndex:"accordion"===e?0:a?0:-1,"aria-selected":a,"aria-controls":n+"-panel","aria-disabled":r,onKeyDown:this._handleKeyDown,onFocus:this._handleFocus};"accordion"===e&&(s["aria-expanded"]=a);var u=(0,l["default"])(s,this.props,f);return"function"==typeof i?i(u,a):(0,p.createElement)(o,u,i)}}]),t}(p.Component);d.contextTypes={ariaManager:p.PropTypes.object.isRequired},d.propTypes=f,d.defaultProps={tag:"div"},t["default"]=d,e.exports=t["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},p=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),u=o(3),c=(n(u),o(4)),l=(n(c),o(5)),f=n(l),d={tag:u.PropTypes.string,controlledBy:u.PropTypes.oneOfType([u.PropTypes.string,u.PropTypes.number]).isRequired,isActive:u.PropTypes.bool,children:u.PropTypes.oneOfType([u.PropTypes.func,u.PropTypes.node]).isRequired},y=function(e){function t(){var e,o,n,a;r(this,t);for(var s=arguments.length,p=Array(s),u=0;u<s;u++)p[u]=arguments[u];return o=n=i(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(p))),n.state={isActive:!1},n._setActiveState=function(e){n.setState({isActive:e})},n._toggleActiveState=function(){n.setState({isActive:!n.state.isActive})},n._handleKeyDown=function(e){e.ctrlKey&&"ArrowUp"===e.key&&n.context.ariaManager.focusTab(n.props.controlledBy),n.props.onKeyDown&&n.props.onKeyDown(e)},a=o,i(n,a)}return a(t,e),p(t,[{key:"componentDidMount",value:function(){this.context.ariaManager.addPanel({controlledBy:this.props.controlledBy,node:(0,c.findDOMNode)(this),setActiveState:this._setActiveState,toggleActiveState:this._toggleActiveState})}},{key:"render",value:function(){var e=this.props,t=e.tag,o=e.controlledBy,n=(e.disabled,e.children),r=void 0!==this.props.isActive?this.props.isActive:this.state.isActive,i={id:o+"-panel",role:"tabpanel","aria-hidden":!r,"aria-labelledby":o,onKeyDown:this._handleKeyDown};r||(i.style=s({display:"none"},this.props.style));var a=(0,f["default"])(i,this.props,d);return"function"==typeof n?n(a,r):(0,u.createElement)(t,a,n)}}]),t}(u.Component);y.contextTypes={ariaManager:u.PropTypes.object.isRequired},y.propTypes=d,y.defaultProps={tag:"div"},t["default"]=y,e.exports=t["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),p=o(3),u=(n(p),o(14)),c=n(u),l=o(15),f=n(l),d=o(16),y=n(d),v=o(5),h=n(v),b=function(e,t){return e===t||e.contains(t)},_={tab:9,escape:27,end:35,home:36,arrowLeft:37,arrowUp:38,arrowRight:39,arrowDown:40},P={type:p.PropTypes.oneOf(["menu","popover","modal","tooltip","alert","tabs","accordion"]).isRequired,tag:p.PropTypes.string,trapFocus:p.PropTypes.bool,freezeScroll:p.PropTypes.bool,activeTabId:p.PropTypes.oneOfType([p.PropTypes.string,p.PropTypes.number]),children:p.PropTypes.oneOfType([p.PropTypes.func,p.PropTypes.node]).isRequired,keybindings:p.PropTypes.shape({next:p.PropTypes.oneOfType([p.PropTypes.object,p.PropTypes.array]),prev:p.PropTypes.oneOfType([p.PropTypes.object,p.PropTypes.array]),first:p.PropTypes.oneOfType([p.PropTypes.object,p.PropTypes.array]),last:p.PropTypes.oneOfType([p.PropTypes.object,p.PropTypes.array])}),wrap:p.PropTypes.bool,stringSearch:p.PropTypes.bool,stringSearchDelay:p.PropTypes.number,collapsible:p.PropTypes.bool,openPopoverOn:p.PropTypes.oneOf(["tap","hover"]),closeOnOutsideClick:p.PropTypes.bool,closeOnItemSelection:p.PropTypes.bool,accordion:p.PropTypes.bool,onPopoverOpen:p.PropTypes.func,onPopoverClose:p.PropTypes.func,onItemSelection:p.PropTypes.func},m=function(e){function t(e){r(this,t);var o=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return o._onItemSelection=function(e,t){var n=e.value||e.node.innerHTML;o.props.closeOnItemSelection&&o.closePopover(),o.props.onItemSelection(n,t)},o._setToggleNode=function(e){o._toggle=e},o._setPopoverNode=function(e){o._popover=e},o._addMember=function(e){var t=o.props.activeTabId,n=e.id,r=e.index,i=e.node,a=e.text;void 0===r?o._members.push(e):o._members.splice(r,0,e),o._focusGroup.addMember({node:i,text:a||i.innerHTML}),"tab"===e.type&&(t===n?o._activateTab(t,!0,!1):o._handleFirstTabSelection(n))},o._removeMember=function(e){var t=o._members.indexOf(e);t>-1&&(o._members.splice(e,1),o._focusGroup.removeMember(e.node))},o._focusItem=function(e){o._focusGroup.focusNodeAtIndex(e)},o.openPopover=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=o.props,n=t.freezeScroll,r=t.onPopoverOpen;o.state.isPopoverOpen||(o.setState({isPopoverOpen:!0}),n&&f["default"].on(),r(),e&&setTimeout(function(){o._focusItem(0)},60))},o.closePopover=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=o.props,n=t.freezeScroll,r=t.onPopoverClose;o.state.isPopoverOpen&&(o.setState({isPopoverOpen:!1}),n&&f["default"].off(),r(),e&&setTimeout(function(){o._toggle.focus()},60))},o.togglePopover=function(e){o.state.isPopoverOpen?o.closePopover(e):o.openPopover(e)},o._addPanel=function(e){var t=o.props.activeTabId,n=e.controlledBy;o._panels.push(e),t===n?o._activateTab(t,!0,!1):o._handleFirstTabSelection(e.controlledBy)},o._focusTab=function(e){var t=o._members.filter(function(t){return t.id===e});t&&t.node.focus()},o._activateTab=function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=o.props,i=r.type,a=r.onChange;if("tabs"===i){if(e===o._activeTabId&&!t)return;o._activeTabId=e}if(n&&"function"==typeof a)return void a(e);for(var s=o._members.length;s--;){var p=o._members[s];"accordion"===i?p.id===e&&p.toggleActiveState():p.setActiveState(e===p.id)}for(var u=o._panels.length;u--;){var c=o._panels[u];"accordion"===i?c.controlledBy===e&&c.toggleActiveState():c.setActiveState(e===c.controlledBy)}},o.state={isPopoverOpen:!1},o._focusGroup=(0,c["default"])(e),o._toggle=null,o._popover=null,o._members=[],o._panels=[],o._activeTabId=e.activeTabId,o._uuid="RA"+Math.abs(~~(Math.random()*new Date)),o}return a(t,e),s(t,[{key:"getChildContext",value:function(){return{ariaManager:{uuid:this._uuid,type:this.props.type,trapFocus:this.props.trapFocus,initialFocus:this.props.initialFocus,isPopoverOpen:this.state.isPopoverOpen,onItemSelection:this._onItemSelection,setToggleNode:this._setToggleNode,setPopoverNode:this._setPopoverNode,addMember:this._addMember,addPanel:this._addPanel,removeMember:this._removeMember,activateTab:this._activateTab,focusItem:this._focusItem,openPopover:this.openPopover,closePopover:this.closePopover,togglePopover:this.togglePopover}}}},{key:"componentWillMount",value:function(){this._focusGroup.activate(),y["default"].add(this)}},{key:"componentWillUnmount",value:function(){this._focusGroup.deactivate(),y["default"].remove(this)}},{key:"_onTap",value:function(e){"tap"===this.props.openPopoverOn&&this._handleTapOrHover(e)}},{key:"_onHover",value:function(e){"hover"===this.props.openPopoverOn&&this._handleTapOrHover(e)}},{key:"_handleTapOrHover",value:function(e){var t=this.props,o=t.openPopoverOn,n=t.closeOnOutsideClick,r=e.target;if(this._toggle){var i=this._toggle.getAttribute("disabled");if(b(this._toggle,r)&&null===i)return void("tap"===o?this.togglePopover(!1):this.openPopover(!1));if(n&&this._popover&&!b(this._popover,r))return void this.closePopover(!1)}for(var a=this._members.length;a--;){var s=this._members[a];if(s.node===r)return void("item"===s.type?this._onItemSelection(s,e):this._activateTab(s.id))}}},{key:"_onKeyDown",value:function(e){var t=e.keyCode;this.state.isPopoverOpen&&(this.props.trapFocus||t!==_.tab?t===_.escape&&this.closePopover():this.closePopover(!1))}},{key:"_handleFirstTabSelection",value:function(e){("tabs"===this.props.type&&!this._activeTabId||e===this._activeTabId)&&this._activateTab(e,!0,!1)}},{key:"render",value:function(){var e=this.props,t=e.tag,o=e.children,n=(0,h["default"])({},this.props,P);return"function"==typeof o?o(this.state.isPopoverOpen):(0,p.createElement)(t,n,o)}}]),t}(p.Component);m.childContextTypes={ariaManager:p.PropTypes.object.isRequired},m.propTypes=P,m.defaultProps={tag:"div",trapFocus:!1,freezeScroll:!1,keybindings:{next:[{keyCode:_.arrowDown},{keyCode:_.arrowRight}],prev:[{keyCode:_.arrowUp},{keyCode:_.arrowLeft}],first:{keyCode:_.home},last:{keyCode:_.end}},wrap:!0,stringSearch:!0,stringSearchDelay:600,collapsible:!1,openPopoverOn:"tap",closeOnOutsideClick:!0,closeOnItemSelection:!0,onPopoverOpen:function(){return null},onPopoverClose:function(){return null},onItemSelection:function(){return null}},t["default"]=m,e.exports=t["default"]},function(e,t){e.exports=n},function(e,t){e.exports=r},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var r=o(17),i=n(r);t["default"]={_queue:[],add:function(e){this._queue.push(e),1===this._queue.length&&this._attachListeners()},remove:function(e){var t=this._queue.indexOf(e);t>-1&&this._queue.splice(t,1),this._queue.length<=0&&this._detachListeners()},_attachListeners:function(){this._tapListener=(0,i["default"])(document.documentElement,this._documentEvent.bind(this,"_onTap")),document.addEventListener("mouseover",this._documentEvent.bind(this,"_onHover")),document.addEventListener("keydown",this._documentEvent.bind(this,"_onKeyDown"))},_detachListeners:function(){this._tapListener.remove(),document.removeEventListener("mouseover",this._documentEvent),document.removeEventListener("keydown",this._documentEvent)},_documentEvent:function(e,t){for(var o=this._queue.length;o--;)this._queue[o][e](t)}},e.exports=t["default"]},function(e,t){e.exports=i}])});
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("react-dom"),require("focus-trap"),require("no-scroll"),require("focus-group")):"function"==typeof define&&define.amd?define(["react","react-dom","focus-trap","no-scroll","focus-group"],t):"object"==typeof exports?exports.ReactARIA=t(require("react"),require("react-dom"),require("focus-trap"),require("no-scroll"),require("focus-group")):e.ReactARIA=t(e.React,e.ReactDOM,e.focusTrap,e.noScroll,e.createFocusGroup)}(this,function(e,t,o,n,r){return function(e){function t(n){if(o[n])return o[n].exports;var r=o[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var o={};return t.m=e,t.c=o,t.p="dist/",t(0)}([function(e,t,o){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t["default"]=e,t}Object.defineProperty(t,"__esModule",{value:!0}),t.Tabs=t.Overlays=void 0;var r=o(1),i=n(r),a=o(13),s=n(a);t.Overlays=i,t.Tabs=s},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0}),t.Item=t.Overlay=t.Trigger=void 0;var r=o(2),i=n(r),a=o(6),s=n(a),c=o(12),u=n(c);t.Trigger=i["default"],t.Overlay=s["default"],t.Item=u["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),c=o(3),u=(n(c),o(4)),l=(n(u),o(5)),p=n(l),f={tag:c.PropTypes.string,isOpen:c.PropTypes.bool,toggleOn:c.PropTypes.array,onToggle:c.PropTypes.func},d=function(e){function t(){var e,o,n,a;r(this,t);for(var s=arguments.length,c=Array(s),u=0;u<s;u++)c[u]=arguments[u];return o=n=i(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(c))),n._handleKeyDown=function(e){var t=n.props,o=t.tag,r=(t.onToggle,t.onKeyDown);(["ArrowUp","ArrowDown"].indexOf(e.key)>-1||"button"!==o&&["Enter"," "].indexOf(e.key)>-1)&&n._toggle(e),"function"==typeof r&&r(e)},a=o,i(n,a)}return a(t,e),s(t,[{key:"_handleEvent",value:function(e,t){var o=this.props["on"+e];this._toggle(t),"function"==typeof o&&o(t)}},{key:"_toggle",value:function(e){e.preventDefault(),this.props.onToggle()}},{key:"_getProps",value:function(){var e=this.props,t=e.disabled,o=e.type,n=e.controls,r=e.isOpen,i=e.toggleOn,a={role:"button",tabIndex:t?"":0,"aria-disabled":t,onKeyDown:this._handleKeyDown};return"modal"!==o&&(a["aria-haspopup"]=!0,a["aria-expanded"]=r),"popover"===o?a.id=n:"tooltip"===o&&(a["aria-describedby"]=n),i.indexOf("click")>-1&&(a.onClick=this._handleEvent.bind(this,"click")),i.indexOf("hover")>-1&&(a.onMouseOver=this._handleEvent.bind(this,"mouseOver"),a.onMouseOut=this._handleEvent.bind(this,"mouseOut")),i.indexOf("focus")>-1&&(a.onFocus=this._handleEvent.bind(this,"focus"),a.onBlur=this._handleEvent.bind(this,"blur")),(0,p["default"])(a,this.props,f)}},{key:"render",value:function(){var e=this.props,t=e.tag,o=e.children,n=this._getProps();return"function"==typeof o?o(n):(0,c.createElement)(t,n,o)}}]),t}(c.Component);d.propTypes=f,d.defaultProps={tag:"button",toggleOn:["click"]},t["default"]=d,e.exports=t["default"]},function(t,o){t.exports=e},function(e,o){e.exports=t},function(e,t){"use strict";function o(e,t,o){for(var n in t)t.hasOwnProperty(n)&&!o[n]&&(e[n]=t[n]);return e}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=o,e.exports=t["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),c=o(3),u=(n(c),o(4)),l=(n(u),o(7)),p=n(l),f=o(8),d=n(f),y=o(9),h=n(y),v=o(11),b=n(v),_=o(5),m=n(_),g={tag:c.PropTypes.string,id:c.PropTypes.string,type:c.PropTypes.oneOf(["menu","popover","modal","tooltip","alert"]),focusOnMount:c.PropTypes.bool,trapFocus:c.PropTypes.bool,initialFocus:c.PropTypes.any,freezeScroll:c.PropTypes.bool,closeOnEscapeKey:c.PropTypes.bool,closeOnOutsideClick:c.PropTypes.bool,onRequestClose:c.PropTypes.func,onItemSelection:c.PropTypes.func},O=function(e){function t(){var e,o,n,a;r(this,t);for(var s=arguments.length,c=Array(s),l=0;l<s;l++)c[l]=arguments[l];return o=n=i(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(c))),n.members=new h["default"](n.props),n.focusItem=function(e){n.members.focus(e)},n._handleDocumentKeyDown=function(e){var t=e.keyCode;t===b["default"].escape&&n.props.onRequestClose()},n._handleDocumentClick=function(e){var t=e.target,o=(0,u.findDOMNode)(n);o===t||o.contains(t)||n.props.onRequestClose()},a=o,i(n,a)}return a(t,e),s(t,[{key:"getChildContext",value:function(){return{overlayManager:{members:this.members,onItemSelection:this.props.onItemSelection}}}},{key:"componentDidMount",value:function(){var e=this.props,t=e.trapFocus,o=e.initialFocus,n=e.freezeScroll;this._lastActiveElement=document.activeElement,t&&(this._focusTrap=(0,p["default"])((0,u.findDOMNode)(this),{initialFocus:o,escapeDeactivates:!1,clickOutsideDeactivates:!0}).activate()),n&&d["default"].on(),"first"===o&&this.members.focus(0),this._registerEvents()}},{key:"componentWillUnmount",value:function(){this.props.trapFocus&&this._focusTrap.deactivate(),this.props.freezeScroll&&d["default"].off(),this._lastActiveElement&&this._lastActiveElement.focus(),this._unregisterEvents()}},{key:"_registerEvents",value:function(){document.addEventListener("keydown",this._handleDocumentKeyDown),this.props.closeOnOutsideClick&&document.addEventListener("click",this._handleDocumentClick)}},{key:"_unregisterEvents",value:function(){document.removeEventListener("keydown",this._handleDocumentKeyDown),this.props.closeOnOutsideClick&&document.removeEventListener("click",this._handleDocumentClick)}},{key:"_getProps",value:function(){var e=this.props,t=e.type,o=e.id,n={};return"menu"===t?n.role="menu":"modal"===t?n.role="dialog":"alert"===t?n.role="alertdialog":"tooltip"===t?(n.id=o,n.role="tooltip"):"popover"===t&&(n["aria-labelledby"]=o),(0,m["default"])(n,this.props,g)}},{key:"render",value:function(){var e=this.props,t=e.tag,o=e.children,n=this._getProps();return"function"==typeof o?o(n):(0,c.createElement)(t,n,o)}}]),t}(c.Component);O.childContextTypes={overlayManager:c.PropTypes.object},O.propTypes=g,O.defaultProps={tag:"div",type:"popover",initialFocus:"first",closeOnEscapeKey:!0,closeOnOutsideClick:!0,onRequestClose:function(){return null},onItemSelection:function(){return null}},t["default"]=O,e.exports=t["default"]},function(e,t){e.exports=o},function(e,t){e.exports=n},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},a=o(10),s=n(a),c=o(11),u=n(c),l={keybindings:{next:[{keyCode:u["default"].arrowDown},{keyCode:u["default"].arrowRight}],prev:[{keyCode:u["default"].arrowUp},{keyCode:u["default"].arrowLeft}],first:{keyCode:u["default"].home},last:{keyCode:u["default"].end}},wrap:!0,stringSearch:!0,stringSearchDelay:600},p=function f(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r(this,f),this.add=function(t){var o=(t.id,t.index),n=t.node,r=t.text;void 0===o?e.collection.push(t):e.collection.splice(o,0,t),e.focusGroup.addMember({node:n,text:r||n.innerHTML}),1===e.collection.length&&e.focusGroup.activate(),"function"==typeof e.options.onAdd&&e.options.onAdd(t)},this.remove=function(t){var o=e.collection.indexOf(t);o>-1&&(e.collection.splice(t,1),e.focusGroup.removeMember(t.node)),e.collection.length<=0&&e.focusGroup.activate(),"function"==typeof e.options.onRemove&&e.options.onRemove(t)},this.focus=function(t){e.focusGroup.focusNodeAtIndex(t)},this.collection=[],this.options=i({},l,t),this.focusGroup=(0,s["default"])(this.options)};t["default"]=p,e.exports=t["default"]},function(e,t){e.exports=r},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t["default"]={tab:9,escape:27,end:35,home:36,arrowLeft:37,arrowUp:38,arrowRight:39,arrowDown:40},e.exports=t["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),c=o(3),u=(n(c),o(4)),l=(n(u),o(5)),p=n(l),f={tag:c.PropTypes.string},d=function(e){function t(){var e,o,n,a;r(this,t);for(var s=arguments.length,c=Array(s),u=0;u<s;u++)c[u]=arguments[u];return o=n=i(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(c))),n._handleClick=function(e){var t=n.props.onClick;n._handleSelection(e),"function"==typeof t&&t(e)},n._handleKeyDown=function(e){var t=n.props.onKeyDown;[" ","Enter"].indexOf(e.key)>-1&&(e.preventDefault(),n._handleSelection(e)),"function"==typeof t&&t(e)},n._handleSelection=function(e){var t=n.props.onSelect;n.context.overlayManager.onItemSelection(n._member,e),"function"==typeof t&&t(n._member,e)},a=o,i(n,a)}return a(t,e),s(t,[{key:"componentDidMount",value:function(){this._member={type:"item",node:(0,u.findDOMNode)(this),text:this.props.text},this.props.value&&(this._member.value=this.props.value),this.context.overlayManager.members.add(this._member)}},{key:"componentWillUnmount",value:function(){this.context.overlayManager.members.remove(this._member)}},{key:"render",value:function(){var e=this.props,t=e.tag,o=e.children,n=(0,p["default"])({role:"menuitem",tabIndex:-1,onClick:this._handleClick,onKeyDown:this._handleKeyDown},this.props,f);return"function"==typeof o?o(n):(0,c.createElement)(t,n,o)}}]),t}(c.Component);d.contextTypes={overlayManager:c.PropTypes.object},d.propTypes=f,d.defaultProps={tag:"div"},t["default"]=d,e.exports=t["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0}),t.TabPanel=t.Tab=t.TabList=t.Manager=void 0;var r=o(14),i=n(r),a=o(15),s=n(a),c=o(16),u=n(c),l=o(17),p=n(l);t.Manager=i["default"],t.TabList=s["default"],t.Tab=u["default"],t.TabPanel=p["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},c=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),u=o(3),l=(n(u),o(4)),p=(n(l),o(9)),f=n(p),d=o(5),y=n(d),h={tag:u.PropTypes.string,activeTabId:u.PropTypes.string,accordion:u.PropTypes.bool,multiselect:u.PropTypes.bool,onChange:u.PropTypes.func},v=function(e){function t(e){r(this,t);var o=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return o._addMember=function(e){var t=e.id;t===o.props.activeTabId&&o._activateTab(t,!0,!1)},o._addPanel=function(e){var t=e.controlledBy;o._panels.push(e),t===o.props.activeTabId&&o._activateTab(t,!0,!1)},o._activateTab=function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(e!==o.props.activeTabId||t){var r=o.props.onChange;n&&"function"==typeof r?r(e):o._setActiveStates(e)}},o._members=new f["default"](s({},o.props,{onAdd:o._addMember})),o._panels=[],o}return a(t,e),c(t,[{key:"getChildContext",value:function(){return{tabs:{accordion:this.props.accordion,multiselect:this.props.multiselect,members:this._members,addPanel:this._addPanel,activateTab:this._activateTab,focusTab:this.focusTab}}}},{key:"_setActiveStates",value:function(e){for(var t=this.props,o=t.accordion,n=t.multiselect,r=this._members.collection,i=r.length;i--;){var a=r[i];o?a.id===e?a.toggleActiveState():n||a.setActiveState(!1):a.setActiveState(a.id===e)}for(var s=this._panels.length;s--;){var c=this._panels[s];o?c.controlledBy===e?c.toggleActiveState():n||c.setActiveState(!1):c.setActiveState(c.controlledBy===e)}}},{key:"render",value:function(){var e=(0,y["default"])({},this.props,h);return(0,u.createElement)(this.props.tag,e)}}]),t}(u.Component);v.childContextTypes={tabs:u.PropTypes.object},v.propTypes=h,v.defaultProps={tag:"div"},t["default"]=v,e.exports=t["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),c=o(3),u=(n(c),o(5)),l=n(u),p={tag:c.PropTypes.string,children:c.PropTypes.oneOfType([c.PropTypes.func,c.PropTypes.node]).isRequired},f=function(e){function t(){return r(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"render",value:function(){var e=this.context.tabs,t=e.accordion,o=e.multiselect,n=this.props,r=n.tag,i=n.children,a={role:"tablist"};t&&o&&(a["aria-multiselectable"]=!0);var s=(0,l["default"])(a,this.props,p);return"function"==typeof i?i(s):(0,c.createElement)(r,s,i)}}]),t}(c.Component);f.contextTypes={tabs:c.PropTypes.object.isRequired},f.propTypes=p,f.defaultProps={tag:"div"},t["default"]=f,e.exports=t["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),c=o(3),u=(n(c),o(4)),l=(n(u),o(5)),p=n(l),f={id:c.PropTypes.oneOfType([c.PropTypes.string,c.PropTypes.number]).isRequired,isActive:c.PropTypes.bool,tag:c.PropTypes.string},d=function(e){function t(){var e,o,n,a;r(this,t);for(var s=arguments.length,c=Array(s),u=0;u<s;u++)c[u]=arguments[u];return o=n=i(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(c))),n.state={isActive:!1},n._setActiveState=function(e){n.setState({isActive:e})},n._toggleActiveState=function(){n.setState({isActive:!n.state.isActive})},n._handleClick=function(e){var t=n.props.onClick;n.context.tabs.activateTab(n.props.id),"function"==typeof t&&t(e)},n._handleKeyDown=function(e){var t=n.props,o=t.id,r=t.tag,i=t.onKeyDown;"button"!==r&&["Enter"," "].indexOf(e.key)>-1&&(e.preventDefault(),n.context.tabs.activateTab(o)),i&&i(e)},n._handleFocus=function(e){var t=n.props.onFocus;n.context.tabs.activateTab(n.props.id),"function"==typeof t&&t(e)},a=o,i(n,a)}return a(t,e),s(t,[{key:"componentDidMount",value:function(){this._member={id:this.props.id,node:(0,u.findDOMNode)(this),text:this.props.text,setActiveState:this._setActiveState,toggleActiveState:this._toggleActiveState},this.context.tabs.members.add(this._member)}},{key:"componentWillUnmount",value:function(){this.context.tabs.members.remove(this._member)}},{key:"render",value:function(){var e=this.context.tabs.accordion,t=this.props,o=t.tag,n=t.id,r=t.disabled,i=t.children,a=void 0!==this.props.isActive?this.props.isActive:this.state.isActive,s={id:n,role:"tab",tabIndex:e?0:a?0:-1,"aria-selected":a,"aria-controls":n+"-panel","aria-disabled":r};e?(s["aria-expanded"]=a,s.onClick=this._handleClick,s.onKeyDown=this._handleKeyDown):s.onFocus=this._handleFocus;var u=(0,p["default"])(s,this.props,f);return"function"==typeof i?i(u,a):(0,c.createElement)(o,u,i)}}]),t}(c.Component);d.contextTypes={tabs:c.PropTypes.object.isRequired},d.propTypes=f,d.defaultProps={tag:"div"},t["default"]=d,e.exports=t["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},c=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),u=o(3),l=(n(u),o(4)),p=(n(l),o(5)),f=n(p),d={controlledBy:u.PropTypes.oneOfType([u.PropTypes.string,u.PropTypes.number]).isRequired,isActive:u.PropTypes.bool,tag:u.PropTypes.string},y=function(e){function t(){var e,o,n,a;r(this,t);for(var s=arguments.length,c=Array(s),u=0;u<s;u++)c[u]=arguments[u];return o=n=i(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(c))),n.state={isActive:!1},n._setActiveState=function(e){n.setState({isActive:e})},n._toggleActiveState=function(){n.setState({isActive:!n.state.isActive})},n._handleKeyDown=function(e){var t=n.props.onKeyDown;e.ctrlKey&&"ArrowUp"===e.key&&n.context.members.focus(n.props.controlledBy),"function"==typeof t&&t(e)},a=o,i(n,a)}return a(t,e),c(t,[{key:"componentDidMount",value:function(){this.context.tabs.addPanel({controlledBy:this.props.controlledBy,node:(0,l.findDOMNode)(this),setActiveState:this._setActiveState,toggleActiveState:this._toggleActiveState})}},{key:"render",value:function(){var e=this.props,t=e.tag,o=e.controlledBy,n=(e.disabled,e.children),r=void 0!==this.props.isActive?this.props.isActive:this.state.isActive,i={id:o+"-panel",role:"tabpanel","aria-hidden":!r,"aria-labelledby":o,onKeyDown:this._handleKeyDown};r||(i.style=s({display:"none"},this.props.style));var a=(0,f["default"])(i,this.props,d);return"function"==typeof n?n(a,r):(0,u.createElement)(t,a,n)}}]),t}(u.Component);y.contextTypes={tabs:u.PropTypes.object.isRequired},y.propTypes=d,y.defaultProps={tag:"div"},t["default"]=y,e.exports=t["default"]}])});

@@ -55,2 +55,3 @@ 'use strict';

tag: _react.PropTypes.string,
isOpen: _react.PropTypes.bool,
trapFocus: _react.PropTypes.bool,

@@ -272,3 +273,3 @@ freezeScroll: _react.PropTypes.bool,

_this.state = {
isPopoverOpen: false
isPopoverOpen: props.isOpen
};

@@ -317,2 +318,9 @@

}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (this.props.isOpen !== nextProps.isOpen) {
this.setState({ isPopoverOpen: nextProps.isOpen });
}
}
}, {
key: 'componentWillUnmount',

@@ -346,3 +354,3 @@ value: function componentWillUnmount() {

if (this._toggle) {
if (this._toggle && this._toggle.tagName !== 'INPUT') {
var toggleDisabled = this._toggle.getAttribute('disabled');

@@ -421,2 +429,3 @@

tag: 'div',
isOpen: false,
trapFocus: false,

@@ -423,0 +432,0 @@ freezeScroll: false,

@@ -69,2 +69,7 @@ 'use strict';

};
if (this.props.value) {
this._member.value = this.props.value;
}
this.context.ariaManager.addMember(this._member);

@@ -71,0 +76,0 @@ }

@@ -30,4 +30,3 @@ 'use strict';

var checkedProps = {
tag: _react.PropTypes.string,
children: _react.PropTypes.oneOfType([_react.PropTypes.func, _react.PropTypes.node]).isRequired
tag: _react.PropTypes.string
};

@@ -34,0 +33,0 @@

@@ -6,34 +6,15 @@ 'use strict';

});
exports.Manager = undefined;
exports.Tabs = exports.Overlays = undefined;
var _Menu = require('./Menu');
var _Overlays2 = require('./Overlays');
Object.keys(_Menu).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _Menu[key];
}
});
});
var _Overlays = _interopRequireWildcard(_Overlays2);
var _Tabs = require('./Tabs');
var _Tabs2 = require('./Tabs');
Object.keys(_Tabs).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _Tabs[key];
}
});
});
var _Tabs = _interopRequireWildcard(_Tabs2);
var _Manager2 = require('./Manager');
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
var _Manager3 = _interopRequireDefault(_Manager2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.Manager = _Manager3.default;
exports.Overlays = _Overlays;
exports.Tabs = _Tabs;

@@ -6,4 +6,8 @@ 'use strict';

});
exports.TabPanel = exports.Tab = exports.TabList = undefined;
exports.TabPanel = exports.Tab = exports.TabList = exports.Manager = undefined;
var _Manager2 = require('./Manager');
var _Manager3 = _interopRequireDefault(_Manager2);
var _TabList2 = require('./TabList');

@@ -23,4 +27,5 @@

exports.Manager = _Manager3.default;
exports.TabList = _TabList3.default;
exports.Tab = _Tab3.default;
exports.TabPanel = _TabPanel3.default;

@@ -17,3 +17,3 @@ 'use strict';

var _specialAssign = require('../special-assign');
var _specialAssign = require('../helpers/special-assign');

@@ -31,6 +31,5 @@ var _specialAssign2 = _interopRequireDefault(_specialAssign);

var checkedProps = {
tag: _react.PropTypes.string,
id: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]).isRequired,
isActive: _react.PropTypes.bool,
children: _react.PropTypes.oneOfType([_react.PropTypes.func, _react.PropTypes.node]).isRequired
tag: _react.PropTypes.string
};

@@ -58,14 +57,23 @@

_this.setState({ isActive: !_this.state.isActive });
}, _this._handleClick = function (e) {
var onClick = _this.props.onClick;
_this.context.tabs.activateTab(_this.props.id);
if (typeof onClick === 'function') {
onClick(e);
}
}, _this._handleKeyDown = function (e) {
var _this$context$ariaMan = _this.context.ariaManager;
var type = _this$context$ariaMan.type;
var activateTab = _this$context$ariaMan.activateTab;
var _this$props = _this.props;
var id = _this$props.id;
var tag = _this$props.tag;
var onKeyDown = _this$props.onKeyDown;
if (type === 'accordion' && [' ', 'Enter'].indexOf(e.key) > -1) {
activateTab(id);
if (tag !== 'button' && ['Enter', ' '].indexOf(e.key) > -1) {
e.preventDefault();
_this.context.tabs.activateTab(id);
}
if (onKeyDown) {

@@ -75,14 +83,8 @@ onKeyDown(e);

}, _this._handleFocus = function (e) {
var _this$context$ariaMan2 = _this.context.ariaManager;
var type = _this$context$ariaMan2.type;
var activateTab = _this$context$ariaMan2.activateTab;
var _this$props2 = _this.props;
var id = _this$props2.id;
var onFocus = _this$props2.onFocus;
var onFocus = _this.props.onFocus;
if (type === 'tabs') {
activateTab(id);
}
if (onFocus) {
_this.context.tabs.activateTab(_this.props.id);
if (typeof onFocus === 'function') {
onFocus(e);

@@ -97,3 +99,2 @@ }

this._member = {
type: 'tab',
id: this.props.id,

@@ -105,3 +106,3 @@ node: (0, _reactDom.findDOMNode)(this),

};
this.context.ariaManager.addMember(this._member);
this.context.tabs.members.add(this._member);
}

@@ -111,3 +112,3 @@ }, {

value: function componentWillUnmount() {
this.context.ariaManager.removeMember(this._member);
this.context.tabs.members.remove(this._member);
}

@@ -117,3 +118,3 @@ }, {

value: function render() {
var type = this.context.ariaManager.type;
var accordion = this.context.tabs.accordion;
var _props = this.props;

@@ -129,12 +130,14 @@ var tag = _props.tag;

role: 'tab',
tabIndex: type === 'accordion' ? 0 : isActive ? 0 : -1,
tabIndex: accordion ? 0 : isActive ? 0 : -1,
'aria-selected': isActive,
'aria-controls': id + '-panel',
'aria-disabled': disabled,
onKeyDown: this._handleKeyDown,
onFocus: this._handleFocus
'aria-disabled': disabled
};
if (type === 'accordion') {
if (accordion) {
componentProps['aria-expanded'] = isActive;
componentProps['onClick'] = this._handleClick;
componentProps['onKeyDown'] = this._handleKeyDown;
} else {
componentProps['onFocus'] = this._handleFocus;
}

@@ -156,3 +159,3 @@

Tab.contextTypes = {
ariaManager: _react.PropTypes.object.isRequired
tabs: _react.PropTypes.object.isRequired
};

@@ -159,0 +162,0 @@ Tab.propTypes = checkedProps;

@@ -13,3 +13,3 @@ 'use strict';

var _specialAssign = require('../special-assign');
var _specialAssign = require('../helpers/special-assign');

@@ -43,3 +43,5 @@ var _specialAssign2 = _interopRequireDefault(_specialAssign);

value: function render() {
var type = this.context.ariaManager.type;
var _context$tabs = this.context.tabs;
var accordion = _context$tabs.accordion;
var multiselect = _context$tabs.multiselect;
var _props = this.props;

@@ -53,3 +55,3 @@ var tag = _props.tag;

if (type === 'accordion') {
if (accordion && multiselect) {
componentProps['aria-multiselectable'] = true;

@@ -72,3 +74,3 @@ }

TabList.contextTypes = {
ariaManager: _react.PropTypes.object.isRequired
tabs: _react.PropTypes.object.isRequired
};

@@ -75,0 +77,0 @@ TabList.propTypes = checkedProps;

@@ -19,3 +19,3 @@ 'use strict';

var _specialAssign = require('../special-assign');
var _specialAssign = require('../helpers/special-assign');

@@ -33,6 +33,5 @@ var _specialAssign2 = _interopRequireDefault(_specialAssign);

var checkedProps = {
tag: _react.PropTypes.string,
controlledBy: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]).isRequired,
isActive: _react.PropTypes.bool,
children: _react.PropTypes.oneOfType([_react.PropTypes.func, _react.PropTypes.node]).isRequired
tag: _react.PropTypes.string
};

@@ -61,7 +60,11 @@

}, _this._handleKeyDown = function (e) {
var onKeyDown = _this.props.onKeyDown;
if (e.ctrlKey && e.key === 'ArrowUp') {
_this.context.ariaManager.focusTab(_this.props.controlledBy);
_this.context.members.focus(_this.props.controlledBy);
}
if (_this.props.onKeyDown) {
_this.props.onKeyDown(e);
if (typeof onKeyDown === 'function') {
onKeyDown(e);
}

@@ -74,3 +77,3 @@ }, _temp), _possibleConstructorReturn(_this, _ret);

value: function componentDidMount() {
this.context.ariaManager.addPanel({
this.context.tabs.addPanel({
controlledBy: this.props.controlledBy,

@@ -120,3 +123,3 @@ node: (0, _reactDom.findDOMNode)(this),

TabPanel.contextTypes = {
ariaManager: _react.PropTypes.object.isRequired
tabs: _react.PropTypes.object.isRequired
};

@@ -123,0 +126,0 @@ TabPanel.propTypes = checkedProps;

{
"name": "react-aria",
"version": "0.5.0",
"version": "0.6.0",
"description": "Utilities to help create React ARIA components.",

@@ -53,4 +53,3 @@ "main": "lib/react-aria.js",

"focus-trap": "^2.1.0",
"no-scroll": "^2.0.0",
"teeny-tap": "^0.2.0"
"no-scroll": "^2.0.0"
},

@@ -74,2 +73,3 @@ "devDependencies": {

"react-a11y": "^0.3.3",
"react-axe": "^2.1.0",
"react-dom": "15.3.2",

@@ -76,0 +76,0 @@ "react-hot-loader": "^1.3.1",

@@ -6,6 +6,8 @@ ## React ARIA

Utilities to help compose ARIA compliant components.
Utility components to help compose ARIA components in React. Please feel free to file an issue or submit a PR if you feel these can be more ARIA compliant ❤️
## Usage
`yarn add react-aria`
`npm install react-aria --save`

@@ -18,8 +20,8 @@

### Example
### Building a select menu
```js
import { AriaManager, AriaToggle, AriaPopover, AriaItem } from 'react-aria'
```jsx
import { Overlays: { Trigger, Overlay, Item } } from 'react-aria'
class Dropdown extends Component {
class SelectMenu extends Component {
state = {

@@ -29,24 +31,34 @@ selection: null

_handleSelection = (value, e) => {
this.setState({ selection: value })
_handleSelection = (item, e) => {
this.setState({
selection: item.value,
isOpen: false
})
}
render() {
const { isOpen } = this.state
return (
<AriaManager onItemSelection={this._handleSelection}>
{ isOpen =>
<div>
<AriaToggle>
{this.state.selection || 'Select A Dropdown Item'}
</AriaToggle>
{ isOpen &&
<AriaPopover role="menu">
<AriaItem>Apples</AriaItem>
<AriaItem>Pears</AriaItem>
<AriaItem>Oranges</AriaItem>
</AriaPopover>
}
</div>
<div>
<Trigger
controls="select-menu"
type="menu"
isOpen={isOpen}
onToggle={() => this.setState({ isOpen: !isOpen })}
>
{this.state.selection || 'Select A Dropdown Item'}
</Trigger>
{ isOpen &&
<Overlay
id="select-menu"
type="menu"
onItemSelection={this._handleSelection}
onRequestClose={() => this.setState({ isOpen: false })}
>
<Item value="apples">Apples</Item>
<Item value="pears">Pears</Item>
<Item value="oranges">Oranges</Item>
</Overlay>
}
</AriaManager>
</div>
)

@@ -57,2 +69,63 @@ }

### Building a set of tabs
```jsx
import { Tabs: { Manager, TabList, Tab, TabPanel } } from 'react-aria'
class TabsDemo extends Component {
state = {
tabs: [{
id: 't1',
title: 'Bacon 🐷',
panel: <div>And eggs 🐔</div>
}, {
id: 't2',
title: 'Zombiez 💀',
panel: <div>Brainz</div>
}, {
id: 't3',
title: 'Samuel 👨🏿',
panel: <div>Samuel L Jackson</div>
}],
activeId: 't2'
}
render() {
const { tabs, activeId } = this.state
return (
<Manager
activeTabId={activeId}
onChange={id => this.setState({ activeId: id })}
className="tab-set"
>
<TabList className="tab-list">
{tabs.map(({ id, title }) =>
<Tab
key={id}
id={id}
isActive={id === activeId}
className={`tab-list-item ${id === activeId ? 'is-active' : ''}`}
>
{title}
</Tab>
)}
</TabList>
<div className="tab-panels">
{tabs.map(({ id, panel }) =>
<TabPanel
key={id}
controlledBy={id}
isActive={id === activeId}
className="tab-panel"
>
{panel}
</TabPanel>
)}
</div>
</Manager>
)
}
}
```
## Running Locally

@@ -59,0 +132,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc