Skip to content

Commit 44d7cc2

Browse files
authored
fix(popper): fix popper's mechanism (element-plus#177)
- Rewrite popper's render method \
1 parent 24f2a83 commit 44d7cc2

File tree

5 files changed

+194
-112
lines changed

5 files changed

+194
-112
lines changed

packages/popper/__tests__/popper.spec.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,11 @@ describe('Popper.vue', () => {
8080
})
8181

8282
test('append to body', () => {
83-
const { appendChild } = document.body
84-
document.body.appendChild = jest.fn(child => {
85-
return appendChild.call(document.body, child)
86-
})
87-
8883
let wrapper = _mount()
89-
expect(wrapper.find('[role="tooltip"]').exists()).toBe(false)
90-
expect(document.body.appendChild).toHaveBeenCalled()
91-
92-
document.body.appendChild = appendChild
84+
const selector = '[role="tooltip"]'
85+
expect(wrapper.find(selector).exists()).toBe(false)
86+
// Due to the parent node of popper is Transition so we should match the grandparent
87+
expect(document.querySelector(selector).parentElement.parentElement).toBe(document.body)
9388
wrapper = _mount({
9489
appendToBody: false,
9590
})

packages/popper/doc/basic.vue

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
<template>
2-
<div>
3-
<div>referrer</div>
4-
<el-popper :placement="placement" :disabled="disabled">
2+
<div class="popper-container">
3+
<el-popper
4+
:placement="placement"
5+
:disabled="disabled"
6+
effect="light"
7+
>
58
<template #default>content</template>
69
<template #trigger>
710
<el-button v-if="showButton" @click="disabled = !disabled">
@@ -21,6 +24,7 @@
2124

2225
<script lang="ts">
2326
import { ref } from 'vue'
27+
import { getRandomInt } from '@element-plus/utils/util'
2428
2529
const placements = ['top','top-start','top-end','bottom','bottom-start','bottom-end','left','left-start','left-end','right','right-start', 'right-end']
2630
export default {
@@ -32,10 +36,19 @@ export default {
3236
referrer: ref(null),
3337
placement,
3438
toggle: () => {
35-
const random = Math.floor(Math.random() * 13)
39+
const random = getRandomInt(12) // range [0, 11]
3640
placement.value = placements[random]
3741
},
3842
}
3943
},
4044
}
4145
</script>
46+
47+
<style scoped>
48+
.popper-container {
49+
width: 100%;
50+
height: 100%;
51+
padding: 150px;
52+
}
53+
54+
</style>

0 commit comments

Comments
 (0)