merge master
commit
78da34587d
|
@ -27,15 +27,23 @@ export default {
|
||||||
value: [String, Number, Boolean],
|
value: [String, Number, Boolean],
|
||||||
name: String,
|
name: String,
|
||||||
indeterminate: Boolean,
|
indeterminate: Boolean,
|
||||||
onGroupChange: Function,
|
|
||||||
},
|
},
|
||||||
model: {
|
model: {
|
||||||
prop: 'checked',
|
prop: 'checked',
|
||||||
},
|
},
|
||||||
|
inject: {
|
||||||
|
context: { default: undefined },
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
const { checked, defaultChecked } = this
|
const { context, checked, defaultChecked, value } = this
|
||||||
|
let stateChecked
|
||||||
|
if (context && context.checkedStatus) {
|
||||||
|
stateChecked = context.checkedStatus.has(value)
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
stateChecked: checked === undefined ? defaultChecked : checked,
|
stateChecked: stateChecked === undefined
|
||||||
|
? checked === undefined ? defaultChecked : checked
|
||||||
|
: stateChecked,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -64,26 +72,27 @@ export default {
|
||||||
handleChange (event) {
|
handleChange (event) {
|
||||||
const targetChecked = event.target.checked
|
const targetChecked = event.target.checked
|
||||||
this.$emit('input', targetChecked)
|
this.$emit('input', targetChecked)
|
||||||
const { name, value, checked } = this
|
const { name, value, checked, context, stateChecked } = this
|
||||||
if (checked === undefined) {
|
if ((checked === undefined && !context) || (context && context.value === undefined)) {
|
||||||
this.stateChecked = targetChecked
|
this.stateChecked = targetChecked
|
||||||
}
|
}
|
||||||
const target = {
|
const target = {
|
||||||
name,
|
name,
|
||||||
value,
|
value,
|
||||||
checked: targetChecked,
|
checked: !stateChecked,
|
||||||
}
|
}
|
||||||
this.$emit('change', {
|
if (this.context) {
|
||||||
target,
|
this.context.handleChange({ target })
|
||||||
stopPropagation () {
|
} else {
|
||||||
event.stopPropagation()
|
this.$emit('change', {
|
||||||
},
|
target,
|
||||||
preventDefault () {
|
stopPropagation () {
|
||||||
event.preventDefault()
|
event.stopPropagation()
|
||||||
},
|
},
|
||||||
})
|
preventDefault () {
|
||||||
if (this.isGroup) {
|
event.preventDefault()
|
||||||
this.onGroupChange({ target })
|
},
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -91,6 +100,9 @@ export default {
|
||||||
checked (val) {
|
checked (val) {
|
||||||
this.stateChecked = val
|
this.stateChecked = val
|
||||||
},
|
},
|
||||||
|
'context.checkedStatus': function (checkedStatus) {
|
||||||
|
this.stateChecked = checkedStatus.has(this.value)
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -31,6 +31,11 @@ export default {
|
||||||
model: {
|
model: {
|
||||||
prop: 'value',
|
prop: 'value',
|
||||||
},
|
},
|
||||||
|
provide () {
|
||||||
|
return {
|
||||||
|
context: this,
|
||||||
|
}
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
const { value, defaultValue } = this
|
const { value, defaultValue } = this
|
||||||
return {
|
return {
|
||||||
|
@ -50,9 +55,6 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
created () {
|
|
||||||
this.setChildCheckbox(this.$slots.default)
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
handleChange (event) {
|
handleChange (event) {
|
||||||
const target = event.target
|
const target = event.target
|
||||||
|
@ -73,31 +75,12 @@ export default {
|
||||||
this.$emit('input', newVal)
|
this.$emit('input', newVal)
|
||||||
this.$emit('change', newVal)
|
this.$emit('change', newVal)
|
||||||
},
|
},
|
||||||
setChildCheckbox (children = []) {
|
|
||||||
const { options, $slots, checkedStatus } = this
|
|
||||||
if (options.length === 0 && $slots.default) {
|
|
||||||
children.forEach(({ componentOptions = {}, children: newChildren }) => {
|
|
||||||
const { Ctor, propsData } = componentOptions
|
|
||||||
if (Ctor && Ctor.options.name === 'Checkbox') {
|
|
||||||
propsData.isGroup = true
|
|
||||||
propsData.onGroupChange = this.handleChange
|
|
||||||
propsData.checked = checkedStatus.has(propsData.value)
|
|
||||||
} else {
|
|
||||||
this.setChildCheckbox(newChildren)
|
|
||||||
}
|
|
||||||
}, this)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
},
|
},
|
||||||
beforeUpdate () {
|
|
||||||
this.setChildCheckbox(this.$slots.default)
|
|
||||||
},
|
|
||||||
watch: {
|
watch: {
|
||||||
value (val) {
|
value (val) {
|
||||||
this.stateValue = val
|
this.stateValue = val
|
||||||
this.setChildCheckbox(this.$slots.default)
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
|
|
|
@ -1,18 +1,62 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<Checkbox @change="onChange">Checkbox</Checkbox>
|
<p :style="{ marginBottom: '20px' }">
|
||||||
|
<Checkbox
|
||||||
|
:checked="checked"
|
||||||
|
:disabled="disabled"
|
||||||
|
@change="onChange"
|
||||||
|
>
|
||||||
|
{{label}}
|
||||||
|
</Checkbox>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<AntButton
|
||||||
|
type="primary"
|
||||||
|
size="small"
|
||||||
|
@click="toggleChecked"
|
||||||
|
>
|
||||||
|
{{!checked ? 'Check' : 'Uncheck'}}
|
||||||
|
</AntButton>
|
||||||
|
<AntButton
|
||||||
|
:style="{ marginLeft: '10px' }"
|
||||||
|
type="primary"
|
||||||
|
size="small"
|
||||||
|
@click="toggleDisable"
|
||||||
|
>
|
||||||
|
{{!disabled ? 'Disable' : 'Enable'}}
|
||||||
|
</AntButton>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { Checkbox } from 'antd'
|
import { Checkbox, Button } from 'antd'
|
||||||
export default {
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
checked: true,
|
||||||
|
disabled: false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
label () {
|
||||||
|
const { checked, disabled } = this
|
||||||
|
return `${checked ? 'Checked' : 'Unchecked'}-${disabled ? 'Disabled' : 'Enabled'}`
|
||||||
|
},
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
toggleChecked () {
|
||||||
|
this.checked = !this.checked
|
||||||
|
},
|
||||||
|
toggleDisable () {
|
||||||
|
this.disabled = !this.disabled
|
||||||
|
},
|
||||||
onChange (e) {
|
onChange (e) {
|
||||||
console.log(`checked = ${e.target.checked}`)
|
this.checked = e.target.checked
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
Checkbox,
|
Checkbox,
|
||||||
|
AntButton: Button,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<br />
|
<br />
|
||||||
<CheckboxGroup :options="plainOptions" :defaultValue="['Apple']" @change="onChange" />
|
<CheckboxGroup :options="plainOptions" :defaultValue="['Apple']" @change="onChange" />
|
||||||
<br />
|
<br />
|
||||||
<CheckboxGroup :options="options" :defaultValue="['Pear']" @change="onChange" />
|
<CheckboxGroup :options="options" :value="['Pear']" @change="onChange" />
|
||||||
<br />
|
<br />
|
||||||
<CheckboxGroup :options="optionsWithDisabled" disabled :defaultValue="['Apple']" @change="onChange" />
|
<CheckboxGroup :options="optionsWithDisabled" disabled :defaultValue="['Apple']" @change="onChange" />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1>Basic</h1>
|
||||||
|
<Basic />
|
||||||
|
<h1>CheckAll</h1>
|
||||||
|
<CheckAll />
|
||||||
|
<h1>Controller</h1>
|
||||||
|
<Controller />
|
||||||
|
<h1>Disabled</h1>
|
||||||
|
<Disabled />
|
||||||
|
<h1>Group</h1>
|
||||||
|
<Group />
|
||||||
|
<h1>Layout</h1>
|
||||||
|
<Layout />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import Basic from './basic'
|
||||||
|
import CheckAll from './check-all'
|
||||||
|
import Controller from './controller'
|
||||||
|
import Disabled from './disabled'
|
||||||
|
|
||||||
|
import Group from './group'
|
||||||
|
import Layout from './layout'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
Basic,
|
||||||
|
CheckAll,
|
||||||
|
Disabled,
|
||||||
|
Controller,
|
||||||
|
Group,
|
||||||
|
Layout,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -1,18 +1,27 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<CheckboxGroup @change="onChange">
|
||||||
<Checkbox @change="onChange">Checkbox</Checkbox>
|
<Row>
|
||||||
</div>
|
<Col :span="8"><Checkbox value="A">A</Checkbox></Col>
|
||||||
|
<Col :span="8"><Checkbox value="B">B</Checkbox></Col>
|
||||||
|
<Col :span="8"><Checkbox value="C">C</Checkbox></Col>
|
||||||
|
<Col :span="8"><Checkbox value="D">D</Checkbox></Col>
|
||||||
|
<Col :span="8"><Checkbox value="E">E</Checkbox></Col>
|
||||||
|
</Row>
|
||||||
|
</CheckboxGroup>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { Checkbox } from 'antd'
|
import { Checkbox, Row, Col } from 'antd'
|
||||||
export default {
|
export default {
|
||||||
methods: {
|
methods: {
|
||||||
onChange (e) {
|
onChange (checkedValues) {
|
||||||
console.log(`checked = ${e.target.checked}`)
|
console.log('checked = ', checkedValues)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
Checkbox,
|
Checkbox,
|
||||||
|
Row,
|
||||||
|
Col,
|
||||||
|
CheckboxGroup: Checkbox.Group,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -13,3 +13,7 @@ export { default as Rate } from './rate'
|
||||||
export { default as ToolTip } from './tooltip'
|
export { default as ToolTip } from './tooltip'
|
||||||
|
|
||||||
export { default as Pagination } from './pagination'
|
export { default as Pagination } from './pagination'
|
||||||
|
|
||||||
|
export { default as Row } from './grid/row'
|
||||||
|
|
||||||
|
export { default as Col } from './grid/col'
|
||||||
|
|
|
@ -2,3 +2,4 @@ import './button/style'
|
||||||
import './icon/style'
|
import './icon/style'
|
||||||
import './radio/style'
|
import './radio/style'
|
||||||
import './checkbox/style'
|
import './checkbox/style'
|
||||||
|
import './grid/style'
|
||||||
|
|
|
@ -2,19 +2,37 @@
|
||||||
<div>
|
<div>
|
||||||
<tool-tip
|
<tool-tip
|
||||||
placement="top"
|
placement="top"
|
||||||
:title="showText">
|
:title="showText"
|
||||||
<h1 @click="boom" style="display: inline-block">This is just a test, put your cursor here</h1>
|
:autoAdjustOverflow="autoAdjustOverflow"
|
||||||
|
>
|
||||||
|
<h1 @click="boom" class="test">撞到边缘翻转位置 & 点击更新</h1>
|
||||||
</tool-tip>
|
</tool-tip>
|
||||||
<ant-button>{{showText}}</ant-button>
|
<ant-button @click="reverse" type="primary">{{autoAdjustOverflow ? '启用' : '关闭'}}自动调整中</ant-button>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
|
<h2>切换arrowPointAtCenter模式</h2>
|
||||||
|
<ant-button @click="change">{{arrowPointAtCenter}}</ant-button>
|
||||||
<table>
|
<table>
|
||||||
<tr v-for="(tr, index) in table" :key="index">
|
<tr v-for="(tr, index) in table" :key="index">
|
||||||
<td v-for="(td, i) in tr" :key="i">
|
<td v-for="(td, i) in tr" :key="i">
|
||||||
<tool-tip v-if="td" :placement="td" :title="td"><AntButton type="primary">{{td}}</AntButton></tool-tip>
|
<tool-tip
|
||||||
|
v-if="td"
|
||||||
|
:placement="td"
|
||||||
|
:title="td"
|
||||||
|
:arrowPointAtCenter="arrowPointAtCenter"
|
||||||
|
>
|
||||||
|
<AntButton type="primary">{{td}}</AntButton>
|
||||||
|
</tool-tip>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<p>
|
||||||
|
<tool-tip :arrowPointAtCenter="true" title="Consider using the NamedModulesPlugin for module names." placement="topLeft">
|
||||||
|
<ant-button>arrowPointAtCenter arrowPointAtCenter arrowPointAtCenter</ant-button>
|
||||||
|
</tool-tip>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -33,7 +51,9 @@
|
||||||
['left', '', '', '', 'right'],
|
['left', '', '', '', 'right'],
|
||||||
['leftBottom', '', '', '', 'rightBottom'],
|
['leftBottom', '', '', '', 'rightBottom'],
|
||||||
['', 'bottomLeft', 'bottom', 'bottomRight', ''],
|
['', 'bottomLeft', 'bottom', 'bottomRight', ''],
|
||||||
]
|
],
|
||||||
|
arrowPointAtCenter: false,
|
||||||
|
autoAdjustOverflow: true,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -43,6 +63,12 @@
|
||||||
} else {
|
} else {
|
||||||
this.showText += ' '
|
this.showText += ' '
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
change() {
|
||||||
|
this.arrowPointAtCenter = !this.arrowPointAtCenter
|
||||||
|
},
|
||||||
|
reverse() {
|
||||||
|
this.autoAdjustOverflow = !this.autoAdjustOverflow
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
|
@ -52,6 +78,10 @@
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
|
.test {
|
||||||
|
margin: 20px;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
.box {
|
.box {
|
||||||
margin: 100px;
|
margin: 100px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,8 @@ export default {
|
||||||
left: 0,
|
left: 0,
|
||||||
top: 0,
|
top: 0,
|
||||||
realPlacement: this.placement,
|
realPlacement: this.placement,
|
||||||
|
t1: null,
|
||||||
|
t2: null,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -72,13 +74,30 @@ export default {
|
||||||
top: 0,
|
top: 0,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
methods: {
|
||||||
|
hideSelf (e) {
|
||||||
|
if (that.t1) {
|
||||||
|
clearTimeout(that.t1)
|
||||||
|
that.t1 = null
|
||||||
|
}
|
||||||
|
if (that.mouseLeaveDelay) {
|
||||||
|
that.t2 = window.setTimeout(() => {
|
||||||
|
if (e.relatedTarget === that.$el) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
that.visible = false
|
||||||
|
}, +that.mouseLeaveDelay * 1e3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
render (h) {
|
render (h) {
|
||||||
return (
|
return (
|
||||||
<transition name='zoom-big'>
|
<transition name={that.transitionName}>
|
||||||
<div
|
<div
|
||||||
v-show={that.visible}
|
v-show={that.visible}
|
||||||
class={`ant-tooltip ant-tooltip-placement-${that.realPlacement}`}
|
class={`ant-tooltip ant-tooltip-placement-${that.realPlacement}`}
|
||||||
style={{ left: this.left + 'px', top: this.top + 'px' }}
|
style={{ left: this.left + 'px', top: this.top + 'px' }}
|
||||||
|
onMouseleave={this.hideSelf}
|
||||||
>
|
>
|
||||||
<div class='ant-tooltip-content'>
|
<div class='ant-tooltip-content'>
|
||||||
<div class='ant-tooltip-arrow'/>
|
<div class='ant-tooltip-arrow'/>
|
||||||
|
@ -127,29 +146,36 @@ export default {
|
||||||
return old === fn ? old : [old, fn]
|
return old === fn ? old : [old, fn]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computeOffset (popup, text, placement) {
|
computeOffset (popup, text, placement, scale) {
|
||||||
let { width, height, top, left } = text
|
let { width, height, top, left } = text
|
||||||
// you cant change the properties of DOMRect
|
// you cant change the properties of DOMRect
|
||||||
top += window.scrollY
|
top += window.scrollY
|
||||||
left += window.scrollX
|
left += window.scrollX
|
||||||
|
// FIXME: we can get the numbers from scale, but that's not what we really want
|
||||||
|
const p = { width: popup.width / scale, height: popup.height / scale }
|
||||||
const ret = { left, top }
|
const ret = { left, top }
|
||||||
|
|
||||||
if (/top/.test(placement)) ret.top -= popup.height + 5
|
if (/top/.test(placement)) ret.top -= p.height
|
||||||
if (/bottom/.test(placement)) ret.top += height + 5
|
if (/bottom/.test(placement)) ret.top += height
|
||||||
if (/left/.test(placement)) ret.left -= popup.width + 10
|
if (/left/.test(placement)) ret.left -= p.width
|
||||||
if (/right/.test(placement)) ret.left += width + 5
|
if (/right/.test(placement)) ret.left += width
|
||||||
|
|
||||||
|
// FIXME: magic number 20 & 14 comes from the offset of triangle
|
||||||
if (/Left/.test(placement)) {
|
if (/Left/.test(placement)) {
|
||||||
|
if (this.arrowPointAtCenter) ret.left += width / 2 - 20
|
||||||
} else if (/Right/.test(placement)) {
|
} else if (/Right/.test(placement)) {
|
||||||
ret.left += (width - popup.width)
|
ret.left += (width - p.width)
|
||||||
|
if (this.arrowPointAtCenter) ret.left -= width / 2 - 20
|
||||||
} else if (/(top)|(bottom)/.test(placement)) {
|
} else if (/(top)|(bottom)/.test(placement)) {
|
||||||
ret.left += (width - popup.width) / 2
|
ret.left += (width - p.width) / 2
|
||||||
}
|
}
|
||||||
if (/Top/.test(placement)) {
|
if (/Top/.test(placement)) {
|
||||||
|
if (this.arrowPointAtCenter) ret.top += height / 2 - 14
|
||||||
} else if (/Bottom/.test(placement)) {
|
} else if (/Bottom/.test(placement)) {
|
||||||
ret.top += (height - popup.height)
|
ret.top += (height - p.height)
|
||||||
|
if (this.arrowPointAtCenter) ret.top -= height / 2 - 14
|
||||||
} else if (/(left)|(right)/.test(placement)) {
|
} else if (/(left)|(right)/.test(placement)) {
|
||||||
ret.top += (height - popup.height) / 2
|
ret.top += (height - p.height) / 2
|
||||||
}
|
}
|
||||||
return ret
|
return ret
|
||||||
},
|
},
|
||||||
|
@ -158,34 +184,62 @@ export default {
|
||||||
this.visible = true
|
this.visible = true
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
const popup = this.vnode.$el.getBoundingClientRect()
|
const popup = this.vnode.$el.getBoundingClientRect()
|
||||||
|
const [, scale = 1] = window.getComputedStyle(this.vnode.$el).transform.match(/matrix\((.*?),/) || []
|
||||||
const content = this.$el.getBoundingClientRect()
|
const content = this.$el.getBoundingClientRect()
|
||||||
const place = this.checkPosition(popup, content, this.placement)
|
const place = this.autoAdjustOverflow ? this.checkPosition(popup, content, this.placement, scale) : this.placement
|
||||||
this.realPlacement = place
|
this.realPlacement = place
|
||||||
const { left, top } = this.computeOffset(popup, content, place)
|
const { left, top } = this.computeOffset(popup, content, place, scale)
|
||||||
this.vnode.left = left
|
this.vnode.left = left
|
||||||
this.vnode.top = top
|
this.vnode.top = top
|
||||||
})
|
})
|
||||||
this.onPopupAlign(this.realPlacement, this.$el, this.vnode.$el, { offset: [0, 0] })
|
this.onPopupAlign(this.realPlacement, this.$el, this.vnode.$el, { offset: [0, 0] })
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
hideNode () {
|
hideNode (e) {
|
||||||
|
if (!this.vnode) return
|
||||||
|
if (e.relatedTarget === this.vnode.$el) {
|
||||||
|
return
|
||||||
|
}
|
||||||
this.visible = false
|
this.visible = false
|
||||||
},
|
},
|
||||||
|
checkShow (e) {
|
||||||
|
if (this.t2) {
|
||||||
|
clearTimeout(this.t2)
|
||||||
|
this.t2 = null
|
||||||
|
}
|
||||||
|
if (this.mouseEnterDelay) {
|
||||||
|
this.t1 = window.setTimeout(() => {
|
||||||
|
this.showNode(e)
|
||||||
|
}, +this.mouseEnterDelay * 1e3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
checkHide (e) {
|
||||||
|
if (this.t1) {
|
||||||
|
clearTimeout(this.t1)
|
||||||
|
this.t1 = null
|
||||||
|
}
|
||||||
|
if (this.mouseLeaveDelay) {
|
||||||
|
this.t2 = window.setTimeout(() => {
|
||||||
|
this.hideNode(e)
|
||||||
|
}, +this.mouseLeaveDelay * 1e3)
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
render (h) {
|
render (h) {
|
||||||
const inner = this.$slots.default[0]
|
const inner = this.$slots.default[0]
|
||||||
inner.data = inner.data || {}
|
inner.data = inner.data || {}
|
||||||
inner.data.on = inner.data.on || {}
|
inner.data.on = inner.data.on || {}
|
||||||
inner.data.on.mouseenter = this.addEventHandle(inner.data.on.mouseenter, this.showNode)
|
inner.data.on.mouseenter = this.addEventHandle(inner.data.on.mouseenter, this.checkShow)
|
||||||
inner.data.on.mouseleave = this.addEventHandle(inner.data.on.mouseleave, this.hideNode)
|
inner.data.on.mouseleave = this.addEventHandle(inner.data.on.mouseleave, this.checkHide)
|
||||||
|
|
||||||
return this.$slots.default[0]
|
return this.$slots.default[0]
|
||||||
},
|
},
|
||||||
updated () {
|
updated () {
|
||||||
if (!this.vnode) return
|
if (!this.vnode) return
|
||||||
const popup = this.vnode.$el.getBoundingClientRect()
|
const popup = this.vnode.$el.getBoundingClientRect()
|
||||||
|
const [, scale = 1] = window.getComputedStyle(this.vnode.$el).transform.match(/matrix\((.*?),/) || []
|
||||||
const content = this.$el.getBoundingClientRect()
|
const content = this.$el.getBoundingClientRect()
|
||||||
const { left, top } = this.computeOffset(popup, content, this.realPlacement)
|
const { left, top } = this.computeOffset(popup, content, this.realPlacement, scale)
|
||||||
this.vnode.left = left
|
this.vnode.left = left
|
||||||
this.vnode.top = top
|
this.vnode.top = top
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue