feat(wizard): streamline step 3 with inline inputs and list/edit all devices in step 4
This commit is contained in:
@@ -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>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user