feat: update pageheader (#2365)
* feat: update pageheader * fix: error * fix: index Co-authored-by: tangjinzhou <415800467@qq.com>pull/2389/head
parent
f099d5de8e
commit
1ca13ac166
|
@ -1,12 +1,12 @@
|
||||||
|
import { inject } from 'vue';
|
||||||
import PropTypes from '../_util/vue-types';
|
import PropTypes from '../_util/vue-types';
|
||||||
import { getComponentFromProp, getOptionProps } from '../_util/props-util';
|
import { getComponent, getOptionProps } 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';
|
||||||
import Avatar from '../avatar';
|
import Avatar from '../avatar';
|
||||||
import TransButton from '../_util/transButton';
|
import TransButton from '../_util/transButton';
|
||||||
import LocaleReceiver from '../locale-provider/LocaleReceiver';
|
import LocaleReceiver from '../locale-provider/LocaleReceiver';
|
||||||
import Base from '../base';
|
|
||||||
|
|
||||||
export const PageHeaderProps = {
|
export const PageHeaderProps = {
|
||||||
backIcon: PropTypes.any,
|
backIcon: PropTypes.any,
|
||||||
|
@ -52,17 +52,17 @@ const renderBreadcrumb = (h, breadcrumb) => {
|
||||||
|
|
||||||
const renderTitle = (h, prefixCls, instance) => {
|
const renderTitle = (h, prefixCls, instance) => {
|
||||||
const { avatar } = instance;
|
const { avatar } = instance;
|
||||||
const title = getComponentFromProp(instance, 'title');
|
const title = getComponent(instance, 'title');
|
||||||
const subTitle = getComponentFromProp(instance, 'subTitle');
|
const subTitle = getComponent(instance, 'subTitle');
|
||||||
const tags = getComponentFromProp(instance, 'tags');
|
const tags = getComponent(instance, 'tags');
|
||||||
const extra = getComponentFromProp(instance, 'extra');
|
const extra = getComponent(instance, 'extra');
|
||||||
const backIcon =
|
const backIcon =
|
||||||
getComponentFromProp(instance, 'backIcon') !== undefined ? (
|
getComponent(instance, 'backIcon') !== undefined ? (
|
||||||
getComponentFromProp(instance, 'backIcon')
|
getComponent(instance, 'backIcon')
|
||||||
) : (
|
) : (
|
||||||
<ArrowLeftOutlined />
|
<ArrowLeftOutlined />
|
||||||
);
|
);
|
||||||
const onBack = instance.$listeners.back;
|
const onBack = instance.$attrs.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);
|
||||||
|
@ -94,15 +94,17 @@ const renderChildren = (h, prefixCls, children) => {
|
||||||
const PageHeader = {
|
const PageHeader = {
|
||||||
name: 'APageHeader',
|
name: 'APageHeader',
|
||||||
props: PageHeaderProps,
|
props: PageHeaderProps,
|
||||||
inject: {
|
setup() {
|
||||||
configProvider: { default: () => ConfigConsumerProps },
|
return {
|
||||||
|
configProvider: inject('configProvider', ConfigConsumerProps),
|
||||||
|
};
|
||||||
},
|
},
|
||||||
render(h) {
|
render(h) {
|
||||||
const { getPrefixCls, pageHeader } = this.configProvider;
|
const { getPrefixCls, pageHeader } = this.configProvider;
|
||||||
const props = getOptionProps(this);
|
const props = getOptionProps(this);
|
||||||
const { prefixCls: customizePrefixCls, breadcrumb } = props;
|
const { prefixCls: customizePrefixCls, breadcrumb } = props;
|
||||||
const footer = getComponentFromProp(this, 'footer');
|
const footer = getComponent(this, 'footer');
|
||||||
const children = this.$slots.default;
|
const children = this.$slots.default && this.$slots.default();
|
||||||
|
|
||||||
let ghost = true;
|
let ghost = true;
|
||||||
|
|
||||||
|
@ -138,9 +140,8 @@ const PageHeader = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* istanbul ignore next */
|
/* istanbul ignore next */
|
||||||
PageHeader.install = function(Vue) {
|
PageHeader.install = function(app) {
|
||||||
Vue.use(Base);
|
app.component(PageHeader.name, PageHeader);
|
||||||
Vue.component(PageHeader.name, PageHeader);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default PageHeader;
|
export default PageHeader;
|
||||||
|
|
|
@ -12,6 +12,7 @@ import Anchor from 'ant-design-vue/anchor';
|
||||||
import ConfigProvider from 'ant-design-vue/config-provider';
|
import ConfigProvider from 'ant-design-vue/config-provider';
|
||||||
import Result from 'ant-design-vue/result';
|
import Result from 'ant-design-vue/result';
|
||||||
import Spin from 'ant-design-vue/spin';
|
import Spin from 'ant-design-vue/spin';
|
||||||
|
import PageHeader from 'ant-design-vue/page-header';
|
||||||
import Skeleton from 'ant-design-vue/skeleton';
|
import Skeleton from 'ant-design-vue/skeleton';
|
||||||
import Empty from 'ant-design-vue/empty';
|
import Empty from 'ant-design-vue/empty';
|
||||||
import Timeline from 'ant-design-vue/timeline';
|
import Timeline from 'ant-design-vue/timeline';
|
||||||
|
@ -27,6 +28,7 @@ createApp(App)
|
||||||
.use(Alert)
|
.use(Alert)
|
||||||
.use(Divider)
|
.use(Divider)
|
||||||
.use(Result)
|
.use(Result)
|
||||||
|
.use(PageHeader)
|
||||||
.use(Anchor)
|
.use(Anchor)
|
||||||
.use(Skeleton)
|
.use(Skeleton)
|
||||||
.use(Spin)
|
.use(Spin)
|
||||||
|
|
Loading…
Reference in New Issue