Skip to content

Commit 57f71ce

Browse files
committed
Finalize href updating implementation
1 parent dadbb60 commit 57f71ce

File tree

5 files changed

+19
-21
lines changed

5 files changed

+19
-21
lines changed

lib/resources/docs.dart.js

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/resources/docs.dart.js.map

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

web/docs.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55
import 'highlight.dart' as highlight;
66
import 'search.dart' as search;
7-
import 'sidenav.dart' as sidenav;
7+
import 'sidebars.dart' as sidebars;
88
import 'theme.dart' as theme;
99

1010
void main() {
11-
sidenav.init();
11+
sidebars.init();
1212
search.init();
1313
highlight.init();
1414
theme.init();

web/sidenav.dart renamed to web/sidebars.dart

+10-12
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'dart:js_interop';
66

77
import 'package:web/web.dart';
88

9-
/// Initialize the sidenav contents and event handlers.
9+
/// Initialize the sidebar contents and sidenav toggle handlers.
1010
void init() {
1111
_initializeContents();
1212
_initializeToggles();
@@ -83,33 +83,31 @@ void _loadSidebar(
8383
}
8484

8585
final responseText = (await fetchResponse.text().toDart).toDart;
86-
final contentTemplate = (document.createElement('template')
87-
as HTMLTemplateElement)
86+
final sidebarContent = (document.createElement('div') as HTMLElement)
8887
..innerHTML = responseText;
8988

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);
9391
});
9492
}
9593

9694
/// Recurses down a DOM tree to adjust the links in a newly loaded sidebar
9795
/// if "base href" is not being used.
9896
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?) {
102101
final href = Uri.parse(hrefString);
103102
if (!href.isAbsolute) {
104-
node.setAttribute('href', '$baseHref$hrefString');
103+
element.href = '$baseHref$hrefString';
105104
}
106105
}
107106
}
108107

109108
final children = node.childNodes;
110109
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?) {
113111
_updateLinks(baseHref, child);
114112
}
115113
}

web/sig.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
68DA325F7C5F137B378B0ADB747A95F6
1+
7FBEA75FB2180CC99E318718E1E4C9AB

0 commit comments

Comments
 (0)