Skip to content

Commit 71e1100

Browse files
committed
feat: popover support empty slot
1 parent 85197c4 commit 71e1100

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

components/popover/index.tsx

+7-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { computed, defineComponent, ref } from 'vue';
33
import Tooltip from '../tooltip';
44
import abstractTooltipProps from '../tooltip/abstractTooltipProps';
55
import PropTypes from '../_util/vue-types';
6-
import { initDefaultProps } from '../_util/props-util';
6+
import { filterEmpty, initDefaultProps } from '../_util/props-util';
77
import { withInstall } from '../_util/type';
88
import useConfigInject from '../_util/hooks/useConfigInject';
99
import omit from '../_util/omit';
@@ -39,10 +39,14 @@ const Popover = defineComponent({
3939
const { prefixCls, configProvider } = useConfigInject('popover', props);
4040
const rootPrefixCls = computed(() => configProvider.getPrefixCls());
4141
const getOverlay = () => {
42-
const { title = slots.title?.(), content = slots.content?.() } = props;
42+
const { title = filterEmpty(slots.title?.()), content = filterEmpty(slots.content?.()) } =
43+
props;
44+
const hasTitle = !!(Array.isArray(title) ? title.length : title);
45+
const hasContent = !!(Array.isArray(content) ? content.length : title);
46+
if (!hasTitle && !hasContent) return undefined;
4347
return (
4448
<>
45-
{title && <div class={`${prefixCls.value}-title`}>{title}</div>}
49+
{hasTitle && <div class={`${prefixCls.value}-title`}>{title}</div>}
4650
<div class={`${prefixCls.value}-inner-content`}>{content}</div>
4751
</>
4852
);

0 commit comments

Comments
 (0)