diff --git a/rollup.config.js b/rollup.config.js
index 37b7e4ec1..11e325c34 100644
--- a/rollup.config.js
+++ b/rollup.config.js
@@ -14,6 +14,7 @@ let coreDependencies = {
'primevue/api': 'primevue.api',
'primevue/config': 'primevue.config',
'primevue/ripple': 'primevue.ripple',
+ 'primevue/portal': 'primevue.portal',
'primevue/tooltip': 'primevue.tooltip',
'primevue/virtualscroller': 'primevue.virtualscroller',
'primevue/confirmationeventbus': 'primevue.confirmationeventbus',
diff --git a/src/components/autocomplete/AutoComplete.vue b/src/components/autocomplete/AutoComplete.vue
index 8b14976cb..d8a2c6201 100755
--- a/src/components/autocomplete/AutoComplete.vue
+++ b/src/components/autocomplete/AutoComplete.vue
@@ -16,7 +16,7 @@
-
+
@@ -47,7 +47,7 @@
-
+
@@ -57,6 +57,7 @@ import OverlayEventBus from 'primevue/overlayeventbus';
import Button from 'primevue/button';
import Ripple from 'primevue/ripple';
import VirtualScroller from 'primevue/virtualscroller';
+import Portal from 'primevue/portal';
export default {
name: 'AutoComplete',
@@ -208,7 +209,7 @@ export default {
},
alignOverlay() {
let target = this.multiple ? this.$refs.multiContainer : this.$refs.input;
- if (this.appendDisabled) {
+ if (this.appendTo === 'self') {
DomHandler.relativePosition(this.overlay, target);
}
else {
@@ -613,19 +614,14 @@ export default {
listId() {
return UniqueComponentId() + '_list';
},
- appendDisabled() {
- return this.appendTo === 'self';
- },
- appendTarget() {
- return this.appendDisabled ? null : this.appendTo;
- },
virtualScrollerDisabled() {
return !this.virtualScrollerOptions;
}
},
components: {
'Button': Button,
- 'VirtualScroller': VirtualScroller
+ 'VirtualScroller': VirtualScroller,
+ 'Portal': Portal
},
directives: {
'ripple': Ripple
diff --git a/src/components/calendar/Calendar.vue b/src/components/calendar/Calendar.vue
index da7037aea..22c78045e 100755
--- a/src/components/calendar/Calendar.vue
+++ b/src/components/calendar/Calendar.vue
@@ -3,7 +3,7 @@
-
+
@@ -137,7 +137,7 @@
-
+
@@ -146,6 +146,7 @@ import {ConnectedOverlayScrollHandler,DomHandler,ZIndexUtils,UniqueComponentId}
import OverlayEventBus from 'primevue/overlayeventbus';
import Button from 'primevue/button';
import Ripple from 'primevue/ripple';
+import Portal from 'primevue/portal';
export default {
name: 'Calendar',
@@ -793,7 +794,7 @@ export default {
this.enableModality();
}
else if (this.overlay) {
- if (this.appendDisabled) {
+ if (this.appendTo === 'self' || this.inline) {
DomHandler.relativePosition(this.overlay, this.$el);
}
else {
@@ -1706,7 +1707,7 @@ export default {
}
date = this.daylightSavingAdjust(new Date(year, month - 1, day));
-
+
if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {
throw "Invalid date"; // E.g. 31/02/00
}
@@ -2494,12 +2495,6 @@ export default {
monthNames() {
return this.$primevue.config.locale.monthNames;
},
- appendDisabled() {
- return this.appendTo === 'self' || this.inline;
- },
- appendTarget() {
- return this.appendDisabled ? null : this.appendTo;
- },
attributeSelector() {
return UniqueComponentId();
},
@@ -2508,7 +2503,8 @@ export default {
}
},
components: {
- 'CalendarButton': Button
+ 'CalendarButton': Button,
+ 'Portal': Portal
},
directives: {
'ripple': Ripple
diff --git a/src/components/cascadeselect/CascadeSelect.vue b/src/components/cascadeselect/CascadeSelect.vue
index 5e4e32cd3..44f385c1d 100644
--- a/src/components/cascadeselect/CascadeSelect.vue
+++ b/src/components/cascadeselect/CascadeSelect.vue
@@ -14,7 +14,7 @@
-
+
-
+
@@ -33,6 +33,7 @@
import {ConnectedOverlayScrollHandler,ObjectUtils,DomHandler,ZIndexUtils} from 'primevue/utils';
import OverlayEventBus from 'primevue/overlayeventbus';
import CascadeSelectSub from './CascadeSelectSub.vue';
+import Portal from 'primevue/portal';
export default {
name: 'CascadeSelect',
@@ -199,7 +200,7 @@ export default {
ZIndexUtils.clear(el);
},
alignOverlay() {
- if (this.appendDisabled) {
+ if (this.appendTo === 'self') {
DomHandler.relativePosition(this.overlay, this.$el);
}
else {
@@ -323,18 +324,13 @@ export default {
'p-ripple-disabled': this.$primevue.config.ripple === false
}];
},
- appendDisabled() {
- return this.appendTo === 'self';
- },
- appendTarget() {
- return this.appendDisabled ? null : this.appendTo;
- },
dropdownIconClass() {
return ['p-cascadeselect-trigger-icon', this.loading ? this.loadingIcon : 'pi pi-chevron-down'];
}
},
components: {
- 'CascadeSelectSub': CascadeSelectSub
+ 'CascadeSelectSub': CascadeSelectSub,
+ 'Portal': Portal
}
}
diff --git a/src/components/colorpicker/ColorPicker.vue b/src/components/colorpicker/ColorPicker.vue
index 9f0cea5df..30fd47dff 100755
--- a/src/components/colorpicker/ColorPicker.vue
+++ b/src/components/colorpicker/ColorPicker.vue
@@ -2,7 +2,7 @@
diff --git a/src/components/confirmpopup/ConfirmPopup.vue b/src/components/confirmpopup/ConfirmPopup.vue
index 18f872690..8cd4feb5d 100644
--- a/src/components/confirmpopup/ConfirmPopup.vue
+++ b/src/components/confirmpopup/ConfirmPopup.vue
@@ -1,5 +1,5 @@
-
+
@@ -15,7 +15,7 @@
-
+
diff --git a/src/components/contextmenu/ContextMenu.vue b/src/components/contextmenu/ContextMenu.vue
index 26da5f3a8..acd1f118e 100755
--- a/src/components/contextmenu/ContextMenu.vue
+++ b/src/components/contextmenu/ContextMenu.vue
@@ -1,16 +1,17 @@
-
+
-
+
diff --git a/src/components/datatable/ColumnFilter.vue b/src/components/datatable/ColumnFilter.vue
index 6312f6dcb..59003cf36 100644
--- a/src/components/datatable/ColumnFilter.vue
+++ b/src/components/datatable/ColumnFilter.vue
@@ -7,7 +7,7 @@
:class="{'p-column-filter-menu-button-open': overlayVisible, 'p-column-filter-menu-button-active': hasFilter()}"
@click="toggleMenu()" @keydown="onToggleButtonKeyDown($event)">
-
+
@@ -49,7 +49,7 @@
-
+
@@ -59,6 +59,7 @@ import OverlayEventBus from 'primevue/overlayeventbus';
import {FilterOperator} from 'primevue/api';
import Dropdown from 'primevue/dropdown';
import Button from 'primevue/button';
+import Portal from 'primevue/portal';
export default {
name: 'ColumnFilter',
@@ -514,7 +515,8 @@ export default {
},
components: {
'CFDropdown': Dropdown,
- 'CFButton': Button
+ 'CFButton': Button,
+ 'Portal': Portal
}
}
diff --git a/src/components/dialog/Dialog.vue b/src/components/dialog/Dialog.vue
index e0503179e..2d1f6c885 100755
--- a/src/components/dialog/Dialog.vue
+++ b/src/components/dialog/Dialog.vue
@@ -1,5 +1,5 @@
-
+
-
+
diff --git a/src/components/dropdown/Dropdown.vue b/src/components/dropdown/Dropdown.vue
index 14dce166e..d6fe0d4e3 100755
--- a/src/components/dropdown/Dropdown.vue
+++ b/src/components/dropdown/Dropdown.vue
@@ -15,7 +15,7 @@
-
+
@@ -62,7 +62,7 @@
-
+
@@ -72,6 +72,7 @@ import OverlayEventBus from 'primevue/overlayeventbus';
import {FilterService} from 'primevue/api';
import Ripple from 'primevue/ripple';
import VirtualScroller from 'primevue/virtualscroller';
+import Portal from 'primevue/portal';
export default {
name: 'Dropdown',
@@ -471,7 +472,7 @@ export default {
ZIndexUtils.clear(el);
},
alignOverlay() {
- if (this.appendDisabled) {
+ if (this.appendTo === 'self') {
DomHandler.relativePosition(this.overlay, this.$el);
}
else {
@@ -720,15 +721,9 @@ export default {
emptyMessageText() {
return this.emptyMessage || this.$primevue.config.locale.emptyMessage;
},
- appendDisabled() {
- return this.appendTo === 'self';
- },
virtualScrollerDisabled() {
return !this.virtualScrollerOptions;
},
- appendTarget() {
- return this.appendDisabled ? null : this.appendTo;
- },
dropdownIconClass() {
return ['p-dropdown-trigger-icon', this.loading ? this.loadingIcon : 'pi pi-chevron-down'];
}
@@ -737,7 +732,8 @@ export default {
'ripple': Ripple
},
components: {
- 'VirtualScroller': VirtualScroller
+ 'VirtualScroller': VirtualScroller,
+ 'Portal': Portal
}
}
diff --git a/src/components/galleria/Galleria.vue b/src/components/galleria/Galleria.vue
index 7774b00b7..cf320b8be 100755
--- a/src/components/galleria/Galleria.vue
+++ b/src/components/galleria/Galleria.vue
@@ -1,17 +1,18 @@
-
+
-
+
diff --git a/src/components/image/Image.vue b/src/components/image/Image.vue
index 8aee56b0f..53f97ecb3 100644
--- a/src/components/image/Image.vue
+++ b/src/components/image/Image.vue
@@ -6,7 +6,7 @@
-
+
-
+
diff --git a/src/components/menu/Menu.vue b/src/components/menu/Menu.vue
index 26431fb8c..59a5e70d3 100755
--- a/src/components/menu/Menu.vue
+++ b/src/components/menu/Menu.vue
@@ -1,5 +1,5 @@
-
+
-
+
diff --git a/src/components/multiselect/MultiSelect.vue b/src/components/multiselect/MultiSelect.vue
index d08929cb6..a44dee862 100755
--- a/src/components/multiselect/MultiSelect.vue
+++ b/src/components/multiselect/MultiSelect.vue
@@ -27,7 +27,7 @@
-
+
@@ -99,7 +99,7 @@
-
+
@@ -109,6 +109,7 @@ import OverlayEventBus from 'primevue/overlayeventbus';
import {FilterService} from 'primevue/api';
import Ripple from 'primevue/ripple';
import VirtualScroller from 'primevue/virtualscroller';
+import Portal from 'primevue/portal';
export default {
name: 'MultiSelect',
@@ -451,7 +452,7 @@ export default {
ZIndexUtils.clear(el);
},
alignOverlay() {
- if (this.appendDisabled) {
+ if (this.appendTo === 'self') {
DomHandler.relativePosition(this.overlay, this.$el);
}
else {
@@ -722,12 +723,6 @@ export default {
emptyMessageText() {
return this.emptyMessage || this.$primevue.config.locale.emptyMessage;
},
- appendDisabled() {
- return this.appendTo === 'self';
- },
- appendTarget() {
- return this.appendDisabled ? null : this.appendTo;
- },
virtualScrollerDisabled() {
return !this.virtualScrollerOptions;
},
@@ -742,7 +737,8 @@ export default {
'ripple': Ripple
},
components: {
- 'VirtualScroller': VirtualScroller
+ 'VirtualScroller': VirtualScroller,
+ 'Portal': Portal
}
}
diff --git a/src/components/overlaypanel/OverlayPanel.vue b/src/components/overlaypanel/OverlayPanel.vue
index f84899501..459c1ed08 100755
--- a/src/components/overlaypanel/OverlayPanel.vue
+++ b/src/components/overlaypanel/OverlayPanel.vue
@@ -1,5 +1,5 @@
-
+
@@ -10,13 +10,14 @@
-
+
diff --git a/src/components/password/Password.vue b/src/components/password/Password.vue
index e146a7d71..4b309c035 100755
--- a/src/components/password/Password.vue
+++ b/src/components/password/Password.vue
@@ -2,7 +2,7 @@
-
+
@@ -15,7 +15,7 @@
-
+
@@ -23,6 +23,7 @@
import {ConnectedOverlayScrollHandler,DomHandler,ZIndexUtils} from 'primevue/utils';
import OverlayEventBus from 'primevue/overlayeventbus';
import InputText from 'primevue/inputtext';
+import Portal from 'primevue/portal';
export default {
name: 'Password',
@@ -127,7 +128,7 @@ export default {
ZIndexUtils.clear(el);
},
alignOverlay() {
- if (this.appendDisabled) {
+ if (this.appendTo === 'self') {
DomHandler.relativePosition(this.overlay, this.$refs.input.$el);
}
else {
@@ -294,16 +295,11 @@ export default {
},
promptText() {
return this.promptLabel || this.$primevue.config.locale.passwordPrompt;
- },
- appendDisabled() {
- return this.appendTo === 'self';
- },
- appendTarget() {
- return this.appendDisabled ? null : this.appendTo;
}
},
components: {
- 'PInputText': InputText
+ 'PInputText': InputText,
+ 'Portal': Portal
}
}
diff --git a/src/components/portal/Portal.vue b/src/components/portal/Portal.vue
new file mode 100644
index 000000000..395bbd571
--- /dev/null
+++ b/src/components/portal/Portal.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/portal/package.json b/src/components/portal/package.json
new file mode 100644
index 000000000..cccf68768
--- /dev/null
+++ b/src/components/portal/package.json
@@ -0,0 +1,8 @@
+{
+ "main": "./portal.cjs.js",
+ "module": "./portal.esm.js",
+ "unpkg": "./portal.min.js",
+ "browser": {
+ "./sfc": "./Portal.vue"
+ }
+}
diff --git a/src/components/sidebar/Sidebar.vue b/src/components/sidebar/Sidebar.vue
index 59cb2f692..3412e489f 100755
--- a/src/components/sidebar/Sidebar.vue
+++ b/src/components/sidebar/Sidebar.vue
@@ -1,5 +1,5 @@
-
+
-
+
diff --git a/src/components/tieredmenu/TieredMenu.vue b/src/components/tieredmenu/TieredMenu.vue
index 73d25b606..ffe9957af 100755
--- a/src/components/tieredmenu/TieredMenu.vue
+++ b/src/components/tieredmenu/TieredMenu.vue
@@ -1,16 +1,17 @@
-
+
-
+
diff --git a/src/components/toast/Toast.vue b/src/components/toast/Toast.vue
index 6452591b1..dd4ae63eb 100755
--- a/src/components/toast/Toast.vue
+++ b/src/components/toast/Toast.vue
@@ -1,17 +1,18 @@
-
+
-
+