44 * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
55 */
66import { OverlayMixin } from '@vaadin/overlay/src/vaadin-overlay-mixin.js' ;
7+ import { setOverlayStateAttribute } from '@vaadin/overlay/src/vaadin-overlay-utils.js' ;
78
89/**
910 * @polymerMixin
@@ -43,6 +44,24 @@ export const DialogOverlayMixin = (superClass) =>
4344 ] ;
4445 }
4546
47+ /**
48+ * Override method from OverlayFocusMixin to use owner as content root
49+ * @protected
50+ * @override
51+ */
52+ get _contentRoot ( ) {
53+ return this . owner ;
54+ }
55+
56+ /**
57+ * Override method from OverlayFocusMixin to use owner as modal root
58+ * @protected
59+ * @override
60+ */
61+ get _modalRoot ( ) {
62+ return this . owner ;
63+ }
64+
4665 /** @protected */
4766 ready ( ) {
4867 super . ready ( ) ;
@@ -59,6 +78,22 @@ export const DialogOverlayMixin = (superClass) =>
5978 } ) ;
6079 }
6180
81+ /**
82+ * @protected
83+ * @override
84+ */
85+ _attachOverlay ( ) {
86+ this . showPopover ( ) ;
87+ }
88+
89+ /**
90+ * @protected
91+ * @override
92+ */
93+ _detachOverlay ( ) {
94+ this . hidePopover ( ) ;
95+ }
96+
6297 /** @private */
6398 __createContainer ( slot ) {
6499 const container = document . createElement ( 'div' ) ;
@@ -99,8 +134,8 @@ export const DialogOverlayMixin = (superClass) =>
99134 this . _oldOpenedFooterHeader = opened ;
100135
101136 // Set attributes here to update styles before detecting content overflow
102- this . toggleAttribute ( 'has-header' , ! ! headerRenderer ) ;
103- this . toggleAttribute ( 'has-footer' , ! ! footerRenderer ) ;
137+ setOverlayStateAttribute ( this , 'has-header' , ! ! headerRenderer ) ;
138+ setOverlayStateAttribute ( this , 'has-footer' , ! ! footerRenderer ) ;
104139
105140 if ( headerRendererChanged ) {
106141 if ( headerRenderer ) {
@@ -134,7 +169,7 @@ export const DialogOverlayMixin = (superClass) =>
134169
135170 /** @private */
136171 _headerTitleChanged ( headerTitle , opened ) {
137- this . toggleAttribute ( 'has-title' , ! ! headerTitle ) ;
172+ setOverlayStateAttribute ( this , 'has-title' , ! ! headerTitle ) ;
138173
139174 if ( opened && ( headerTitle || this . _oldHeaderTitle ) ) {
140175 this . requestContentUpdate ( ) ;
@@ -150,7 +185,7 @@ export const DialogOverlayMixin = (superClass) =>
150185 this . headerTitleElement . setAttribute ( 'slot' , 'title' ) ;
151186 this . headerTitleElement . classList . add ( 'draggable' ) ;
152187 }
153- this . appendChild ( this . headerTitleElement ) ;
188+ this . owner . appendChild ( this . headerTitleElement ) ;
154189 this . headerTitleElement . textContent = this . headerTitle ;
155190 } else if ( this . headerTitleElement ) {
156191 this . headerTitleElement . remove ( ) ;
@@ -167,7 +202,7 @@ export const DialogOverlayMixin = (superClass) =>
167202 if ( this . headerContainer ) {
168203 // If a new renderer has been set, make sure to reattach the container
169204 if ( ! this . headerContainer . parentElement ) {
170- this . appendChild ( this . headerContainer ) ;
205+ this . owner . appendChild ( this . headerContainer ) ;
171206 }
172207
173208 if ( this . headerRenderer ) {
@@ -179,7 +214,7 @@ export const DialogOverlayMixin = (superClass) =>
179214 if ( this . footerContainer ) {
180215 // If a new renderer has been set, make sure to reattach the container
181216 if ( ! this . footerContainer . parentElement ) {
182- this . appendChild ( this . footerContainer ) ;
217+ this . owner . appendChild ( this . footerContainer ) ;
183218 }
184219
185220 if ( this . footerRenderer ) {
@@ -227,9 +262,9 @@ export const DialogOverlayMixin = (superClass) =>
227262
228263 const value = overflow . trim ( ) ;
229264 if ( value . length > 0 && this . getAttribute ( 'overflow' ) !== value ) {
230- this . setAttribute ( 'overflow' , value ) ;
265+ setOverlayStateAttribute ( this , 'overflow' , value ) ;
231266 } else if ( value . length === 0 && this . hasAttribute ( 'overflow' ) ) {
232- this . removeAttribute ( 'overflow' ) ;
267+ setOverlayStateAttribute ( this , 'overflow' , null ) ;
233268 }
234269 }
235270 } ;
0 commit comments