@browser.style/print-preview
Version:
Print preview component with page layout controls and templates support
99 lines (79 loc) • 2.26 kB
Markdown
# PrintPreview
A web component for print preview and page layout control with template support.
## Installation
```bash
npm install @browser.style/print-preview
```
## Usage
```javascript
import '@browser.style/print-preview';
```
```html
<!-- Basic usage -->
<print-preview>
<div class="content">Content to print</div>
</print-preview>
<!-- With template and settings -->
<print-preview
font-family="ff-humanist"
font-size="medium"
lang="en"
margin-bottom="15"
margin-left="20"
margin-right="20"
margin-top="15"
orientation="portrait"
paper-size="A4"
template="invoice">
</print-preview>
```
## Attributes
- `font-family`: Font family preset (default: 'ff-inherit')
- `font-size`: Font size preset (default: 'medium')
- `images`: Image handling ('show', 'hide', 'outline')
- `lang`: Language code (default: 'en')
- `margin-bottom`: Bottom margin in mm (default: '10mm')
- `margin-left`: Left margin in mm (default: '10mm')
- `margin-right`: Right margin in mm (default: '10mm')
- `margin-top`: Top margin in mm (default: '10mm')
- `orientation`: Page orientation ('portrait', 'landscape')
- `paper-size`: Paper format ('A4', 'A5', 'letter', etc.)
- `template`: Template name for content rendering
## Methods
- `preview()`: Show print preview dialog
- `print()`: Open browser print dialog
- `addTemplate(name, template, settings)`: Add custom template
- `setContent(html)`: Update content directly
## Templates
```javascript
const preview = document.querySelector('print-preview');
// Add custom template
preview.addTemplate('invoice', data => `
<h1>${data.title}</h1>
<table>${data.items.map(item => `
<tr>
<td>${item.name}</td>
<td>${item.price}</td>
</tr>
`).join('')}</table>
`, {
'paper-size': 'A4',
'orientation': 'portrait',
'margin-top': '20',
'font-family': 'ff-humanist'
});
// Use template
preview.data = {
title: 'Invoice #123',
items: [
{ name: 'Item 1', price: '$10' },
{ name: 'Item 2', price: '$20' }
]
};
```
## Events
- `beforetoggle`: Fired before preview dialog opens/closes
- `beforeprint`: Fired before print dialog opens
- `afterprint`: Fired after print dialog closes
## Keyboard Shortcuts
- `Ctrl/Cmd + P`: Open print dialog when preview is open