UNPKG

9.03 kBJavaScriptView Raw
1!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t(e.ReactTabs={},e.React)}(this,function(e,t){"use strict";function n(e){return e.type&&"Tab"===e.type.tabsRole}function r(e){return e.type&&"TabPanel"===e.type.tabsRole}function a(e){return e.type&&"TabList"===e.type.tabsRole}function s(e){if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator)t=t=function(e){return typeof e};else var t=t=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};return t(e)}function o(){var e=e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};return e.apply(this,arguments)}function l(e){return n(e)||a(e)||r(e)}function c(e,n){return t.Children.map(e,function(e){return null===e?null:l(e)?n(e):e.props&&e.props.children&&"object"===s(e.props.children)?t.cloneElement(e,o({},e.props,{children:c(e.props.children,n)})):e})}function i(e,o){return t.Children.forEach(e,function(e){null!==e&&(n(e)||r(e)?o(e):e.props&&e.props.children&&"object"===s(e.props.children)&&(a(e)&&o(e),i(e.props.children,o)))})}function d(){return"react-tabs-"+T++}function u(e){var t=0;return i(e,function(e){n(e)&&t++}),t}function f(e){var t=0;return i(e,function(e){r(e)&&t++}),t}function p(e){return"getAttribute"in e&&"tab"===e.getAttribute("role")}function b(e){return"true"===e.getAttribute("aria-disabled")}var h,m="default"in t?t.default:t,s=s,o=o,y=function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t},v=function(e,t){if(null==e)return{};var n,r,a={},s=Object.keys(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||(a[n]=e[n]);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a},C=function(e,t){return t={exports:{}},e(t,t.exports),t.exports}(function(e){!function(){function t(){for(var e=[],r=0;r<arguments.length;r++){var a=arguments[r];if(a){var o=s(a);if("string"===o||"number"===o)e.push(a);else if(Array.isArray(a))e.push(t.apply(null,a));else if("object"===o)for(var l in a)n.call(a,l)&&a[l]&&e.push(l)}}return e.join(" ")}var n={}.hasOwnProperty;e.exports?e.exports=t:window.classNames=t}()}),T=0;try{h=!("undefined"==typeof window||!window.document||!window.document.activeElement)}catch(e){h=!1}var N=function(e){function s(){for(var t,n,r=arguments.length,a=new Array(r),s=0;s<r;s++)a[s]=arguments[s];return t=n=e.call.apply(e,[this].concat(a))||this,n.tabNodes=[],n.handleKeyDown=function(e){if(n.isTabFromContainer(e.target)){var t=n.props.selectedIndex,r=!1,a=!1;32!==e.keyCode&&13!==e.keyCode||(r=!0,a=!1,n.handleClick(e)),37===e.keyCode||38===e.keyCode?(t=n.getPrevTab(t),r=!0,a=!0):39!==e.keyCode&&40!==e.keyCode||(t=n.getNextTab(t),r=!0,a=!0),r&&e.preventDefault(),a&&n.setSelected(t,e)}},n.handleClick=function(e){var t=e.target;do{if(n.isTabFromContainer(t)){if(b(t))return;var r=[].slice.call(t.parentNode.children).filter(p).indexOf(t);return void n.setSelected(r,e)}}while(null!==(t=t.parentNode))},t||n}y(s,e);var l=s.prototype;return l.setSelected=function(e,t){e<0||e>=this.getTabsCount()||this.props.onSelect(e,this.props.selectedIndex,t)},l.getNextTab=function(e){for(var t=this.getTabsCount(),n=e+1;n<t;n++)if(!b(this.getTab(n)))return n;for(var r=0;r<e;r++)if(!b(this.getTab(r)))return r;return e},l.getPrevTab=function(e){for(var t=e;t--;)if(!b(this.getTab(t)))return t;for(t=this.getTabsCount();t-- >e;)if(!b(this.getTab(t)))return t;return e},l.getTabsCount=function(){return u(this.props.children)},l.getPanelsCount=function(){return f(this.props.children)},l.getTab=function(e){return this.tabNodes["tabs-"+e]},l.getChildren=function(){var e=this,s=0,o=this.props,l=o.children,i=o.disabledTabClassName,u=o.focus,f=o.forceRenderTabPanel,p=o.selectedIndex,b=o.selectedTabClassName,y=o.selectedTabPanelClassName;this.tabIds=this.tabIds||[],this.panelIds=this.panelIds||[];for(var v=this.tabIds.length-this.getTabsCount();v++<0;)this.tabIds.push(d()),this.panelIds.push(d());return c(l,function(o){var l=o;if(a(o)){var d=0,v=!1;h&&(v=m.Children.toArray(o.props.children).filter(n).some(function(t,n){return document.activeElement===e.getTab(n)})),l=t.cloneElement(o,{children:c(o.props.children,function(n){var r="tabs-"+d,a=p===d,s={tabRef:function(t){e.tabNodes[r]=t},id:e.tabIds[d],panelId:e.panelIds[d],selected:a,focus:a&&(u||v)};return b&&(s.selectedClassName=b),i&&(s.disabledClassName=i),d++,t.cloneElement(n,s)})})}else if(r(o)){var C={id:e.panelIds[s],tabId:e.tabIds[s],selected:p===s};f&&(C.forceRender=f),y&&(C.selectedClassName=y),s++,l=t.cloneElement(o,C)}return l})},l.isTabFromContainer=function(e){if(!p(e))return!1;var t=e.parentElement;do{if(t===this.node)return!0;if(t.getAttribute("data-tabs"))break;t=t.parentElement}while(t);return!1},l.render=function(){var e=this,t=this.props,n=(t.children,t.className),r=(t.disabledTabClassName,t.domRef),a=(t.focus,t.forceRenderTabPanel,t.onSelect,t.selectedIndex,t.selectedTabClassName,t.selectedTabPanelClassName,v(t,["children","className","disabledTabClassName","domRef","focus","forceRenderTabPanel","onSelect","selectedIndex","selectedTabClassName","selectedTabPanelClassName"]));return m.createElement("div",o({},a,{className:C(n),onClick:this.handleClick,onKeyDown:this.handleKeyDown,ref:function(t){e.node=t,r&&r(t)},"data-tabs":!0}),this.getChildren())},s}(t.Component);N.defaultProps={className:"react-tabs",focus:!1};var I=function(e){function t(n){var r;return r=e.call(this,n)||this,r.handleSelected=function(e,n,a){if("function"!=typeof r.props.onSelect||!1!==r.props.onSelect(e,n,a)){var s={focus:"keydown"===a.type};t.inUncontrolledMode(r.props)&&(s.selectedIndex=e),r.setState(s)}},r.state=t.copyPropsToState(r.props,{},r.props.defaultFocus),r}y(t,e);var n=t.prototype;return n.componentWillReceiveProps=function(e){this.setState(function(n){return t.copyPropsToState(e,n)})},t.inUncontrolledMode=function(e){return null===e.selectedIndex},t.copyPropsToState=function(e,n,r){void 0===r&&(r=!1);var a={focus:r};if(t.inUncontrolledMode(e)){var s=u(e.children)-1,o=null;o=null!=n.selectedIndex?Math.min(n.selectedIndex,s):e.defaultIndex||0,a.selectedIndex=o}return a},n.render=function(){var e=this.props,t=e.children,n=(e.defaultIndex,e.defaultFocus,v(e,["children","defaultIndex","defaultFocus"]));return n.focus=this.state.focus,n.onSelect=this.handleSelected,null!=this.state.selectedIndex&&(n.selectedIndex=this.state.selectedIndex),m.createElement(N,n,t)},t}(t.Component);I.defaultProps={defaultFocus:!1,forceRenderTabPanel:!1,selectedIndex:null,defaultIndex:null},I.tabsRole="Tabs";var g=function(e){function t(){return e.apply(this,arguments)||this}return y(t,e),t.prototype.render=function(){var e=this.props,t=e.children,n=e.className,r=v(e,["children","className"]);return m.createElement("ul",o({},r,{className:C(n),role:"tablist"}),t)},t}(t.Component);g.defaultProps={className:"react-tabs__tab-list"},g.tabsRole="TabList";var x=function(e){function t(){return e.apply(this,arguments)||this}y(t,e);var n=t.prototype;return n.componentDidMount=function(){this.checkFocus()},n.componentDidUpdate=function(){this.checkFocus()},n.checkFocus=function(){this.props.selected&&this.props.focus&&this.node.focus()},n.render=function(){var e,t=this,n=this.props,r=n.children,a=n.className,s=n.disabled,l=n.disabledClassName,c=(n.focus,n.id),i=n.panelId,d=n.selected,u=n.selectedClassName,f=n.tabIndex,p=n.tabRef,b=v(n,["children","className","disabled","disabledClassName","focus","id","panelId","selected","selectedClassName","tabIndex","tabRef"]);return m.createElement("li",o({},b,{className:C(a,(e={},e[u]=d,e[l]=s,e)),ref:function(e){t.node=e,p&&p(e)},role:"tab",id:c,"aria-selected":d?"true":"false","aria-disabled":s?"true":"false","aria-controls":i,tabIndex:f||(d?"0":null)}),r)},t}(t.Component);x.defaultProps={className:"react-tabs__tab",disabledClassName:"react-tabs__tab--disabled",focus:!1,id:null,panelId:null,selected:!1,selectedClassName:"react-tabs__tab--selected"},x.tabsRole="Tab";var P=function(e){function t(){return e.apply(this,arguments)||this}return y(t,e),t.prototype.render=function(){var e,t=this.props,n=t.children,r=t.className,a=t.forceRender,s=t.id,l=t.selected,c=t.selectedClassName,i=t.tabId,d=v(t,["children","className","forceRender","id","selected","selectedClassName","tabId"]);return m.createElement("div",o({},d,{className:C(r,(e={},e[c]=l,e)),role:"tabpanel",id:s,"aria-labelledby":i}),a||l?n:null)},t}(t.Component);P.defaultProps={className:"react-tabs__tab-panel",forceRender:!1,selectedClassName:"react-tabs__tab-panel--selected"},P.tabsRole="TabPanel",e.Tab=x,e.TabList=g,e.TabPanel=P,e.Tabs=I,e.resetIdCounter=function(){T=0},Object.defineProperty(e,"__esModule",{value:!0})});
2//# sourceMappingURL=react-tabs.production.min.js.map
3
\No newline at end of file