diff --git a/components/config-provider/empty.svg b/components/config-provider/empty.svg
new file mode 100644
index 000000000..55e40af09
--- /dev/null
+++ b/components/config-provider/empty.svg
@@ -0,0 +1,16 @@
+
diff --git a/components/config-provider/index.jsx b/components/config-provider/index.jsx
index 44551a6df..c05b7b7f9 100644
--- a/components/config-provider/index.jsx
+++ b/components/config-provider/index.jsx
@@ -1,17 +1,41 @@
import PropTypes from '../_util/vue-types';
+import { filterEmpty } from '../_util/props-util';
+import defaultRenderEmpty from './renderEmpty';
const ConfigProvider = {
name: 'AConfigProvider',
props: {
getPopupContainer: PropTypes.func,
+ prefixCls: PropTypes.string,
+ renderEmpty: PropTypes.any,
+ csp: PropTypes.any,
+ autoInsertSpaceInButton: PropTypes.bool,
},
provide() {
return {
- configProvider: this.$props,
+ configProvider: {
+ ...this.$props,
+ renderEmpty: this.$props.renderEmpty || this.$slots.renderEmpty || defaultRenderEmpty,
+ getPrefixCls: this.getPrefixCls,
+ },
};
},
+ methods: {
+ getPrefixCls(suffixCls, customizePrefixCls) {
+ const { prefixCls = 'ant' } = this.$props;
+ if (customizePrefixCls) return customizePrefixCls;
+ return suffixCls ? `${prefixCls}-${suffixCls}` : prefixCls;
+ },
+ },
render() {
- return this.$slots.default ? this.$slots.default[0] : null;
+ return this.$slots.default ? filterEmpty(this.$slots.default) : null;
+ },
+};
+
+export const ConfigConsumerProps = {
+ getPrefixCls: (suffixCls, customizePrefixCls) => {
+ if (customizePrefixCls) return customizePrefixCls;
+ return `ant-${suffixCls}`;
},
};
diff --git a/components/config-provider/renderEmpty.jsx b/components/config-provider/renderEmpty.jsx
new file mode 100644
index 000000000..8d124d20f
--- /dev/null
+++ b/components/config-provider/renderEmpty.jsx
@@ -0,0 +1,34 @@
+import PropTypes from '../_util/vue-types';
+import Empty from '../empty';
+import emptyImg from './empty.svg';
+
+const renderEmpty = {
+ functional: true,
+ inject: ['configProvider'],
+ props: {
+ componentName: PropTypes.string,
+ },
+ render(createElement, context) {
+ const { props, injections } = context;
+ function renderHtml(componentName) {
+ const prefix = injections.configProvider.getPrefixCls('empty');
+ switch (componentName) {
+ case 'Table':
+ case 'List':
+ return Data Not FoundSelect
+ TreeSelect
+ Cascader
+ Transfer
+ Table
+ List
+
{des}
- {this.$slots.default && } + {this.$slots.default && } ); }, diff --git a/components/vc-cascader/Cascader.jsx b/components/vc-cascader/Cascader.jsx index 456f6c76b..a3510ebfa 100644 --- a/components/vc-cascader/Cascader.jsx +++ b/components/vc-cascader/Cascader.jsx @@ -372,7 +372,7 @@ export default { return (