@browser.style/print-preview
Version:
Print preview component with page layout controls and templates support
152 lines (143 loc) • 3.22 kB
CSS
@media screen {
:host {
--_gap: 2rem;
background-color: #999;
border: 0;
height: 100dvh;
inset: 0;
padding: 0;
width: 100vw;
}
paper-sheet,
::slotted(paper-sheet) {
aspect-ratio: calc(1 / var(--page-ratio));
background-color: #FFF;
box-shadow: 0 0 10px rgba(0,0,0,.1);
box-sizing: border-box;
color: #000;
display: block;
font-size: var(--page-root-size, 1rem);
font-family: var(--page-font, inherit);
margin-block-end: var(--_gap);
margin-inline: auto;
padding: var(--page-margin-top) var(--page-margin-right) var(--page-margin-bottom) var(--page-margin-left);
max-width: var(--page-width, auto);
width: 100%;
}
paper-tray {
box-sizing: border-box;
display: block;
padding-block-end: var(--_gap);
padding-inline: var(--_gap);
}
:host > form {
align-items: center;
background-color: #121212;
color: #E1E1E1;
color-scheme: light dark;
display: flex;
flex-wrap: wrap;
font-family: system-ui;
font-size: 14px;
gap: 1ch;
margin-block-end: var(--_gap);
padding: 1ch;
position: sticky;
top: 0;
button {
background: #262626;
border: 0;
border-radius: 4px;
color: inherit;
display: grid;
font-size: inherit;
padding: 0;
place-content: center;
&[data-action="close"] {
margin-inline-start: auto;
}
svg {
scale: 1.25;
}
}
fieldset {
all: unset;
label { border: 0; }
}
fieldset, label {
align-items: center;
background: #262626;
border-radius: 4px;
display: flex;
padding-inline: .5ch;
}
input, select {
appearance: none;
background: #0000;
border: 0;
border-radius: inherit;
color: inherit;
font-family: inherit;
font-size: inherit;
}
input[type=number] { -moz-appearance:textfield; }
input::-webkit-inner-spin-button,
input::-webkit-outer-spin-button {
appearance: none;
}
svg {
fill: none;
height: 1.5em;
padding: 0.125em;
pointer-events: none;
stroke: currentColor;
stroke-width: 1.25;
width: 1.5em;
}
/* focus */
button:focus-visible, label:focus-within {
&, input, select { outline: none; }
background: #304850;
}
}
}
@media print {
:host([mode="hidden"]) {
display: none ;
}
:host {
border: 0;
margin: 0;
max-width: none;
padding: 0;
width: 100%;
form {
display: none;
}
}
:host, paper-tray {
display: block ;
height: auto ;
overflow: visible ;
position: static ;
}
paper-sheet,
::slotted(paper-sheet) {
background: #0000;
box-shadow: none;
break-after: page;
color: #000;
display: block ;
font-size: var(--page-root-size, 1rem);
font-family: var(--page-font, inherit);
margin: 0;
overflow: visible ;
page: sheet;
page-break-after: always;
position: relative;
}
paper-sheet:last-child,
::slotted(paper-sheet:last-child) {
break-after: avoid;
}
}