UNPKG

1.55 kBJavaScriptView Raw
1/**
2* This source code is quoted from rc-tabs.
3* homepage: https://github.com/react-component/tabs
4*/
5import React from 'react';
6import ReactDOM from 'react-dom';
7import PropTypes from 'prop-types';
8import InkTabBarNode from './InkTabBarNode';
9import TabBarTabsNode from './TabBarTabsNode';
10import TabBarRootNode from './TabBarRootNode';
11import ScrollableTabBarNode from './ScrollableTabBarNode';
12import SaveRef from './SaveRef';
13
14export default class ScrollableInkTabBar extends React.Component {
15 componentDidMount(){
16 ReactDOM.findDOMNode(this).addEventListener('DNDclick', (e) => {
17 if(e && e.detail && e.detail.key){
18 this.onTabClick.call(this, e.detail.key)
19 }
20 });
21 }
22 componentWillUnmount(){
23 ReactDOM.findDOMNode(this).removeEventListener('DNDclick',(e) => {
24 if(e && e.detail && e.detail.key){
25 this.onTabClick.call(this, e.detail.key)
26 }
27 });
28 }
29 render() {
30 const { children: renderTabBarNode, ...restProps } = this.props;
31 return (
32 <SaveRef>
33 {(saveRef, getRef) => (
34 <TabBarRootNode saveRef={saveRef} {...restProps}>
35 <ScrollableTabBarNode saveRef={saveRef} getRef={getRef} {...restProps}>
36 <TabBarTabsNode saveRef={saveRef} renderTabBarNode={renderTabBarNode} {...restProps} />
37 <InkTabBarNode saveRef={saveRef} getRef={getRef} {...restProps} />
38 </ScrollableTabBarNode>
39 </TabBarRootNode>
40 )}
41 </SaveRef>
42 );
43 }
44}
45
46ScrollableInkTabBar.propTypes = {
47 children: PropTypes.func,
48};