pull/165/head
tjz 2018-02-03 19:48:03 +08:00
parent c0c7d95c01
commit 4657e729ef
4 changed files with 47 additions and 34 deletions

View File

@ -32,16 +32,20 @@ export default {
}, },
on: {}, on: {},
} }
return <Tooltip return (
{...toolTipProps} inlineCollapsed && props.level === 1
> ? <Tooltip {...toolTipProps}>
<template slot='title'> <template slot='title'>
{inlineCollapsed && props.level === 1 ? cloneVNodes($slots.default, true) : ''} { cloneVNodes($slots.default, true) }
</template> </template>
<Item {...itemProps} ref='menuItem'> <Item {...itemProps} ref='menuItem'>
{$slots.default} {$slots.default}
</Item> </Item>
</Tooltip> </Tooltip>
: <Item {...itemProps} ref='menuItem'>
{$slots.default}
</Item>
)
}, },
} }

View File

@ -31,24 +31,22 @@ export default {
}, },
mounted () { mounted () {
this.$nextTick(() => { this.$nextTick(() => {
this._container = this.getContainer()
this._container.appendChild(this.$el)
this.initAlign = true this.initAlign = true
}) })
}, },
beforeDestroy () { beforeDestroy () {
this.$el.remove() this.$el.remove()
}, },
beforeUpdate () { // beforeUpdate () {
this.$nextTick(() => { // this.$nextTick(() => {
const newContainer = this.getContainer() // const newContainer = this.getContainer()
if (newContainer !== this._container) { // if (newContainer !== this._container) {
this._container = newContainer // this._container = newContainer
this._container.appendChild(this.$el) // this._container.appendChild(this.$el)
this.$refs.alignInstance.forceAlign() // this.$refs.alignInstance.forceAlign()
} // }
}) // })
}, // },
watch: { watch: {
visible (val) { visible (val) {
if (val) { if (val) {
@ -217,7 +215,7 @@ export default {
render () { render () {
const { destroyPopup, getMaskElement, getPopupElement, initAlign } = this const { destroyPopup, getMaskElement, getPopupElement, initAlign } = this
return ( return (
<div style='position: absolute; top: 0px; left: 0px; width: 100%;'> <div>
{initAlign ? ( {initAlign ? (
getMaskElement(), getMaskElement(),
destroyPopup destroyPopup

View File

@ -58,7 +58,7 @@ export default {
}, },
offsetX: undefined, offsetX: undefined,
offsetY: undefined, offsetY: undefined,
transitionName: '', transitionName: 'rc-trigger-popup-zoom',
destroyPopupOnHide: false, destroyPopupOnHide: false,
} }
}, },
@ -159,7 +159,7 @@ export default {
</label> </label>
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;
<label> <label>
a-checkbox <a-checkbox
value='rc-trigger-popup-zoom' value='rc-trigger-popup-zoom'
onChange={this.onTransitionChange} onChange={this.onTransitionChange}
checked={state.transitionName === 'rc-trigger-popup-zoom'} checked={state.transitionName === 'rc-trigger-popup-zoom'}
@ -172,7 +172,7 @@ export default {
trigger: trigger:
<label> <label>
a-checkbox <a-checkbox
value='hover' value='hover'
checked={!!trigger.hover} checked={!!trigger.hover}
onChange={this.onTriggerChange} onChange={this.onTriggerChange}
@ -180,7 +180,7 @@ export default {
hover hover
</label> </label>
<label> <label>
a-checkbox <a-checkbox
value='focus' value='focus'
checked={!!trigger.focus} checked={!!trigger.focus}
onChange={this.onTriggerChange} onChange={this.onTriggerChange}
@ -188,7 +188,7 @@ export default {
focus focus
</label> </label>
<label> <label>
a-checkbox <a-checkbox
value='click' value='click'
checked={!!trigger.click} checked={!!trigger.click}
onChange={this.onTriggerChange} onChange={this.onTriggerChange}
@ -196,7 +196,7 @@ export default {
click click
</label> </label>
<label> <label>
a-checkbox <a-checkbox
value='contextMenu' value='contextMenu'
checked={!!trigger.contextMenu} checked={!!trigger.contextMenu}
onChange={this.onTriggerChange} onChange={this.onTriggerChange}
@ -205,7 +205,7 @@ export default {
</label> </label>
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;
<label> <label>
a-checkbox <a-checkbox
checked={!!state.destroyPopupOnHide} checked={!!state.destroyPopupOnHide}
onChange={this.handleDestroyPopupOnHide} onChange={this.handleDestroyPopupOnHide}
/> />
@ -214,7 +214,7 @@ export default {
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;
<label> <label>
a-checkbox <a-checkbox
checked={!!state.mask} checked={!!state.mask}
onChange={this.onMask} onChange={this.onMask}
/> />
@ -223,7 +223,7 @@ export default {
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;
<label> <label>
a-checkbox <a-checkbox
checked={!!state.maskClosable} checked={!!state.maskClosable}
onChange={this.onMaskClosable} onChange={this.onMaskClosable}
/> />
@ -270,7 +270,7 @@ export default {
<div slot='popup' style={{ border: '1px solid red', padding: '10px', background: 'white' }}> <div slot='popup' style={{ border: '1px solid red', padding: '10px', background: 'white' }}>
i am a popup i am a popup
</div> </div>
<a href='#' style={{ margin: '20px' }} onClick={preventDefault}>trigger</a> <a-button onClick={preventDefault}>trigger</a-button>
</Trigger> </Trigger>
</div> </div>
</div>) </div>)

View File

@ -114,6 +114,7 @@ export default {
if (this._component) { if (this._component) {
this._component.$destroy() this._component.$destroy()
this._component = null this._component = null
this.popupContainer.remove()
} }
}, },
methods: { methods: {
@ -329,6 +330,7 @@ export default {
} }
if (!this._component) { if (!this._component) {
const div = document.createElement('div') const div = document.createElement('div')
this.getContainer().appendChild(div)
this._component = new Vue({ this._component = new Vue({
data () { data () {
return { return {
@ -360,9 +362,18 @@ export default {
getContainer () { getContainer () {
const { $props: props } = this const { $props: props } = this
const popupContainer = document.createElement('div')
// Make sure default popup container will never cause scrollbar appearing
// https://github.com/react-component/trigger/issues/41
popupContainer.style.position = 'absolute'
popupContainer.style.top = '0'
popupContainer.style.left = '0'
popupContainer.style.width = '100%'
const mountNode = props.getPopupContainer const mountNode = props.getPopupContainer
? props.getPopupContainer(this.$el) : props.getDocument().body ? props.getPopupContainer(this.$el) : props.getDocument().body
return mountNode mountNode.appendChild(popupContainer)
this.popupContainer = popupContainer
return popupContainer
}, },
setPopupVisible (sPopupVisible) { setPopupVisible (sPopupVisible) {