Skip to content

Commit 1cad4f9

Browse files
author
unknown
committed
1.0.0-beta1
1 parent 3219b63 commit 1cad4f9

32 files changed

+2543
-633
lines changed

README.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MDB 5 Vue
22

3-
Version: FREE 1.0.0-alpha4
3+
Version: FREE 1.0.0-beta1
44

55
Documentation:
66
https://mdbootstrap.com/docs/b5/vue/

css/mdb.min.css

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

css/mdb.min.css.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.

js/mdb.common.js

Lines changed: 1517 additions & 459 deletions
Large diffs are not rendered by default.

js/mdb.common.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.

js/mdb.umd.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/mdb.umd.min.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.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mdb-vue-ui-kit",
3-
"version": "1.0.0-alpha4",
3+
"version": "1.0.0-beta1",
44
"main": "js/mdb.umd.min.js",
55
"repository": "https://github.com/mdbootstrap/mdb-vue-ui-kit.git",
66
"author": "MDBootstrap",

src/components/free/components/MDBDropdown.vue

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,10 @@ export default {
8686
// controls if DropdownMenu has been mounted into DOM and its element
8787
// can be targeted by the Popper setup function
8888
const isMenuMounted = ref(false);
89-
const setMenuMountedState = boolean => {
89+
const dropdownMenu = ref(null);
90+
const setMenuMountedState = (boolean, menuRef) => {
9091
isMenuMounted.value = boolean;
92+
dropdownMenu.value = menuRef;
9193
};
9294
provide("setMenuMountedState", setMenuMountedState);
9395
@@ -124,6 +126,7 @@ export default {
124126
});
125127
126128
provide("isPopperActive", isPopperActive);
129+
provide("externalTarget", props.target);
127130
128131
// ------------------- handleEscAndOutsideClick -------------------
129132
// mimics toggling modelValue when user click outside the toggle button
@@ -147,7 +150,7 @@ export default {
147150
triggerEl.value = props.target
148151
? document.querySelector(props.target)
149152
: root.value.querySelector("[data-trigger]");
150-
popperEl.value = root.value.querySelector("[data-popper]");
153+
popperEl.value = dropdownMenu.value;
151154
152155
if (typeof props.align === "string") {
153156
menuAlignClasses.value = `dropdown-menu-${props.align}`;
@@ -174,7 +177,9 @@ export default {
174177
modifiers: {
175178
offset: {
176179
offset: props.offset || "0"
177-
}
180+
},
181+
preventOverflow: { enabled: true },
182+
flip: { enabled: true }
178183
}
179184
};
180185

src/components/free/components/MDBDropdownMenu.vue

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<transition>
2+
<transition v-if="!shouldTeleport">
33
<component
44
v-if="isMounted"
55
:is="tag"
@@ -12,10 +12,25 @@
1212
<slot />
1313
</component>
1414
</transition>
15+
<teleport v-else :to="externalTarget">
16+
<transition>
17+
<component
18+
v-if="isMounted"
19+
:is="tag"
20+
:class="className"
21+
:style="staticStyle"
22+
v-bind="attrs"
23+
:data-popper="externalTarget"
24+
ref="root"
25+
>
26+
<slot />
27+
</component>
28+
</transition>
29+
</teleport>
1530
</template>
1631

1732
<script>
18-
import { computed, inject, ref, watch } from "vue";
33+
import { computed, inject, onMounted, ref, watch } from "vue";
1934
import { on, off } from "../../utils/MDBEventHandlers.js";
2035
2136
export default {
@@ -86,8 +101,8 @@ export default {
86101
cur => {
87102
if (cur) {
88103
setTimeout(() => {
89-
setMenuMountedState(true);
90-
}, 10);
104+
setMenuMountedState(true, root.value);
105+
}, 100);
91106
} else if (!cur && isPopperActive) {
92107
setInactive();
93108
@@ -123,6 +138,18 @@ export default {
123138
}
124139
});
125140
141+
const externalTarget = inject("externalTarget", false);
142+
const shouldTeleport = ref(false);
143+
144+
onMounted(() => {
145+
if (externalTarget) {
146+
const target = document.body.querySelector(externalTarget);
147+
if (target) {
148+
shouldTeleport.value = true;
149+
}
150+
}
151+
});
152+
126153
// ------------------- isPopperActive -------------------
127154
// controls if DropdownMenu is visible for user or not
128155
// controls show class and animation
@@ -205,6 +232,8 @@ export default {
205232
showClass,
206233
className,
207234
isMounted,
235+
shouldTeleport,
236+
externalTarget,
208237
root,
209238
attrs,
210239
props

0 commit comments

Comments
 (0)