Fix tabs extra content (#7090)

* Fix tabBarExtraContent style in vertical tabs

close #6578

* update snap

* fix rc-tabs
This commit is contained in:
偏右 2017-08-05 23:01:28 +08:00 committed by ddcat1115
parent 2fdc4ec1e6
commit cb8f6a6ef5
7 changed files with 388 additions and 28 deletions

View File

@ -12,6 +12,22 @@ exports[`renders ./components/tabs/demo/basic.md correctly 1`] = `
<div <div
class="ant-tabs-nav-container" class="ant-tabs-nav-container"
> >
<span
class="ant-tabs-tab-prev ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-prev-icon"
/>
</span>
<span
class="ant-tabs-tab-next ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-next-icon"
/>
</span>
<div <div
class="ant-tabs-nav-wrap" class="ant-tabs-nav-wrap"
> >
@ -90,6 +106,22 @@ exports[`renders ./components/tabs/demo/card.md correctly 1`] = `
<div <div
class="ant-tabs-nav-container" class="ant-tabs-nav-container"
> >
<span
class="ant-tabs-tab-prev ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-prev-icon"
/>
</span>
<span
class="ant-tabs-tab-next ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-next-icon"
/>
</span>
<div <div
class="ant-tabs-nav-wrap" class="ant-tabs-nav-wrap"
> >
@ -170,6 +202,22 @@ exports[`renders ./components/tabs/demo/card-top.md correctly 1`] = `
<div <div
class="ant-tabs-nav-container" class="ant-tabs-nav-container"
> >
<span
class="ant-tabs-tab-prev ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-prev-icon"
/>
</span>
<span
class="ant-tabs-tab-next ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-next-icon"
/>
</span>
<div <div
class="ant-tabs-nav-wrap" class="ant-tabs-nav-wrap"
> >
@ -269,6 +317,22 @@ exports[`renders ./components/tabs/demo/custom-add-trigger.md correctly 1`] = `
<div <div
class="ant-tabs-nav-container" class="ant-tabs-nav-container"
> >
<span
class="ant-tabs-tab-prev ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-prev-icon"
/>
</span>
<span
class="ant-tabs-tab-next ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-next-icon"
/>
</span>
<div <div
class="ant-tabs-nav-wrap" class="ant-tabs-nav-wrap"
> >
@ -344,6 +408,22 @@ exports[`renders ./components/tabs/demo/disabled.md correctly 1`] = `
<div <div
class="ant-tabs-nav-container" class="ant-tabs-nav-container"
> >
<span
class="ant-tabs-tab-prev ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-prev-icon"
/>
</span>
<span
class="ant-tabs-tab-next ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-next-icon"
/>
</span>
<div <div
class="ant-tabs-nav-wrap" class="ant-tabs-nav-wrap"
> >
@ -420,21 +500,34 @@ exports[`renders ./components/tabs/demo/editable-card.md correctly 1`] = `
tabindex="0" tabindex="0"
> >
<div <div
class="ant-tabs-extra-content"
style="float:right;" style="float:right;"
> >
<div <span>
class="ant-tabs-extra-content" <i
> class="anticon anticon-plus ant-tabs-new-tab"
<span> />
<i </span>
class="anticon anticon-plus ant-tabs-new-tab"
/>
</span>
</div>
</div> </div>
<div <div
class="ant-tabs-nav-container" class="ant-tabs-nav-container"
> >
<span
class="ant-tabs-tab-prev ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-prev-icon"
/>
</span>
<span
class="ant-tabs-tab-next ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-next-icon"
/>
</span>
<div <div
class="ant-tabs-nav-wrap" class="ant-tabs-nav-wrap"
> >
@ -506,24 +599,37 @@ exports[`renders ./components/tabs/demo/extra.md correctly 1`] = `
tabindex="0" tabindex="0"
> >
<div <div
class="ant-tabs-extra-content"
style="float:right;" style="float:right;"
> >
<div <button
class="ant-tabs-extra-content" class="ant-btn"
type="button"
> >
<button <span>
class="ant-btn" Extra Action
type="button" </span>
> </button>
<span>
Extra Action
</span>
</button>
</div>
</div> </div>
<div <div
class="ant-tabs-nav-container" class="ant-tabs-nav-container"
> >
<span
class="ant-tabs-tab-prev ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-prev-icon"
/>
</span>
<span
class="ant-tabs-tab-next ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-next-icon"
/>
</span>
<div <div
class="ant-tabs-nav-wrap" class="ant-tabs-nav-wrap"
> >
@ -602,6 +708,22 @@ exports[`renders ./components/tabs/demo/icon.md correctly 1`] = `
<div <div
class="ant-tabs-nav-container" class="ant-tabs-nav-container"
> >
<span
class="ant-tabs-tab-prev ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-prev-icon"
/>
</span>
<span
class="ant-tabs-tab-next ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-next-icon"
/>
</span>
<div <div
class="ant-tabs-nav-wrap" class="ant-tabs-nav-wrap"
> >
@ -715,6 +837,22 @@ exports[`renders ./components/tabs/demo/position.md correctly 1`] = `
<div <div
class="ant-tabs-nav-container" class="ant-tabs-nav-container"
> >
<span
class="ant-tabs-tab-prev ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-prev-icon"
/>
</span>
<span
class="ant-tabs-tab-next ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-next-icon"
/>
</span>
<div <div
class="ant-tabs-nav-wrap" class="ant-tabs-nav-wrap"
> >
@ -794,6 +932,22 @@ exports[`renders ./components/tabs/demo/size.md correctly 1`] = `
<div <div
class="ant-tabs-nav-container" class="ant-tabs-nav-container"
> >
<span
class="ant-tabs-tab-prev ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-prev-icon"
/>
</span>
<span
class="ant-tabs-tab-next ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-next-icon"
/>
</span>
<div <div
class="ant-tabs-nav-wrap" class="ant-tabs-nav-wrap"
> >
@ -916,6 +1070,22 @@ exports[`renders ./components/tabs/demo/slide.md correctly 1`] = `
<div <div
class="ant-tabs-nav-container" class="ant-tabs-nav-container"
> >
<span
class="ant-tabs-tab-prev ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-prev-icon"
/>
</span>
<span
class="ant-tabs-tab-next ant-tabs-tab-btn-disabled"
unselectable="unselectable"
>
<span
class="ant-tabs-tab-next-icon"
/>
</span>
<div <div
class="ant-tabs-nav-wrap" class="ant-tabs-nav-wrap"
> >

View File

@ -0,0 +1,152 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Tabs tabPosition remove card 1`] = `
<Tabs
hideAdd={false}
prefixCls="ant-tabs"
tabBarExtraContent="xxx"
tabPosition="left"
>
<Tabs
className="ant-tabs-vertical ant-tabs-line"
destroyInactiveTabPane={false}
hideAdd={false}
onChange={[Function]}
prefixCls="ant-tabs"
renderTabBar={[Function]}
renderTabContent={[Function]}
style={Object {}}
tabBarExtraContent="xxx"
tabBarPosition="left"
tabPosition="left"
>
<div
className="ant-tabs ant-tabs-left ant-tabs-vertical ant-tabs-line"
style={Object {}}
>
<ScrollableInkTabBar
activeKey="1"
extraContent={
<div
className="ant-tabs-extra-content"
>
xxx
</div>
}
inkBarAnimated={true}
onKeyDown={[Function]}
onNextClick={[Function]}
onPrevClick={[Function]}
onTabClick={[Function]}
panels={
<TabPane
placeholder={null}
tab="foo"
>
foo
</TabPane>
}
prefixCls="ant-tabs"
scrollAnimated={true}
styles={Object {}}
tabBarPosition="left"
>
<div
className="ant-tabs-bar"
onKeyDown={[Function]}
role="tablist"
tabIndex="0"
>
<div
className="ant-tabs-nav-container"
onTransitionEnd={[Function]}
>
<span
className="ant-tabs-tab-prev ant-tabs-tab-btn-disabled"
onClick={null}
unselectable="unselectable"
>
<span
className="ant-tabs-tab-prev-icon"
/>
</span>
<span
className="ant-tabs-tab-next ant-tabs-tab-btn-disabled"
onClick={null}
unselectable="unselectable"
>
<span
className="ant-tabs-tab-next-icon"
/>
</span>
<div
className="ant-tabs-nav-wrap"
>
<div
className="ant-tabs-nav-scroll"
>
<div
className="ant-tabs-nav ant-tabs-nav-animated"
>
<div
className="ant-tabs-ink-bar ant-tabs-ink-bar-animated"
/>
<div
aria-disabled="false"
aria-selected="true"
className="ant-tabs-tab-active ant-tabs-tab"
onClick={[Function]}
role="tab"
>
foo
</div>
</div>
</div>
</div>
</div>
<div
className="ant-tabs-extra-content"
style={Object {}}
>
xxx
</div>
</div>
</ScrollableInkTabBar>
<TabContent
activeKey="1"
animated={true}
animatedWithMargin={true}
destroyInactiveTabPane={false}
onChange={[Function]}
prefixCls="ant-tabs"
tabBarPosition="left"
>
<div
className="ant-tabs-content ant-tabs-content-animated"
style={
Object {
"marginTop": "0%",
}
}
>
<TabPane
active={true}
destroyInactiveTabPane={false}
placeholder={null}
rootPrefixCls="ant-tabs"
tab="foo"
>
<div
aria-hidden="false"
className="ant-tabs-tabpane ant-tabs-tabpane-active"
role="tabpanel"
>
foo
</div>
</TabPane>
</div>
</TabContent>
</div>
</Tabs>
</Tabs>
`;

