Skip to content

Commit 15d76a7

Browse files
authored
feat: support data-* (#92)
* feat: support data-* * feat: use rc-util * fix: typo * refactor: import path in demo, test. * fix: test * fix: test
1 parent fac581b commit 15d76a7

16 files changed

+61
-51
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ sudo: false
55
notifications:
66
email:
77
8+
89

910
node_js:
1011
- 6.0.0

examples/activeKey.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import 'rc-tabs/assets/index.less';
33
import React from 'react';
44
import ReactDOM from 'react-dom';
55
import Tabs, { TabPane } from 'rc-tabs';
6-
import TabContent from '../src/SwipeableTabContent';
7-
import ScrollableInkTabBar from '../src/ScrollableInkTabBar';
6+
import TabContent from 'rc-tabs/lib/SwipeableTabContent';
7+
import ScrollableInkTabBar from 'rc-tabs/lib/ScrollableInkTabBar';
88

99
const PanelContent = ({ id }) => (
1010
<div>{[1, 2, 3, 4].map(item => <p key={item}>{id}</p>)}</div>

examples/add.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import 'rc-tabs/assets/index.less';
33
import React from 'react';
44
import ReactDOM from 'react-dom';
55
import Tabs, { TabPane } from 'rc-tabs';
6-
import TabContent from '../src/TabContent';
7-
import ScrollableInkTabBar from '../src/ScrollableInkTabBar';
6+
import TabContent from 'rc-tabs/lib/TabContent';
7+
import ScrollableInkTabBar from 'rc-tabs/lib/ScrollableInkTabBar';
88

99
let index = 1;
1010

examples/antd.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import 'rc-tabs/assets/index.less';
33
import React from 'react';
44
import ReactDOM from 'react-dom';
55
import Tabs, { TabPane } from 'rc-tabs';
6-
import TabContent from '../src/TabContent';
7-
import ScrollableInkTabBar from '../src/ScrollableInkTabBar';
8-
import InkTabBar from '../src/InkTabBar';
6+
import TabContent from 'rc-tabs/lib/TabContent';
7+
import ScrollableInkTabBar from 'rc-tabs/lib/ScrollableInkTabBar';
8+
import InkTabBar from 'rc-tabs/lib/InkTabBar';
99

1010
class PanelContent extends React.Component {
1111
constructor(props) {

examples/defaultActiveKey.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import 'rc-tabs/assets/index.less';
33
import React from 'react';
44
import ReactDOM from 'react-dom';
55
import Tabs, { TabPane } from 'rc-tabs';
6-
import TabContent from '../src/TabContent';
7-
import ScrollableInkTabBar from '../src/ScrollableInkTabBar';
6+
import TabContent from 'rc-tabs/lib/TabContent';
7+
import ScrollableInkTabBar from 'rc-tabs/lib/ScrollableInkTabBar';
88

99
class PanelContent extends React.Component {
1010
constructor(props) {

examples/destroyInactiveTabpanel.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import 'rc-tabs/assets/index.less';
33
import React from 'react';
44
import ReactDOM from 'react-dom';
55
import Tabs, { TabPane } from 'rc-tabs';
6-
import TabContent from '../src/TabContent';
7-
import ScrollableInkTabBar from '../src/ScrollableInkTabBar';
6+
import TabContent from 'rc-tabs/lib/TabContent';
7+
import ScrollableInkTabBar from 'rc-tabs/lib/ScrollableInkTabBar';
88

99
class PanelContent extends React.Component {
1010
constructor(props) {

examples/router.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import React from 'react';
44
import ReactDOM from 'react-dom';
55
import Tabs, { TabPane } from 'rc-tabs';
66
import 'rc-tabs/assets/index.less';
7-
import TabContent from '../src/TabContent';
8-
import ScrollableInkTabBar from '../src/ScrollableInkTabBar';
7+
import TabContent from 'rc-tabs/lib/TabContent';
8+
import ScrollableInkTabBar from 'rc-tabs/lib/ScrollableInkTabBar';
99

1010
const Tab1 = () => <div>tab1</div>;
1111
const Tab2 = () => <div>tab2</div>;

examples/swipeInkTabBar.js

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import 'rc-tabs/assets/index.less';
33
import React from 'react';
44
import ReactDOM from 'react-dom';
55
import Tabs, { TabPane } from 'rc-tabs';
6-
import TabContent from '../src/SwipeableTabContent';
7-
import SwipeableInkTabBar from '../src/SwipeableInkTabBar';
6+
import TabContent from 'rc-tabs/lib/SwipeableTabContent';
7+
import SwipeableInkTabBar from 'rc-tabs/lib/SwipeableInkTabBar';
88

99
if (process.env.DEMO_ENV === 'preact') {
1010
require('preact/devtools');
@@ -18,8 +18,9 @@ const contentStyle = {
1818
backgroundColor: '#fff',
1919
};
2020

21+
const tabTitle = (key) => (<div data-extra="tab-bar-title">{`选项${key}`}</div>);
2122
const makeTabPane = key => (
22-
<TabPane tab={`选项${key}`} key={`${key}`}>
23+
<TabPane tab={tabTitle(key)} data-extra="tabpane" key={`${key}`}>
2324
<div style={contentStyle}>
2425
{`选项${key}内容`}
2526
</div>
@@ -39,10 +40,12 @@ const Component = () => (
3940
<h4>pageSize = 5, speed = 5</h4>
4041
<div>
4142
<Tabs
43+
data-extra="tabs"
4244
renderTabBar={() =>
4345
<SwipeableInkTabBar
4446
pageSize={5}
4547
speed={5}
48+
data-extra="tabbar"
4649
/>
4750
}
4851
renderTabContent={() => <TabContent />}
@@ -86,9 +89,10 @@ const Component = () => (
8689
<div>
8790
<Tabs
8891
tabBarPosition="left"
89-
pageSize={3}
9092
renderTabBar={() =>
91-
<SwipeableInkTabBar/>
93+
<SwipeableInkTabBar
94+
pageSize={3}
95+
/>
9296
}
9397
renderTabContent={() => <TabContent/>}
9498
defaultActiveKey="2"
@@ -100,9 +104,10 @@ const Component = () => (
100104
<div>
101105
<Tabs
102106
tabBarPosition="right"
103-
pageSize={3}
104107
renderTabBar={() =>
105-
<SwipeableInkTabBar/>
108+
<SwipeableInkTabBar
109+
pageSize={3}
110+
/>
106111
}
107112
renderTabContent={() => <TabContent/>}
108113
defaultActiveKey="2"
@@ -135,9 +140,9 @@ const Component = () => (
135140
<div>
136141
<Tabs
137142
tabBarPosition="left"
138-
pageSize={3}
139143
renderTabBar={() =>
140144
<SwipeableInkTabBar
145+
pageSize={3}
141146
styles={{
142147
inkBar: {
143148
backgroundColor: 'red',

index.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

package.json

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"files": [
1111
"lib",
1212
"es",
13+
"dist",
1314
"assets/index.css"
1415
],
1516
"main": "./lib/index",
@@ -25,14 +26,20 @@
2526
},
2627
"licenses": "MIT",
2728
"config": {
28-
"port": 8002
29+
"port": 8002,
30+
"entry": {
31+
"rc-tabs": [
32+
"./src/index.js",
33+
"./assets/index.less"
34+
]
35+
}
2936
},
3037
"scripts": {
38+
"dist": "rc-tools run dist",
3139
"build": "rc-tools run build",
3240
"compile": "rc-tools run compile --babel-runtime",
3341
"gh-pages": "rc-tools run gh-pages",
3442
"start": "rc-tools run server",
35-
"start:preact": "cross-env DEMO_ENV=preact rc-tools run server",
3643
"pub": "rc-tools run pub --babel-runtime",
3744
"lint": "rc-tools run lint",
3845
"watch": "rc-tools run watch",
@@ -80,6 +87,7 @@
8087
"create-react-class": "15.x",
8188
"prop-types": "15.x",
8289
"rc-hammerjs": "~0.6.0",
90+
"rc-util": "^4.0.4",
8391
"warning": "^3.0.0"
8492
}
8593
}

src/TabBarMixin.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { cloneElement } from 'react';
22
import classnames from 'classnames';
33
import warning from 'warning';
4+
import pickAttrs from 'rc-util/lib/pickAttrs';
45

56
export default {
67
getDefaultProps() {
@@ -12,11 +13,8 @@ export default {
1213
this.props.onTabClick(key);
1314
},
1415
getTabs() {
15-
const props = this.props;
16-
const children = props.panels;
17-
const activeKey = props.activeKey;
16+
const { panels: children, activeKey, prefixCls } = this.props;
1817
const rst = [];
19-
const prefixCls = props.prefixCls;
2018

2119
React.Children.forEach(children, (child) => {
2220
if (!child) {
@@ -56,7 +54,10 @@ export default {
5654
return rst;
5755
},
5856
getRootNode(contents) {
59-
const { prefixCls, onKeyDown, className, extraContent, style, tabBarPosition } = this.props;
57+
const {
58+
prefixCls, onKeyDown, className, extraContent, style, tabBarPosition,
59+
...restProps,
60+
} = this.props;
6061
const cls = classnames(`${prefixCls}-bar`, {
6162
[className]: !!className,
6263
});
@@ -85,6 +86,7 @@ export default {
8586
ref="root"
8687
onKeyDown={onKeyDown}
8788
style={style}
89+
{...pickAttrs(restProps)}
8890
>
8991
{children}
9092
</div>

src/TabPane.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React from 'react';
22
import PropTypes from 'prop-types';
33
import createReactClass from 'create-react-class';
44
import classnames from 'classnames';
5+
import pickAttrs from 'rc-util/lib/pickAttrs';
56

67
const TabPane = createReactClass({
78
displayName: 'TabPane',
@@ -17,10 +18,12 @@ const TabPane = createReactClass({
1718
return { placeholder: null };
1819
},
1920
render() {
20-
const props = this.props;
21-
const { className, destroyInactiveTabPane, active, forceRender } = props;
21+
const {
22+
className, destroyInactiveTabPane, active, forceRender,
23+
rootPrefixCls, style, children, placeholder, ...restProps,
24+
} = this.props;
2225
this._isActived = this._isActived || active;
23-
const prefixCls = `${props.rootPrefixCls}-tabpane`;
26+
const prefixCls = `${rootPrefixCls}-tabpane`;
2427
const cls = classnames({
2528
[prefixCls]: 1,
2629
[`${prefixCls}-inactive`]: !active,
@@ -30,12 +33,13 @@ const TabPane = createReactClass({
3033
const isRender = destroyInactiveTabPane ? active : this._isActived;
3134
return (
3235
<div
33-
style={props.style}
36+
style={style}
3437
role="tabpanel"
35-
aria-hidden={props.active ? 'false' : 'true'}
38+
aria-hidden={active ? 'false' : 'true'}
3639
className={cls}
40+
{...pickAttrs(restProps)}
3741
>
38-
{isRender || forceRender ? props.children : props.placeholder}
42+
{isRender || forceRender ? children : placeholder}
3943
</div>
4044
);
4145
},

src/Tabs.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React from 'react';
22
import PropTypes from 'prop-types';
3+
import pickAttrs from 'rc-util/lib/pickAttrs';
34
import KeyCode from './KeyCode';
45
import TabPane from './TabPane';
56
import classnames from 'classnames';
@@ -117,6 +118,8 @@ export default class Tabs extends React.Component {
117118
tabBarPosition, className,
118119
renderTabContent,
119120
renderTabBar,
121+
destroyInactiveTabPane,
122+
...restProps,
120123
} = props;
121124
const cls = classnames({
122125
[prefixCls]: 1,
@@ -139,7 +142,7 @@ export default class Tabs extends React.Component {
139142
prefixCls,
140143
tabBarPosition,
141144
activeKey: this.state.activeKey,
142-
destroyInactiveTabPane: props.destroyInactiveTabPane,
145+
destroyInactiveTabPane,
143146
children: props.children,
144147
onChange: this.setActiveKey,
145148
key: 'tabContent',
@@ -152,6 +155,7 @@ export default class Tabs extends React.Component {
152155
<div
153156
className={cls}
154157
style={props.style}
158+
{...pickAttrs(restProps)}
155159
>
156160
{contents}
157161
</div>

tests/index.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import React, { Component } from 'react';
33
import { mount, shallow, render } from 'enzyme';
44
import { renderToJson } from 'enzyme-to-json';
5-
import Tabs, { TabPane } from '../index';
5+
import Tabs, { TabPane } from '../src';
66
import TabContent from '../src/TabContent';
77
import ScrollableInkTabBar from '../src/ScrollableInkTabBar';
88

tests/swipe.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import React, { Component } from 'react';
33
import { mount, render } from 'enzyme';
44
import { renderToJson } from 'enzyme-to-json';
5-
import Tabs, { TabPane } from '../index';
5+
import Tabs, { TabPane } from '../src/';
66
import SwipeableTabContent from '../src/SwipeableTabContent';
77
import SwipeableInkTabBar from '../src/SwipeableInkTabBar';
88

webpack.config.js

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)