Skip to content

Commit 47eacb0

Browse files
support a separate print stylesheet
1 parent 03981a8 commit 47eacb0

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

css/elements.css

-6
Original file line numberDiff line numberDiff line change
@@ -1368,12 +1368,6 @@ li.menu-search-result-term:before {
13681368
padding-right: 5px;
13691369
}
13701370

1371-
@media print {
1372-
#menu-toggle {
1373-
display: none;
1374-
}
1375-
}
1376-
13771371
[normative-optional],
13781372
[deprecated],
13791373
[legacy] {

css/print.css

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#menu-toggle {
2+
display: none;
3+
}

src/Spec.ts

+11-1
Original file line numberDiff line numberDiff line change
@@ -1035,6 +1035,7 @@ ${await utils.readFile(path.join(__dirname, '../js/multipage.js'))}
10351035
}
10361036

10371037
let cssContents = await utils.readFile(path.join(__dirname, '../css/elements.css'));
1038+
let printCssContents = await utils.readFile(path.join(__dirname, '../css/print.css'));
10381039

10391040
const FONT_FILE_CONTENTS = new Map(
10401041
zip(
@@ -1072,9 +1073,11 @@ ${await utils.readFile(path.join(__dirname, '../js/multipage.js'))}
10721073

10731074
const scriptLocationOnDisk = path.join(this.assets.directory, 'ecmarkup.js');
10741075
const styleLocationOnDisk = path.join(this.assets.directory, 'ecmarkup.css');
1076+
const printStyleLocationOnDisk = path.join(this.assets.directory, 'print.css');
10751077

10761078
this.generatedFiles.set(scriptLocationOnDisk, jsContents);
10771079
this.generatedFiles.set(styleLocationOnDisk, cssContents);
1080+
this.generatedFiles.set(printStyleLocationOnDisk, printCssContents);
10781081
for (const [, fontFile] of FONT_FILES) {
10791082
this.generatedFiles.set(
10801083
path.join(this.assets.directory, fontFile),
@@ -1087,6 +1090,7 @@ ${await utils.readFile(path.join(__dirname, '../js/multipage.js'))}
10871090
script.setAttribute('defer', '');
10881091
this.doc.head.appendChild(script);
10891092

1093+
this.addStyle(this.doc.head, path.relative(outDir, printStyleLocationOnDisk), true);
10901094
this.addStyle(this.doc.head, path.relative(outDir, styleLocationOnDisk));
10911095
} else {
10921096
// i.e. assets.type === 'inline'
@@ -1099,6 +1103,9 @@ ${await utils.readFile(path.join(__dirname, '../js/multipage.js'))}
10991103
const style = this.doc.createElement('style');
11001104
style.textContent = cssContents;
11011105
this.doc.head.appendChild(style);
1106+
const printStyle = this.doc.createElement('style');
1107+
printStyle.textContent = `@media print {\n${printCssContents}\n}`;
1108+
this.doc.head.appendChild(printStyle);
11021109
}
11031110
this.addStyle(
11041111
this.doc.head,
@@ -1108,10 +1115,13 @@ ${await utils.readFile(path.join(__dirname, '../js/multipage.js'))}
11081115
);
11091116
}
11101117

1111-
private addStyle(head: HTMLHeadElement, href: string) {
1118+
private addStyle(head: HTMLHeadElement, href: string, print: boolean = false) {
11121119
const style = this.doc.createElement('link');
11131120
style.setAttribute('rel', 'stylesheet');
11141121
style.setAttribute('href', href);
1122+
if (print) {
1123+
style.setAttribute('media', 'print');
1124+
}
11151125

11161126
// insert early so that the document's own stylesheets can override
11171127
const firstLink = head.querySelector('link[rel=stylesheet], style');

0 commit comments

Comments
 (0)