View File

@ -28,4 +28,15 @@ describe('Tabs', () => {
expect(handleEdit).toBeCalledWith('1', 'remove'); expect(handleEdit).toBeCalledWith('1', 'remove');
}); });
}); });
describe('tabPosition', () => {
it('remove card', () => {
const wrapper = mount(
<Tabs tabPosition="left" tabBarExtraContent="xxx">
<TabPane tab="foo" key="1">foo</TabPane>
</Tabs>
);
expect(wrapper).toMatchSnapshot();
});
});
}); });

View File

@ -19,7 +19,6 @@ Only card type Tabs support adding & closable.
import { Tabs } from 'antd'; import { Tabs } from 'antd';
const TabPane = Tabs.TabPane; const TabPane = Tabs.TabPane;
class Demo extends React.Component { class Demo extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);

View File

@ -69,7 +69,6 @@
} }
&-extra-content { &-extra-content {
float: right;
line-height: 32px; line-height: 32px;
.@{tab-prefix-cls}-new-tab { .@{tab-prefix-cls}-new-tab {
@ -83,9 +82,10 @@
font-size: @font-size-base; font-size: @font-size-base;
.iconfont-size-under-12px(10px); .iconfont-size-under-12px(10px);
color: @text-color-secondary; color: @text-color-secondary;
transition: color 0.3s ease; transition: all .3s;
&:hover { &:hover {
color: #404040; color: @primary-color;
border-color: @primary-color;
} }
} }
} }
@ -105,6 +105,9 @@
margin-bottom: 8px; margin-bottom: 8px;
} }
} }
.@{tab-prefix-cls}-new-tab {
width: 90%;
}
} }
&-vertical&-card&-left > .@{tab-prefix-cls}-bar { &-vertical&-card&-left > .@{tab-prefix-cls}-bar {

View File

@ -26,6 +26,7 @@
border-bottom: @border-width-base @border-style-base @border-color-base; border-bottom: @border-width-base @border-style-base @border-color-base;
margin-bottom: 16px; margin-bottom: 16px;
outline: none; outline: none;
transition: padding .45s;
} }
&-nav-container { &-nav-container {
@ -36,6 +37,7 @@
position: relative; position: relative;
white-space: nowrap; white-space: nowrap;
margin-bottom: -1px; margin-bottom: -1px;
transition: padding .45s;
.clearfix; .clearfix;
&-scrolling { &-scrolling {
@ -48,8 +50,8 @@
&-tab-next { &-tab-next {
user-select: none; user-select: none;
z-index: 2; z-index: 2;
width: 32px; width: 0;
height: 100%; height: 0;
line-height: 32px; line-height: 32px;
cursor: pointer; cursor: pointer;
border: 0; border: 0;
@ -57,7 +59,16 @@
position: absolute; position: absolute;
text-align: center; text-align: center;
color: @text-color-secondary; color: @text-color-secondary;
transition: color 0.3s ease; transition: width .3s, height .3s, opacity .3s, color .3s;
opacity: 0;
pointer-events: none;
&.@{tab-prefix-cls}-tab-arrow-show {
opacity: 1;
width: 32px;
height: 100%;
pointer-events: auto;
}
&:hover { &:hover {
color: @text-color; color: @text-color;
@ -220,6 +231,12 @@
border-bottom: 0; border-bottom: 0;
height: 100%; height: 100%;
&-tab-prev.@{tab-prefix-cls}-tab-arrow-show,
&-tab-next.@{tab-prefix-cls}-tab-arrow-show {
width: 100%;
height: 32px;
}
.@{tab-prefix-cls}-tab { .@{tab-prefix-cls}-tab {
float: none; float: none;
margin-right: 0; margin-right: 0;
@ -232,6 +249,10 @@
} }
} }
.@{tab-prefix-cls}-extra-content {
text-align: center;
}
.@{tab-prefix-cls}-nav-scroll { .@{tab-prefix-cls}-nav-scroll {
width: auto; width: auto;
} }
@ -253,6 +274,10 @@
margin-bottom: 0; margin-bottom: 0;
} }
.@{tab-prefix-cls}-nav {
width: 100%;
}
.@{tab-prefix-cls}-ink-bar { .@{tab-prefix-cls}-ink-bar {
width: 2px; width: 2px;
left: auto; left: auto;

View File

@ -65,7 +65,7 @@
"rc-steps": "~2.5.1", "rc-steps": "~2.5.1",
"rc-switch": "~1.5.1", "rc-switch": "~1.5.1",
"rc-table": "~5.4.0", "rc-table": "~5.4.0",
"rc-tabs": "~8.0.0", "rc-tabs": "~9.0.2",
"rc-time-picker": "~2.4.1", "rc-time-picker": "~2.4.1",
"rc-tooltip": "~3.4.6", "rc-tooltip": "~3.4.6",
"rc-tree": "~1.7.0", "rc-tree": "~1.7.0",