fix: page-header onBack not work
parent
c758d88aba
commit
bb39dc31f5
|
@ -1 +1 @@
|
||||||
Subproject commit a66b25f72f00c17b976c30b6cb92db4d8c8bf993
|
Subproject commit 14ab398a9ab7db3507776aa9905afe5b4811be21
|
|
@ -54,7 +54,7 @@ const TransButton = {
|
||||||
},
|
},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { noStyle } = this.$props;
|
const { noStyle, onClick } = this.$props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
@ -62,6 +62,7 @@ const TransButton = {
|
||||||
tabindex={0}
|
tabindex={0}
|
||||||
ref="div"
|
ref="div"
|
||||||
{...this.$attrs}
|
{...this.$attrs}
|
||||||
|
onClick={onClick}
|
||||||
onKeydown={this.onKeyDown}
|
onKeydown={this.onKeyDown}
|
||||||
onKeyup={this.onKeyUp}
|
onKeyup={this.onKeyUp}
|
||||||
style={{ ...(!noStyle ? inlineStyle : null) }}
|
style={{ ...(!noStyle ? inlineStyle : null) }}
|
||||||
|
|
|
@ -3,21 +3,34 @@
|
||||||
exports[`PageHeader pageHeader should not render blank dom 1`] = `
|
exports[`PageHeader pageHeader should not render blank dom 1`] = `
|
||||||
<div
|
<div
|
||||||
class="ant-page-header ant-page-header-ghost"
|
class="ant-page-header ant-page-header-ghost"
|
||||||
/>
|
>
|
||||||
|
<!---->
|
||||||
|
<!---->
|
||||||
|
<!---->
|
||||||
|
<!---->
|
||||||
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`PageHeader pageHeader should support class 1`] = `
|
exports[`PageHeader pageHeader should support class 1`] = `
|
||||||
<div
|
<div
|
||||||
class="ant-page-header ant-page-header-ghost not-works"
|
class="ant-page-header ant-page-header-ghost not-works"
|
||||||
>
|
>
|
||||||
|
<!---->
|
||||||
<div
|
<div
|
||||||
class="ant-page-header-heading"
|
class="ant-page-header-heading"
|
||||||
>
|
>
|
||||||
|
<!---->
|
||||||
|
<!---->
|
||||||
<span
|
<span
|
||||||
class="ant-page-header-heading-title"
|
class="ant-page-header-heading-title"
|
||||||
>
|
>
|
||||||
Page Title
|
Page Title
|
||||||
</span>
|
</span>
|
||||||
|
<!---->
|
||||||
|
<!---->
|
||||||
|
<!---->
|
||||||
</div>
|
</div>
|
||||||
|
<!---->
|
||||||
|
<!---->
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
import { createLocalVue, mount } from '@vue/test-utils';
|
import { mount } from '@vue/test-utils';
|
||||||
import PageHeader from '..';
|
import PageHeader from '..';
|
||||||
import ref from 'vue-ref';
|
|
||||||
const localVue = createLocalVue();
|
|
||||||
localVue.use(ref, { name: 'ant-ref' });
|
|
||||||
|
|
||||||
describe('PageHeader', () => {
|
describe('PageHeader', () => {
|
||||||
it('pageHeader should not contain back it back', () => {
|
it('pageHeader should not contain back it back', () => {
|
||||||
|
@ -22,7 +19,7 @@ describe('PageHeader', () => {
|
||||||
];
|
];
|
||||||
const wrapper = mount({
|
const wrapper = mount({
|
||||||
render() {
|
render() {
|
||||||
return <PageHeader title="Page Title" breadcrumb={{ props: { routes } }} />;
|
return <PageHeader title="Page Title" breadcrumb={{ routes }} />;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
expect(wrapper.findAll('.ant-page-header-back')).toHaveLength(0);
|
expect(wrapper.findAll('.ant-page-header-back')).toHaveLength(0);
|
||||||
|
@ -37,7 +34,7 @@ describe('PageHeader', () => {
|
||||||
];
|
];
|
||||||
const wrapper = mount({
|
const wrapper = mount({
|
||||||
render() {
|
render() {
|
||||||
return <PageHeader title="Page Title" breadcrumb={{ props: { routes } }} />;
|
return <PageHeader title="Page Title" breadcrumb={{ routes }} />;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
expect(wrapper.findAll('.ant-breadcrumb')).toHaveLength(1);
|
expect(wrapper.findAll('.ant-breadcrumb')).toHaveLength(1);
|
||||||
|
@ -61,7 +58,7 @@ describe('PageHeader', () => {
|
||||||
return <PageHeader title="Page Title" onBack={callback} />;
|
return <PageHeader title="Page Title" onBack={callback} />;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ localVue },
|
{ sync: false },
|
||||||
);
|
);
|
||||||
expect(wrapper.findAll('.ant-page-header-back')).toHaveLength(1);
|
expect(wrapper.findAll('.ant-page-header-back')).toHaveLength(1);
|
||||||
});
|
});
|
||||||
|
@ -74,7 +71,7 @@ describe('PageHeader', () => {
|
||||||
return <PageHeader title="Page Title" onBack={callback} />;
|
return <PageHeader title="Page Title" onBack={callback} />;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ localVue },
|
{ sync: false },
|
||||||
);
|
);
|
||||||
wrapper.find('div.ant-page-header-back-button').trigger('click');
|
wrapper.find('div.ant-page-header-back-button').trigger('click');
|
||||||
expect(callback).toHaveBeenCalled();
|
expect(callback).toHaveBeenCalled();
|
||||||
|
@ -115,19 +112,16 @@ describe('PageHeader', () => {
|
||||||
];
|
];
|
||||||
const wrapper = mount({
|
const wrapper = mount({
|
||||||
render() {
|
render() {
|
||||||
return <PageHeader title="Title" breadcrumb={{ props: { routes } }} />;
|
return <PageHeader title="Title" breadcrumb={{ routes }} />;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
expect(wrapper.findAll('.ant-breadcrumb')).toHaveLength(1);
|
expect(wrapper.findAll('.ant-breadcrumb')).toHaveLength(1);
|
||||||
|
|
||||||
const wrapperBack = mount(
|
const wrapperBack = mount({
|
||||||
{
|
render() {
|
||||||
render() {
|
return <PageHeader title="Title" breadcrumb={{ routes }} onBack={() => {}} />;
|
||||||
return <PageHeader title="Title" breadcrumb={{ props: { routes } }} onBack={() => {}} />;
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
{ localVue },
|
});
|
||||||
);
|
|
||||||
expect(wrapperBack.findAll('.ant-breadcrumb')).toHaveLength(1);
|
expect(wrapperBack.findAll('.ant-breadcrumb')).toHaveLength(1);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { inject } from 'vue';
|
import { inject } from 'vue';
|
||||||
import PropTypes from '../_util/vue-types';
|
import PropTypes from '../_util/vue-types';
|
||||||
import { getComponent, getOptionProps } from '../_util/props-util';
|
import { getComponent, getOptionProps, getSlot } from '../_util/props-util';
|
||||||
import { ConfigConsumerProps } from '../config-provider';
|
import { ConfigConsumerProps } from '../config-provider';
|
||||||
import ArrowLeftOutlined from '@ant-design/icons-vue/ArrowLeftOutlined';
|
import ArrowLeftOutlined from '@ant-design/icons-vue/ArrowLeftOutlined';
|
||||||
import Breadcrumb from '../breadcrumb';
|
import Breadcrumb from '../breadcrumb';
|
||||||
|
@ -19,6 +19,7 @@ export const PageHeaderProps = {
|
||||||
extra: PropTypes.any,
|
extra: PropTypes.any,
|
||||||
avatar: PropTypes.object,
|
avatar: PropTypes.object,
|
||||||
ghost: PropTypes.bool,
|
ghost: PropTypes.bool,
|
||||||
|
onBack: PropTypes.func,
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderBack = (instance, prefixCls, backIcon, onBack) => {
|
const renderBack = (instance, prefixCls, backIcon, onBack) => {
|
||||||
|
@ -61,7 +62,7 @@ const renderTitle = (prefixCls, instance) => {
|
||||||
) : (
|
) : (
|
||||||
<ArrowLeftOutlined />
|
<ArrowLeftOutlined />
|
||||||
);
|
);
|
||||||
const onBack = instance.$attrs.onBack;
|
const onBack = instance.onBack;
|
||||||
const headingPrefixCls = `${prefixCls}-heading`;
|
const headingPrefixCls = `${prefixCls}-heading`;
|
||||||
if (title || subTitle || tags || extra) {
|
if (title || subTitle || tags || extra) {
|
||||||
const backIconDom = renderBack(instance, prefixCls, backIcon, onBack);
|
const backIconDom = renderBack(instance, prefixCls, backIcon, onBack);
|
||||||
|
@ -103,7 +104,7 @@ const PageHeader = {
|
||||||
const props = getOptionProps(this);
|
const props = getOptionProps(this);
|
||||||
const { prefixCls: customizePrefixCls, breadcrumb } = props;
|
const { prefixCls: customizePrefixCls, breadcrumb } = props;
|
||||||
const footer = getComponent(this, 'footer');
|
const footer = getComponent(this, 'footer');
|
||||||
const children = this.$slots.default && this.$slots.default();
|
const children = getSlot(this);
|
||||||
let ghost = true;
|
let ghost = true;
|
||||||
|
|
||||||
// Use `ghost` from `props` or from `ConfigProvider` instead.
|
// Use `ghost` from `props` or from `ConfigProvider` instead.
|
||||||
|
@ -113,10 +114,7 @@ const PageHeader = {
|
||||||
ghost = pageHeader.ghost;
|
ghost = pageHeader.ghost;
|
||||||
}
|
}
|
||||||
const prefixCls = getPrefixCls('page-header', customizePrefixCls);
|
const prefixCls = getPrefixCls('page-header', customizePrefixCls);
|
||||||
const breadcrumbDom =
|
const breadcrumbDom = breadcrumb && breadcrumb.routes ? renderBreadcrumb(breadcrumb) : null;
|
||||||
breadcrumb && breadcrumb.props && breadcrumb.props.routes
|
|
||||||
? renderBreadcrumb(breadcrumb)
|
|
||||||
: null;
|
|
||||||
const className = [
|
const className = [
|
||||||
prefixCls,
|
prefixCls,
|
||||||
{
|
{
|
||||||
|
@ -130,7 +128,7 @@ const PageHeader = {
|
||||||
<div class={className}>
|
<div class={className}>
|
||||||
{breadcrumbDom}
|
{breadcrumbDom}
|
||||||
{renderTitle(prefixCls, this)}
|
{renderTitle(prefixCls, this)}
|
||||||
{children && children.length && renderChildren(prefixCls, children)}
|
{children.length ? renderChildren(prefixCls, children) : null}
|
||||||
{renderFooter(prefixCls, footer)}
|
{renderFooter(prefixCls, footer)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import demo from '../antdv-demo/docs/notification/demo/index';
|
import demo from '../antdv-demo/docs/page-header/demo/index';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
|
|
Loading…
Reference in New Issue