40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
// DOM Elements
|
|
const labelForm = document.getElementById('labelForm');
|
|
const printBtn = document.getElementById('printBtn');
|
|
|
|
// Inputs
|
|
const itemName = document.getElementById('itemName');
|
|
const itemPrice = document.getElementById('itemPrice');
|
|
const itemNotes = document.getElementById('itemNotes');
|
|
|
|
// Preview Elements
|
|
const previewName = document.getElementById('previewName');
|
|
const previewPrice = document.getElementById('previewPrice');
|
|
const previewNotes = document.getElementById('previewNotes');
|
|
|
|
// Live Preview Updater
|
|
const updatePreview = () => {
|
|
previewName.textContent = itemName.value || 'ITEM NAME';
|
|
previewPrice.textContent = itemPrice.value || 'Rp 0';
|
|
previewNotes.textContent = itemNotes.value || 'Notes here';
|
|
};
|
|
|
|
itemName.addEventListener('input', updatePreview);
|
|
itemPrice.addEventListener('input', updatePreview);
|
|
itemNotes.addEventListener('input', updatePreview);
|
|
|
|
// Print Logic (System Print)
|
|
labelForm.addEventListener('submit', (e) => {
|
|
e.preventDefault();
|
|
|
|
// Quick validation
|
|
if (!itemName.value || !itemPrice.value) {
|
|
alert("Please fill name and price.");
|
|
return;
|
|
}
|
|
|
|
// Call the browser's native print dialog
|
|
// The CSS @media print rules will hide everything except the label wrapper
|
|
window.print();
|
|
});
|