@@ -12,7 +12,10 @@ import { FocusTrapController } from '@vaadin/a11y-base/src/focus-trap-controller
12
12
import { ControllerMixin } from '@vaadin/component-base/src/controller-mixin.js' ;
13
13
import { defineCustomElement } from '@vaadin/component-base/src/define.js' ;
14
14
import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js' ;
15
- import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js' ;
15
+ import { registerStyles , ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js' ;
16
+ import { appLayoutStyles } from './vaadin-app-layout-styles.js' ;
17
+
18
+ registerStyles ( 'vaadin-app-layout' , appLayoutStyles , { moduleId : 'vaadin-app-layout-styles' } ) ;
16
19
17
20
/**
18
21
* @typedef {import('./vaadin-app-layout.js').AppLayoutI18n } AppLayoutI18n
@@ -114,165 +117,6 @@ import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mix
114
117
class AppLayout extends ElementMixin ( ThemableMixin ( ControllerMixin ( PolymerElement ) ) ) {
115
118
static get template ( ) {
116
119
return html `
117
- < style >
118
- : host {
119
- dis play: block;
120
- box- sizing: bor der- box;
121
- height: 100%;
122
- - - vaadin- app- layout- transition: 200ms;
123
- transition: padding var(--vaadin-app-layout-transition );
124
- - - _vaadin- app- layout- drawer- width: var(- - vaadin- app- layout- drawer- width, 16em);
125
- - - vaadin- app- layout- to uch- optimized: false;
126
- - - vaadin- app- layout- navbar- offset- to p: var(- - _vaadin- app- layout- navbar- offset- size);
127
- - - vaadin- app- layout- navbar- offset- botto m: var(- - _vaadin- app- layout- navbar- offset- size-botto m);
128
- padding- block: var(- - vaadin- app- layout- navbar- offset- to p) var(- - vaadin- app- layout- navbar- offset- botto m);
129
- padding- inline-start: var(- - vaadin- app- layout- navbar- offset- left);
130
- }
131
-
132
- : host ([hidden ]),
133
- [hidden ] {
134
- display : none !important ;
135
- }
136
-
137
- : host ([no-anim ]) {
138
- --vaadin-app-layout-transition : none !important ;
139
- }
140
-
141
- : host ([drawer-opened ]) {
142
- --vaadin-app-layout-drawer-offset-left : var (--_vaadin-app-layout-drawer-offset-size );
143
- }
144
-
145
- : host ([overlay ]) {
146
- --vaadin-app-layout-drawer-offset-left : 0 ;
147
- --vaadin-app-layout-navbar-offset-left : 0 ;
148
- }
149
-
150
- : host (: not ([no-scroll ])) [content ] {
151
- overflow : auto;
152
- }
153
-
154
- [content ] {
155
- height : 100% ;
156
- }
157
-
158
- @media (pointer : coarse) and (max-width : 800px ) and (min-height : 500px ) {
159
- : host {
160
- --vaadin-app-layout-touch-optimized : true;
161
- }
162
- }
163
-
164
- [part = 'navbar' ] {
165
- position : fixed;
166
- display : flex;
167
- align-items : center;
168
- top : 0 ;
169
- inset-inline : 0 ;
170
- transition : inset-inline-start var (--vaadin-app-layout-transition );
171
- padding-top : var (--safe-area-inset-top );
172
- padding-left : var (--safe-area-inset-left );
173
- padding-right : var (--safe-area-inset-right );
174
- z-index : 1 ;
175
- }
176
-
177
- : host ([primary-section = 'drawer' ][drawer-opened ]: not ([overlay ])) [part = 'navbar' ] {
178
- inset-inline-start : var (--vaadin-app-layout-drawer-offset-left , 0 );
179
- }
180
-
181
- : host ([primary-section = 'drawer' ]) [part = 'drawer' ] {
182
- top : 0 ;
183
- }
184
-
185
- [part = 'navbar' ][bottom ] {
186
- top : auto;
187
- bottom : 0 ;
188
- padding-bottom : var (--safe-area-inset-bottom );
189
- }
190
-
191
- [part = 'drawer' ] {
192
- overflow : auto;
193
- position : fixed;
194
- top : var (--vaadin-app-layout-navbar-offset-top , 0 );
195
- bottom : var (--vaadin-app-layout-navbar-offset-bottom , var (--vaadin-viewport-offset-bottom , 0 ));
196
- inset-inline : var (--vaadin-app-layout-navbar-offset-left , 0 ) auto;
197
- transition :
198
- transform var (--vaadin-app-layout-transition ),
199
- visibility var (--vaadin-app-layout-transition );
200
- transform : translateX (-100% );
201
- max-width : 90% ;
202
- width : var (--_vaadin-app-layout-drawer-width );
203
- box-sizing : border-box;
204
- padding : var (--safe-area-inset-top ) 0 var (--safe-area-inset-bottom ) var (--safe-area-inset-left );
205
- outline : none;
206
- /* The drawer should be inaccessible by the tabbing navigation when it is closed. */
207
- visibility : hidden;
208
- display : flex;
209
- flex-direction : column;
210
- }
211
-
212
- : host ([drawer-opened ]) [part = 'drawer' ] {
213
- /* The drawer should be accessible by the tabbing navigation when it is opened. */
214
- visibility : visible;
215
- transform : translateX (0% );
216
- touch-action : manipulation;
217
- }
218
-
219
- [part = 'backdrop' ] {
220
- background-color : # 000 ;
221
- opacity : 0.3 ;
222
- }
223
-
224
- : host (: not ([drawer-opened ])) [part = 'backdrop' ] {
225
- opacity : 0 ;
226
- }
227
-
228
- : host ([overlay ]) [part = 'backdrop' ] {
229
- position : fixed;
230
- inset : 0 ;
231
- pointer-events : none;
232
- transition : opacity var (--vaadin-app-layout-transition );
233
- -webkit-tap-highlight-color : transparent;
234
- }
235
-
236
- : host ([overlay ]) [part = 'drawer' ] {
237
- top : 0 ;
238
- bottom : 0 ;
239
- }
240
-
241
- : host ([overlay ]) [part = 'drawer' ],
242
- : host ([overlay ]) [part= 'backdrop' ] {
243
- z-index : 2 ;
244
- }
245
-
246
- : host ([drawer-opened ][overlay ]) [part = 'backdrop' ] {
247
- pointer-events : auto;
248
- touch-action : manipulation;
249
- }
250
-
251
- : host ([dir = 'rtl' ]) [part = 'drawer' ] {
252
- transform : translateX (100% );
253
- }
254
-
255
- : host ([dir = 'rtl' ][drawer-opened ]) [part = 'drawer' ] {
256
- transform : translateX (0% );
257
- }
258
-
259
- : host ([drawer-opened ]: not ([overlay ])) {
260
- padding-inline-start : var (--vaadin-app-layout-drawer-offset-left );
261
- }
262
-
263
- @media (max-width : 800px ), (max-height : 600px ) {
264
- : host {
265
- --vaadin-app-layout-drawer-overlay : true;
266
- --_vaadin-app-layout-drawer-width : var (--vaadin-app-layout-drawer-width , 20em );
267
- }
268
- }
269
-
270
- /* If a vaadin-scroller is used in the drawer, allow it to take all remaining space and contain scrolling */
271
- [part = 'drawer' ] ::slotted (vaadin-scroller ) {
272
- flex : 1 ;
273
- overscroll-behavior : contain;
274
- }
275
- </ style >
276
120
< div part ="navbar " id ="navbarTop ">
277
121
< slot name ="navbar " on-slotchange ="_updateTouchOptimizedMode "> </ slot >
278
122
</ div >
0 commit comments