Skip to content

Commit 2098a4a

Browse files
author
hastom
committed
Added util to polyfill Node.contains
1 parent 30cbae0 commit 2098a4a

File tree

3 files changed

+41
-11
lines changed

3 files changed

+41
-11
lines changed

src/components/MdMenu/MdMenuContent.vue

+3-11
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import MdPopover from 'components/MdPopover/MdPopover'
2323
import MdFocusTrap from 'components/MdFocusTrap/MdFocusTrap'
2424
import MdList from 'components/MdList/MdList'
25+
import MdContains from 'core/utils/MdContains'
2526
2627
export default new MdComponent({
2728
name: 'MdMenuContent',
@@ -193,19 +194,10 @@
193194
return Boolean(alignTrigger || offsetY || offsetX)
194195
},
195196
isMenu ({ target }) {
196-
return this.MdMenu.$el ? this.MdMenu.$el.contains(target) : false
197+
return this.MdMenu.$el ? MdContains(this.MdMenu.$el, target) : false
197198
},
198199
isMenuContentEl ({ target }) {
199-
return this.$refs.menu ? this.$refs.menu.contains(target) : false
200-
},
201-
isBackdropExpectMenu ($event) {
202-
const contains = (el, target) => {
203-
if ('contains' in el) {
204-
return el.contains(target)
205-
}
206-
return el.compareDocumentPosition(target) & 16
207-
}
208-
return !contains(this.$el, $event.target) && !this.isMenu($event)
200+
return this.$refs.menu ? MdContains(this.$refs.menu, target) : false
209201
},
210202
createClickEventObserver () {
211203
if (document) {

src/core/utils/MdContains.js

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export default (parent, child) => {
2+
if (typeof Node.prototype.contains === 'function') {
3+
return Node.prototype.contains.call(parent, child)
4+
} else {
5+
return (Node.prototype.compareDocumentPosition.call(child, parent) & Node.prototype.DOCUMENT_POSITION_CONTAINS) !== 0
6+
}
7+
}

yarn.lock

+31
Original file line numberDiff line numberDiff line change
@@ -4425,6 +4425,11 @@ form-data@~2.3.2:
44254425
combined-stream "^1.0.6"
44264426
mime-types "^2.1.12"
44274427

4428+
format-thousands@^1.1.1:
4429+
version "1.1.1"
4430+
resolved "https://registry.yarnpkg.com/format-thousands/-/format-thousands-1.1.1.tgz#7975bee30338d9006390da5831db0b41c323fbfa"
4431+
integrity sha1-eXW+4wM42QBjkNpYMdsLQcMj+/o=
4432+
44284433
forwarded@~0.1.2:
44294434
version "0.1.2"
44304435
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
@@ -7300,6 +7305,11 @@ node-fetch@1.6.3:
73007305
encoding "^0.1.11"
73017306
is-stream "^1.0.1"
73027307

7308+
node-fetch@^2.3.0:
7309+
version "2.6.0"
7310+
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
7311+
integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
7312+
73037313
node-gyp@^3.8.0:
73047314
version "3.8.0"
73057315
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c"
@@ -10294,6 +10304,11 @@ tslib@^1.9.0:
1029410304
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
1029510305
integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
1029610306

10307+
tslib@^1.9.3:
10308+
version "1.11.2"
10309+
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.2.tgz#9c79d83272c9a7aaf166f73915c9667ecdde3cc9"
10310+
integrity sha512-tTSkux6IGPnUGUd1XAZHcpu85MOkIl5zX49pO+jfsie3eP0B6pyhOlLXm3cAC6T7s+euSDDUUV+Acop5WmtkVg==
10311+
1029710312
tty-browserify@0.0.0:
1029810313
version "0.0.0"
1029910314
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
@@ -10646,6 +10661,15 @@ vue-ga@^1.1.0:
1064610661
resolved "https://registry.yarnpkg.com/vue-ga/-/vue-ga-1.1.0.tgz#366fea37afb953b5b115e56feb1005cc6bd1e20e"
1064710662
integrity sha512-cnwIW75CwsqGZP62dFZt7e4/k9vhKsos3pJBBKkREXJ4bk2ePVgJiOeynhjvAtvyRzEmfsASfYMwzt0Dra/cng==
1064810663

10664+
vue-github-buttons@^3.1.0:
10665+
version "3.1.0"
10666+
resolved "https://registry.yarnpkg.com/vue-github-buttons/-/vue-github-buttons-3.1.0.tgz#eaea2ba0b7e0df5a7fd1c61ba37dabf7553dd79a"
10667+
integrity sha512-x0b9bdhP5xZOD5kQ9+nnCzvKqVyHb4moqN2l06mjYB/k2WRdW5jiAWlneUgoPFwPvcqM40vrTDXVvBrS0MMlEQ==
10668+
dependencies:
10669+
format-thousands "^1.1.1"
10670+
node-fetch "^2.3.0"
10671+
tslib "^1.9.3"
10672+
1064910673
vue-hot-reload-api@^2.2.0:
1065010674
version "2.3.3"
1065110675
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf"
@@ -10701,6 +10725,13 @@ vue-template-es2015-compiler@^1.5.3, vue-template-es2015-compiler@^1.6.0:
1070110725
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
1070210726
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
1070310727

10728+
vue-toc@0.0.1:
10729+
version "0.0.1"
10730+
resolved "https://registry.yarnpkg.com/vue-toc/-/vue-toc-0.0.1.tgz#6a4dfa9c144445679705cd7b991a1a73ac080cc0"
10731+
integrity sha512-RZfVgLzk/kpEmk05ptvU/+x3TVo4Ai4BBARvV4iCurR9bJsAqnnrqwjEBKnEG+s6NT0yQ6EY0JMGViyOUGysDw==
10732+
dependencies:
10733+
vue "^2.6.10"
10734+
1070410735
vue@^2.6.10:
1070510736
version "2.6.10"
1070610737
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.10.tgz#a72b1a42a4d82a721ea438d1b6bf55e66195c637"

0 commit comments

Comments
 (0)