|
8 | 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
9 | 9 | -->
|
10 | 10 |
|
11 |
| -<link rel="import" href="../bower_components/polymer/polymer.html"> |
| 11 | +<link rel="import" href="../bower_components/polymer/polymer-element.html"> |
12 | 12 | <link rel="import" href="../bower_components/app-layout/app-drawer/app-drawer.html">
|
13 | 13 | <link rel="import" href="../bower_components/app-layout/app-drawer-layout/app-drawer-layout.html">
|
14 | 14 | <link rel="import" href="../bower_components/app-layout/app-header/app-header.html">
|
|
22 | 22 | <link rel="import" href="../bower_components/paper-icon-button/paper-icon-button.html">
|
23 | 23 | <link rel="import" href="my-icons.html">
|
24 | 24 |
|
| 25 | +<link rel="lazy-import" href="my-view1.html"> |
| 26 | +<link rel="lazy-import" href="my-view2.html"> |
| 27 | +<link rel="lazy-import" href="my-view3.html"> |
| 28 | +<link rel="lazy-import" href="my-view404.html"> |
| 29 | + |
25 | 30 | <dom-module id="my-app">
|
26 | 31 | <template>
|
27 | 32 | <style>
|
|
32 | 37 | display: block;
|
33 | 38 | }
|
34 | 39 |
|
| 40 | + app-drawer-layout:not([narrow]) [drawer-toggle] { |
| 41 | + display: none; |
| 42 | + } |
| 43 | + |
35 | 44 | app-header {
|
36 | 45 | color: #fff;
|
37 | 46 | background-color: var(--app-primary-color);
|
38 | 47 | }
|
| 48 | + |
39 | 49 | app-header paper-icon-button {
|
40 | 50 | --paper-icon-button-ink-color: white;
|
41 | 51 | }
|
|
67 | 77 |
|
68 | 78 | <app-drawer-layout fullbleed narrow="{{narrow}}">
|
69 | 79 | <!-- Drawer content -->
|
70 |
| - <app-drawer id="drawer" swipe-open="[[narrow]]"> |
| 80 | + <app-drawer id="drawer" slot="drawer" swipe-open="[[narrow]]"> |
71 | 81 | <app-toolbar>Menu</app-toolbar>
|
72 | 82 | <iron-selector selected="[[page]]" attr-for-selected="name" class="drawer-list" role="navigation">
|
73 | 83 | <a name="view1" href="[[rootPath]]view1">View One</a>
|
|
79 | 89 | <!-- Main content -->
|
80 | 90 | <app-header-layout has-scrolling-region>
|
81 | 91 |
|
82 |
| - <app-header condenses reveals effects="waterfall"> |
| 92 | + <app-header slot="header" condenses reveals effects="waterfall"> |
83 | 93 | <app-toolbar>
|
84 | 94 | <paper-icon-button icon="my-icons:menu" drawer-toggle></paper-icon-button>
|
85 | 95 | <div main-title>My App</div>
|
|
101 | 111 | </template>
|
102 | 112 |
|
103 | 113 | <script>
|
104 |
| - Polymer({ |
105 |
| - is: 'my-app', |
106 |
| - |
107 |
| - properties: { |
108 |
| - page: { |
109 |
| - type: String, |
110 |
| - reflectToAttribute: true, |
111 |
| - observer: '_pageChanged', |
112 |
| - }, |
113 |
| - }, |
114 |
| - |
115 |
| - observers: [ |
116 |
| - '_routePageChanged(routeData.page)', |
117 |
| - ], |
118 |
| - |
119 |
| - _routePageChanged: function(page) { |
| 114 | + class MyApp extends Polymer.Element { |
| 115 | + static get is() { return 'my-app'; } |
| 116 | + |
| 117 | + static get properties() { |
| 118 | + return { |
| 119 | + page: { |
| 120 | + type: String, |
| 121 | + reflectToAttribute: true, |
| 122 | + observer: '_pageChanged', |
| 123 | + }, |
| 124 | + routeData: Object, |
| 125 | + subroute: String, |
| 126 | + // This shouldn't be neccessary, but the Analyzer isn't picking up |
| 127 | + // Polymer.Element#rootPath |
| 128 | + rootPath: String, |
| 129 | + }; |
| 130 | + } |
| 131 | + |
| 132 | + static get observers() { |
| 133 | + return [ |
| 134 | + '_routePageChanged(routeData.page)', |
| 135 | + ]; |
| 136 | + } |
| 137 | + |
| 138 | + _routePageChanged(page) { |
| 139 | + // If no page was found in the route data, page will be an empty string. |
| 140 | + // Deault to 'view1' in that case. |
120 | 141 | this.page = page || 'view1';
|
121 | 142 |
|
| 143 | + // Close a non-persistent drawer when the page & route are changed. |
122 | 144 | if (!this.$.drawer.persistent) {
|
123 | 145 | this.$.drawer.close();
|
124 | 146 | }
|
125 |
| - }, |
| 147 | + } |
126 | 148 |
|
127 |
| - _pageChanged: function(page) { |
| 149 | + _pageChanged(page) { |
128 | 150 | // Load page import on demand. Show 404 page if fails
|
129 | 151 | var resolvedPageUrl = this.resolveUrl('my-' + page + '.html');
|
130 |
| - this.importHref(resolvedPageUrl, null, this._showPage404, true); |
131 |
| - }, |
| 152 | + Polymer.importHref( |
| 153 | + resolvedPageUrl, |
| 154 | + null, |
| 155 | + this._showPage404.bind(this), |
| 156 | + true); |
| 157 | + } |
132 | 158 |
|
133 |
| - _showPage404: function() { |
| 159 | + _showPage404() { |
134 | 160 | this.page = 'view404';
|
135 |
| - }, |
136 |
| - }); |
| 161 | + } |
| 162 | + } |
| 163 | + |
| 164 | + window.customElements.define(MyApp.is, MyApp); |
137 | 165 | </script>
|
138 | 166 | </dom-module>
|
0 commit comments