Skip to content

Commit 52ddf45

Browse files
Merge pull request #129 from vue-final/bugfix/do-not-close-modal-when-select-text
fix: #111
2 parents c848a8a + 836deb0 commit 52ddf45

File tree

6 files changed

+29
-10
lines changed

6 files changed

+29
-10
lines changed

dist/VueFinalModal.esm.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/VueFinalModal.esm.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/VueFinalModal.umd.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/VueFinalModal.umd.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/VueFinalModal.vue

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,15 @@
4040
role="dialog"
4141
aria-modal="true"
4242
tabindex="-1"
43-
@click.self="onClickContainer"
43+
@mouseup.self="onMouseupContainer"
44+
@mousedown.self="onMousedown"
4445
>
4546
<div
4647
ref="vfmContent"
4748
class="vfm__content"
4849
:class="[contentClass, { 'vfm--prevent-auto': preventClick }]"
4950
:style="bindContentStyle"
51+
@mousedown="onMousedown(null)"
5052
>
5153
<slot :params="params" :close="() => $emit('input', false)" />
5254
<div
@@ -178,7 +180,8 @@ export default {
178180
dragResizeStyle: {},
179181
resolveToggle: noop,
180182
rejectToggle: noop,
181-
state: null
183+
state: null,
184+
lastMousedownEl: null
182185
}),
183186
computed: {
184187
api() {
@@ -430,7 +433,12 @@ export default {
430433
if (stopEvent) return
431434
this.params = {}
432435
},
433-
onClickContainer() {
436+
onMousedown(e) {
437+
this.lastMousedownEl = e?.target
438+
},
439+
onMouseupContainer() {
440+
// skip when the lastMousedownEl didn't equal $refs.vfmContainer
441+
if (this.lastMousedownEl !== this.$refs.vfmContainer) return
434442
// skip when state equal 'resize:move'
435443
if (this.state === 'resize:move') return
436444
this.$emit('click-outside', this.createModalEvent({ type: 'click-outside' }))

tests/unit/VueFinalModal.spec.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,16 @@ describe('VueFinalModal.vue', () => {
2323
})
2424
it('clickToClose: true', async () => {
2525
const { wrapper } = await createOpenedModal()
26-
wrapper.find('.vfm__container').trigger('click')
26+
wrapper.find('.vfm__container').trigger('mousedown')
27+
wrapper.find('.vfm__content').trigger('mouseup')
28+
await afterTransition()
29+
expect(wrapper.find('.vfm').isVisible()).toBe(true)
30+
wrapper.find('.vfm__content').trigger('mousedown')
31+
wrapper.find('.vfm__container').trigger('mouseup')
32+
await afterTransition()
33+
expect(wrapper.find('.vfm').isVisible()).toBe(true)
34+
wrapper.find('.vfm__container').trigger('mousedown')
35+
wrapper.find('.vfm__container').trigger('mouseup')
2736
await afterTransition()
2837
expect(wrapper.find('.vfm').isVisible()).toBe(false)
2938
})
@@ -129,7 +138,8 @@ describe('VueFinalModal.vue', () => {
129138
const { wrapper } = await createOpenedModal({
130139
clickToClose: false
131140
})
132-
wrapper.find('.vfm__container').trigger('click')
141+
wrapper.find('.vfm__container').trigger('mousedown')
142+
wrapper.find('.vfm__container').trigger('mouseup')
133143
await afterTransition()
134144
expect(wrapper.find('.vfm').isVisible()).toBe(true)
135145
})
@@ -429,7 +439,8 @@ describe('VueFinalModal.vue', () => {
429439
}
430440
}
431441
)
432-
wrapper.find('.vfm__container').trigger('click')
442+
wrapper.find('.vfm__container').trigger('mousedown')
443+
wrapper.find('.vfm__container').trigger('mouseup')
433444
await afterTransition()
434445
expect(clickOutside).toHaveBeenCalled()
435446
expect(beforeOpen).toHaveBeenCalled()

0 commit comments

Comments
 (0)