import { api } from '../../lib/api.mjs';
const VEHICLE_TYPES = ['Bucket Truck', 'Van', 'Pickup Truck', 'Trailer', 'Digger Derrick', 'Other'];
class VehicleForm extends HTMLElement {
#onSave = null;
connectedCallback() {
if (!this.shadowRoot) {
this.attachShadow({ mode: 'open' });
this.shadowRoot.innerHTML = ``;
}
}
open(vehicle, onSave) {
this.#onSave = onSave;
const isEdit = !!vehicle;
const d = this.shadowRoot.querySelector('dialog');
d.innerHTML = `
`;
if (window.lucide) lucide.createIcons({ root: d });
d.querySelector('#dlg-close').addEventListener('click', () => d.close());
d.querySelector('#dlg-cancel').addEventListener('click', () => d.close());
d.querySelector('#dlg-save').addEventListener('click', async () => {
const unit = d.querySelector('#v-unit').value.trim();
const errEl = d.querySelector('#form-error');
if (!unit) { errEl.textContent = 'Unit number is required'; d.querySelector('#v-unit').focus(); return; }
errEl.textContent = '';
const saveBtn = d.querySelector('#dlg-save');
saveBtn.disabled = true;
saveBtn.textContent = 'Saving…';
const payload = {
unit_number: unit,
description: d.querySelector('#v-desc').value.trim(),
vehicle_type: d.querySelector('#v-type').value,
active: isEdit ? d.querySelector('#v-active').checked : true,
};
try {
if (isEdit) await api.put(`/registry/vehicles/${vehicle.id}`, payload);
else await api.post('/registry/vehicles', payload);
d.close();
window.dispatchEvent(new CustomEvent('wo:toast', { detail: { message: isEdit ? 'Vehicle updated' : 'Vehicle added', type: 'success' } }));
this.#onSave?.();
} catch (err) {
errEl.textContent = err.message;
saveBtn.disabled = false;
saveBtn.textContent = isEdit ? 'Save Changes' : 'Add Vehicle';
}
});
d.showModal();
d.querySelector('#v-unit').focus();
}
#esc(s) { return (s || '').replace(/&/g,'&').replace(//g,'>'); }
}
customElements.define('vehicle-form', VehicleForm);