From 1a3e53c595eb1aae8c853503029ea6d8a07de368 Mon Sep 17 00:00:00 2001 From: liulinboyi <814921718@qq.com> Date: Fri, 12 Jun 2020 13:25:21 +0800 Subject: [PATCH] feat: update Badge --- components/_util/props-util.js | 6 +++--- components/badge/Badge.jsx | 11 +++++++---- components/badge/ScrollNumber.jsx | 7 +++++-- components/badge/index.js | 6 ++---- examples/index.js | 2 ++ 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/components/_util/props-util.js b/components/_util/props-util.js index f0d5032555..7ca70b48c9 100644 --- a/components/_util/props-util.js +++ b/components/_util/props-util.js @@ -1,6 +1,6 @@ import isPlainObject from 'lodash/isPlainObject'; import classNames from 'classnames'; -import { isVNode, Fragment, Comment, Text } from 'vue'; +import { isVNode, Fragment, Comment, Text, h } from 'vue'; import { camelize, hyphenate, isOn, resolvePropValue } from './util'; // function getType(fn) { // const match = fn && fn.toString().match(/^\s*function (\w+)/); @@ -129,7 +129,7 @@ const getComponent = (instance, prop, options = instance, execute = true) => { }; const getComponentFromProp = (instance, prop, options = instance, execute = true) => { if (instance.$createElement) { - const h = instance.$createElement; + // const h = instance.$createElement; const temp = instance[prop]; if (temp !== undefined) { return typeof temp === 'function' && execute ? temp(h, options) : temp; @@ -141,7 +141,7 @@ const getComponentFromProp = (instance, prop, options = instance, execute = true undefined ); } else { - const h = instance.context.$createElement; + // const h = instance.context.$createElement; const temp = getPropsData(instance)[prop]; if (temp !== undefined) { return typeof temp === 'function' && execute ? temp(h, options) : temp; diff --git a/components/badge/Badge.jsx b/components/badge/Badge.jsx index 66211411e9..63b53a7be4 100644 --- a/components/badge/Badge.jsx +++ b/components/badge/Badge.jsx @@ -12,6 +12,7 @@ import { cloneElement } from '../_util/vnode'; import getTransitionProps from '../_util/getTransitionProps'; import isNumeric from '../_util/isNumeric'; import { ConfigConsumerProps } from '../config-provider'; +import { inject } from 'vue'; const BadgeProps = { /** Number to show in badge */ @@ -40,8 +41,10 @@ export default { dot: false, overflowCount: 99, }), - inject: { - configProvider: { default: () => ConfigConsumerProps }, + setup() { + return { + configProvider: inject('configProvider', ConfigConsumerProps), + }; }, methods: { getNumberedDispayCount() { @@ -80,7 +83,7 @@ export default { : { ...numberStyle }; }, getBadgeClassName(prefixCls) { - const children = filterEmpty(this.$slots.default); + const children = filterEmpty(this.$slots.default && this.$slots.default()); const hasStatus = this.hasStatus(); return classNames(prefixCls, { [`${prefixCls}-status`]: hasStatus, @@ -181,7 +184,7 @@ export default { const prefixCls = getPrefixCls('badge', customizePrefixCls); const scrollNumberPrefixCls = getPrefixCls('scroll-number', customizeScrollNumberPrefixCls); - const children = filterEmpty($slots.default); + const children = filterEmpty($slots.default && $slots.default()); let count = getComponentFromProp(this, 'count'); if (Array.isArray(count)) { count = count[0]; diff --git a/components/badge/ScrollNumber.jsx b/components/badge/ScrollNumber.jsx index d0899bd5c9..2c982ae9dd 100644 --- a/components/badge/ScrollNumber.jsx +++ b/components/badge/ScrollNumber.jsx @@ -5,6 +5,7 @@ import { getStyle } from '../_util/props-util'; import omit from 'omit.js'; import { cloneElement } from '../_util/vnode'; import { ConfigConsumerProps } from '../config-provider'; +import { inject } from 'vue'; function getNumberArray(num) { return num @@ -31,8 +32,10 @@ const ScrollNumberProps = { export default { mixins: [BaseMixin], props: ScrollNumberProps, - inject: { - configProvider: { default: () => ConfigConsumerProps }, + setup() { + return { + configProvider: inject('configProvider', ConfigConsumerProps), + }; }, data() { return { diff --git a/components/badge/index.js b/components/badge/index.js index ca5f798f0a..536522bcd4 100644 --- a/components/badge/index.js +++ b/components/badge/index.js @@ -1,10 +1,8 @@ import Badge from './Badge'; -import Base from '../base'; /* istanbul ignore next */ -Badge.install = function(Vue) { - Vue.use(Base); - Vue.component(Badge.name, Badge); +Badge.install = function(app) { + app.component(Badge.name, Badge); }; export default Badge; diff --git a/examples/index.js b/examples/index.js index ec941d4501..2604477354 100644 --- a/examples/index.js +++ b/examples/index.js @@ -29,6 +29,7 @@ import Popover from 'ant-design-vue/popover'; import notification from 'ant-design-vue/notification'; import message from 'ant-design-vue/message'; import Modal from 'ant-design-vue/modal'; +import Badge from 'ant-design-vue/badge'; import 'ant-design-vue/style.js'; const app = createApp(App); @@ -61,4 +62,5 @@ app .use(Popconfirm) .use(Popover) .use(Modal) + .use(Badge) .mount('#app');