feat(wizard): streamline step 3 with inline inputs and list/edit all devices in step 4

This commit is contained in:
DanielS
2026-08-11 23:01:04 +02:00
parent edb5873e33
commit 4598233cf4
3 changed files with 111 additions and 217 deletions

View File

@@ -659,6 +659,24 @@ export function OrderWizard({
setSelections(resetSels)
}
const resetFormForNewDevice = () => {
setEditingIdx(null)
setDeviceName('')
setLicenseNumber('')
setModuleQuantities({})
const resetSels: Record<string, CategorySelection> = {}
categories.forEach(cat => {
const isVisible = selectedBillingInterval === 'one_time' ? cat.show_in_kauf !== false : cat.show_in_abo !== false
if (!isVisible || cat.allow_multiselect || cat.preselect === false) {
resetSels[cat.id] = { productId: null, productIds: [], moduleIds: [] }
} else {
const first = products.find(p => p.category_id === cat.id && (selectedBillingInterval === 'one_time' ? p.show_in_kauf !== false : p.show_in_abo !== false))
resetSels[cat.id] = { productId: first?.id ?? null, productIds: first ? [first.id] : [], moduleIds: [] }
}
})
setSelections(resetSels)
}
const editBasketItem = (idx: number) => {
const item = basketItems[idx]
if (!item) return
@@ -671,6 +689,18 @@ export function OrderWizard({
setSelectedBillingInterval(item.billingInterval)
}
const handleEditFromSummary = (idx: number) => {
editBasketItem(idx)
setDirection(-1)
setStep(3)
}
const handleAddAnotherFromSummary = () => {
resetFormForNewDevice()
setDirection(-1)
setStep(3)
}
const deleteBasketItem = (idx: number) => {
if (editingIdx === idx) {
setEditingIdx(null)
@@ -1097,6 +1127,8 @@ export function OrderWizard({
linkedFeeProducts={linkedFeeProducts}
orderNotes={orderNotes}
setOrderNotes={setOrderNotes}
onEditBasketItem={handleEditFromSummary}
onAddNewBasketItem={handleAddAnotherFromSummary}
/>
</motion.div>
)}