@@ -6,7 +6,7 @@ import 'dart:js_interop';
6
6
7
7
import 'package:web/web.dart' ;
8
8
9
- /// Initialize the sidenav contents and event handlers.
9
+ /// Initialize the sidebar contents and sidenav toggle handlers.
10
10
void init () {
11
11
_initializeContents ();
12
12
_initializeToggles ();
@@ -83,33 +83,31 @@ void _loadSidebar(
83
83
}
84
84
85
85
final responseText = (await fetchResponse.text ().toDart).toDart;
86
- final contentTemplate = (document.createElement ('template' )
87
- as HTMLTemplateElement )
86
+ final sidebarContent = (document.createElement ('div' ) as HTMLElement )
88
87
..innerHTML = responseText;
89
88
90
- // TODO(parlough): This isn't working yet.
91
- _updateLinks (baseHref, contentTemplate);
92
- sidebarElement.appendChild (contentTemplate.content.cloneNode (true ));
89
+ _updateLinks (baseHref, sidebarContent);
90
+ sidebarElement.appendChild (sidebarContent);
93
91
});
94
92
}
95
93
96
94
/// Recurses down a DOM tree to adjust the links in a newly loaded sidebar
97
95
/// if "base href" is not being used.
98
96
void _updateLinks (String baseHref, Node node) {
99
- if (node is Element && node.nodeName.toLowerCase () == 'a' ) {
100
- final hrefString = node.getAttribute ('href' );
101
- if (hrefString != null ) {
97
+ // TODO(parlough): Once SDK constraint is >= 3.4, use isA extension.
98
+ if (node.nodeName.toLowerCase () == 'a' ) {
99
+ final element = node as HTMLAnchorElement ;
100
+ if (element.getAttribute ('href' ) case final hrefString? ) {
102
101
final href = Uri .parse (hrefString);
103
102
if (! href.isAbsolute) {
104
- node. setAttribute ( ' href' , '$baseHref $hrefString ' ) ;
103
+ element. href = '$baseHref $hrefString ' ;
105
104
}
106
105
}
107
106
}
108
107
109
108
final children = node.childNodes;
110
109
for (var childIndex = 0 ; childIndex < children.length; childIndex += 1 ) {
111
- final child = children.item (childIndex);
112
- if (child != null ) {
110
+ if (children.item (childIndex) case final child? ) {
113
111
_updateLinks (baseHref, child);
114
112
}
115
113
}
0 commit comments