Skip to content

Commit

Permalink
fix(popper): fix popper's mechanism (element-plus#177)
Browse files Browse the repository at this point in the history
- Rewrite popper's render method \
  • Loading branch information
jw-foss authored Aug 23, 2020
1 parent 24f2a83 commit 44d7cc2
Show file tree
Hide file tree
Showing 5 changed files with 194 additions and 112 deletions.
13 changes: 4 additions & 9 deletions packages/popper/__tests__/popper.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,16 +80,11 @@ describe('Popper.vue', () => {
})

test('append to body', () => {
const { appendChild } = document.body
document.body.appendChild = jest.fn(child => {
return appendChild.call(document.body, child)
})

let wrapper = _mount()
expect(wrapper.find('[role="tooltip"]').exists()).toBe(false)
expect(document.body.appendChild).toHaveBeenCalled()

document.body.appendChild = appendChild
const selector = '[role="tooltip"]'
expect(wrapper.find(selector).exists()).toBe(false)
// Due to the parent node of popper is Transition so we should match the grandparent
expect(document.querySelector(selector).parentElement.parentElement).toBe(document.body)
wrapper = _mount({
appendToBody: false,
})
Expand Down
21 changes: 17 additions & 4 deletions packages/popper/doc/basic.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
<template>
<div>
<div>referrer</div>
<el-popper :placement="placement" :disabled="disabled">
<div class="popper-container">
<el-popper
:placement="placement"
:disabled="disabled"
effect="light"
>
<template #default>content</template>
<template #trigger>
<el-button v-if="showButton" @click="disabled = !disabled">
Expand All @@ -21,6 +24,7 @@

<script lang="ts">
import { ref } from 'vue'
import { getRandomInt } from '@element-plus/utils/util'
const placements = ['top','top-start','top-end','bottom','bottom-start','bottom-end','left','left-start','left-end','right','right-start', 'right-end']
export default {
Expand All @@ -32,10 +36,19 @@ export default {
referrer: ref(null),
placement,
toggle: () => {
const random = Math.floor(Math.random() * 13)
const random = getRandomInt(12) // range [0, 11]
placement.value = placements[random]
},
}
},
}
</script>

<style scoped>
.popper-container {
width: 100%;
height: 100%;
padding: 150px;
}
</style>
Loading

0 comments on commit 44d7cc2

Please sign in to comment.