diff --git a/components/_util/props-util.js b/components/_util/props-util.js index 68e8f97b2..97a929dad 100644 --- a/components/_util/props-util.js +++ b/components/_util/props-util.js @@ -18,7 +18,8 @@ const getOptionProps = (instance) => { return filterProps($props, $options.propsData) } -const getComponentFromProp = (instance, h, prop) => { +const getComponentFromProp = (instance, prop) => { + const h = instance.$createElement const temp = instance[prop] if (temp !== undefined) { return typeof temp === 'function' ? temp(h) : temp diff --git a/components/menu/MenuItem.vue b/components/menu/MenuItem.vue index 8bda50307..3cfa42d8e 100644 --- a/components/menu/MenuItem.vue +++ b/components/menu/MenuItem.vue @@ -3,11 +3,11 @@ import { Item, itemProps } from './src/index' import { getClass, getStyle } from '../_util/vnode' import Tooltip from '../tooltip' import { getComponentFromProp } from '../_util/props-util' - +function noop () {} export default { props: itemProps, inject: { - getInlineCollapsed: { default: () => { false } }, + getInlineCollapsed: { default: () => noop }, }, isMenuItem: 1, methods: { @@ -28,6 +28,7 @@ export default { const toolTipProps = { props: { placement: 'right', + trigger: 'click', overlayClassName: `${props.rootPrefixCls}-inline-collapsed-tooltip`, }, on: {}, @@ -36,6 +37,7 @@ export default { {...toolTipProps} > diff --git a/components/menu/demo/inline-collapsed.vue b/components/menu/demo/inline-collapsed.vue index 51cb7650b..23e1c2608 100644 --- a/components/menu/demo/inline-collapsed.vue +++ b/components/menu/demo/inline-collapsed.vue @@ -9,6 +9,10 @@ + + + Option 1 + - + + diff --git a/components/menu/src/MenuItem.vue b/components/menu/src/MenuItem.vue index 87c246fc9..84cbe1b49 100644 --- a/components/menu/src/MenuItem.vue +++ b/components/menu/src/MenuItem.vue @@ -104,7 +104,7 @@ const MenuItem = { }, isSelected () { - return this.$props.selectedKeys.indexOf(this.$props.eventKey) !== -1 + return this.$props.selectedKeys && this.$props.selectedKeys.indexOf(this.$props.eventKey) !== -1 }, }, diff --git a/components/menu/src/SubMenu.vue b/components/menu/src/SubMenu.vue index 5a571475c..95d683bc0 100644 --- a/components/menu/src/SubMenu.vue +++ b/components/menu/src/SubMenu.vue @@ -423,7 +423,7 @@ export default {
- {getComponentFromProp(this, h, 'title')} + {getComponentFromProp(this, 'title')}
) diff --git a/components/popconfirm/index.vue b/components/popconfirm/index.vue index a7286448a..9f43230ee 100644 --- a/components/popconfirm/index.vue +++ b/components/popconfirm/index.vue @@ -89,15 +89,15 @@ export default {
- {getComponentFromProp(this, h, 'title')} + {getComponentFromProp(this, 'title')}
diff --git a/components/popover/index.vue b/components/popover/index.vue index 68d46d4b7..16407335f 100644 --- a/components/popover/index.vue +++ b/components/popover/index.vue @@ -44,11 +44,11 @@ export default {
{(title || $slots.title) &&
- {getComponentFromProp(this, h, 'title')} + {getComponentFromProp(this, 'title')}
}
- {getComponentFromProp(this, h, 'content')} + {getComponentFromProp(this, 'content')}
diff --git a/components/tooltip/src/Tooltip.vue b/components/tooltip/src/Tooltip.vue index 67577d786..50ac7513b 100644 --- a/components/tooltip/src/Tooltip.vue +++ b/components/tooltip/src/Tooltip.vue @@ -2,7 +2,7 @@ import PropTypes from '../../_util/vue-types' import Trigger from '../../trigger' import { placements } from './placements' -import hasProp from '../../_util/props-util' +import { hasProp, getComponentFromProp } from '../../_util/props-util' function noop () {} export default { props: { @@ -31,15 +31,13 @@ export default { }, methods: { getPopupElement (h) { - const { arrowContent, overlay, prefixCls, tipId } = this.$props + const { prefixCls, tipId } = this.$props return ([
- {this.$slots.arrowContent} - {typeof arrowContent === 'function' ? arrowContent(h) : arrowContent} + {getComponentFromProp(this, 'arrowContent')}
,
- {typeof overlay === 'function' ? overlay(h) : overlay} - {this.$slots.overlay} + {getComponentFromProp(this, 'overlay')}
, ]) }, diff --git a/components/tooltip/tooltip.vue b/components/tooltip/tooltip.vue index f6431a3bc..f94ea12b5 100644 --- a/components/tooltip/tooltip.vue +++ b/components/tooltip/tooltip.vue @@ -3,7 +3,7 @@ import { cloneElement, isValidElement, getClass, getStyle } from '../_util/vnode import RcTooltip from './src/tooltip' import getPlacements from './placements' import PropTypes from '../_util/vue-types' -import hasProp from '../_util/props-util' +import { hasProp, getComponentFromProp } from '../_util/props-util' import abstractTooltipProps from './abstractTooltipProps' const splitObject = (obj, keys) => { @@ -147,7 +147,7 @@ export default { render (h) { const { $props, $data, $slots } = this - const { title, prefixCls, openClassName, getPopupContainer, getTooltipContainer } = $props + const { prefixCls, openClassName, getPopupContainer, getTooltipContainer } = $props const children = ($slots.default || []).filter(c => c.tag || c.text.trim() !== '')[0] let sVisible = $data.sVisible // Hide tooltip when there is no title @@ -177,8 +177,7 @@ export default { return ( {sVisible ? cloneElement(child, { class: childCls }) : child} diff --git a/components/trigger/index.vue b/components/trigger/index.vue index 3f1b20730..4994983a0 100644 --- a/components/trigger/index.vue +++ b/components/trigger/index.vue @@ -231,7 +231,10 @@ export default { } this.preClickTime = 0 this.preTouchTime = 0 - event.preventDefault() + event.preventDefault && event.preventDefault() + if (event.domEvent) { + event.domEvent.preventDefault() + } const nextVisible = !this.$data.sPopupVisible if (this.isClickToHide() && !nextVisible || nextVisible && this.isClickToShow()) { this.setPopupVisible(!this.$data.sPopupVisible) @@ -507,7 +510,7 @@ export default { this._component = null } newChildProps.addChildren = this._component - const trigger = cloneElement(child, newChildProps) + const trigger = cloneElement(child, newChildProps, true) return trigger }, }