feat: update spin (#2351)

pull/2363/head
xrkffgg 2020-06-04 15:04:39 +08:00 committed by GitHub
parent 5417d929d7
commit de834ce265
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 11 deletions

View File

@ -1,3 +1,4 @@
import { inject, cloneVNode } from 'vue';
import debounce from 'lodash/debounce'; import debounce from 'lodash/debounce';
import PropTypes from '../_util/vue-types'; import PropTypes from '../_util/vue-types';
import BaseMixin from '../_util/BaseMixin'; import BaseMixin from '../_util/BaseMixin';
@ -5,10 +6,9 @@ import {
filterEmpty, filterEmpty,
initDefaultProps, initDefaultProps,
isValidElement, isValidElement,
getComponentFromProp, getComponent,
getListeners, getListeners,
} from '../_util/props-util'; } from '../_util/props-util';
import { cloneElement } from '../_util/vnode';
import { ConfigConsumerProps } from '../config-provider'; import { ConfigConsumerProps } from '../config-provider';
export const SpinSize = PropTypes.oneOf(['small', 'default', 'large']); export const SpinSize = PropTypes.oneOf(['small', 'default', 'large']);
@ -47,8 +47,10 @@ export default {
spinning: true, spinning: true,
wrapperClassName: '', wrapperClassName: '',
}), }),
inject: { setup() {
configProvider: { default: () => ConfigConsumerProps }, return {
configProvider: inject('configProvider', ConfigConsumerProps),
};
}, },
data() { data() {
const { spinning, delay } = this; const { spinning, delay } = this;
@ -100,7 +102,7 @@ export default {
renderIndicator(h, prefixCls) { renderIndicator(h, prefixCls) {
// const h = this.$createElement // const h = this.$createElement
const dotClassName = `${prefixCls}-dot`; const dotClassName = `${prefixCls}-dot`;
let indicator = getComponentFromProp(this, 'indicator'); let indicator = getComponent(this, 'indicator');
// should not be render default indicator when indicator value is null // should not be render default indicator when indicator value is null
if (indicator === null) { if (indicator === null) {
return null; return null;
@ -110,11 +112,11 @@ export default {
indicator = indicator.length === 1 ? indicator[0] : indicator; indicator = indicator.length === 1 ? indicator[0] : indicator;
} }
if (isValidElement(indicator)) { if (isValidElement(indicator)) {
return cloneElement(indicator, { class: dotClassName }); return cloneVNode(indicator, { class: dotClassName });
} }
if (defaultIndicator && isValidElement(defaultIndicator(h))) { if (defaultIndicator && isValidElement(defaultIndicator(h))) {
return cloneElement(defaultIndicator(h), { class: dotClassName }); return cloneVNode(defaultIndicator(h), { class: dotClassName });
} }
return ( return (

View File

@ -1,14 +1,12 @@
import Spin, { setDefaultIndicator } from './Spin'; import Spin, { setDefaultIndicator } from './Spin';
import Base from '../base';
export { SpinProps } from './Spin'; export { SpinProps } from './Spin';
Spin.setDefaultIndicator = setDefaultIndicator; Spin.setDefaultIndicator = setDefaultIndicator;
/* istanbul ignore next */ /* istanbul ignore next */
Spin.install = function(Vue) { Spin.install = function(app) {
Vue.use(Base); app.component(Spin.name, Spin);
Vue.component(Spin.name, Spin);
}; };
export default Spin; export default Spin;

View File

@ -6,6 +6,7 @@ import Drawer from 'ant-design-vue/drawer';
import Affix from 'ant-design-vue/affix'; import Affix from 'ant-design-vue/affix';
import Alert from 'ant-design-vue/alert'; import Alert from 'ant-design-vue/alert';
import ConfigProvider from 'ant-design-vue/config-provider'; import ConfigProvider from 'ant-design-vue/config-provider';
import Spin from 'ant-design-vue/Spin';
import 'ant-design-vue/style.js'; import 'ant-design-vue/style.js';
createApp(App) createApp(App)
@ -14,4 +15,5 @@ createApp(App)
.use(Drawer) .use(Drawer)
.use(Affix) .use(Affix)
.use(Alert) .use(Alert)
.use(Spin)
.mount('#app'); .mount('#app');