toggleCustomer(customer.id)}
- className="p-5 flex items-center justify-between cursor-pointer hover:bg-white/[0.02] transition-colors select-none gap-4 flex-wrap"
+ onKeyDown={(e) => {
+ if (e.key === 'Enter' || e.key === ' ') {
+ e.preventDefault()
+ toggleCustomer(customer.id)
+ }
+ }}
+ tabIndex={0}
+ role="button"
+ aria-expanded={isOpen}
+ className="p-5 flex items-center justify-between cursor-pointer hover:bg-white/[0.02] transition-colors select-none gap-4 flex-wrap focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-inset"
>
@@ -324,28 +334,38 @@ export function CustomerAccordionList({ customers }: CustomerAccordionListProps)
{/* Ausgeklappter Bereich mit Kassen */}
- {isOpen && (
-
- {devices.length === 0 ? (
-
- Keine Kassen oder Bestellungen für diesen Kunden vorhanden.
+
+ {isOpen && (
+
+
+ {devices.length === 0 ? (
+
+ Keine Kassen oder Bestellungen für diesen Kunden vorhanden.
+
+ ) : (
+
+
+ Zugeordnete Kassen ({devices.length})
+
+ {devices.map((device, idx) => (
+
+ ))}
+
+ )}
- ) : (
-
-
- Zugeordnete Kassen ({devices.length})
-
- {devices.map((device, idx) => (
-
- ))}
-
- )}
-
- )}
+
+ )}
+
)
})}
diff --git a/shop/components/order-wizard.tsx b/shop/components/order-wizard.tsx
index faaa20d..367f68b 100644
--- a/shop/components/order-wizard.tsx
+++ b/shop/components/order-wizard.tsx
@@ -1085,6 +1085,7 @@ export function OrderWizard({
billingBadgeClass={billingBadgeClass}
existingModuleIds={existingModuleIds}
activeCategoryId={activeCategoryId}
+ editingDeviceName={editingIdx !== null ? (basketItems[editingIdx]?.deviceName || `Kasse ${editingIdx + 1}`) : null}
/>
diff --git a/shop/components/wizard/step-software.tsx b/shop/components/wizard/step-software.tsx
index ea63193..08febab 100644
--- a/shop/components/wizard/step-software.tsx
+++ b/shop/components/wizard/step-software.tsx
@@ -29,6 +29,7 @@ interface StepSoftwareProps {
/** Modul-IDs, die bereits lizenziert sind (Upgrade-Modus) */
existingModuleIds?: string[]
activeCategoryId: string | null
+ editingDeviceName?: string | null
}
export function CategoryIcon({ icon, className }: { icon?: string | null; className?: string }) {
@@ -52,6 +53,7 @@ export function StepSoftware({
billingBadgeClass,
existingModuleIds = [],
activeCategoryId,
+ editingDeviceName = null,
}: StepSoftwareProps) {
const currentCategory = visibleCategories.find(c => c.id === activeCategoryId) ?? visibleCategories[0] ?? null
@@ -69,15 +71,22 @@ export function StepSoftware({
return (
-
-
- Optionen wählen
+
+
+
+ Optionen wählen
+
+ {editingDeviceName && (
+
+ ✏️ Bearbeite Kasse: "{editingDeviceName}"
+
+ )}
Passen Sie die Konfiguration für {currentCategory.name} an.
-
+
diff --git a/shop/components/wizard/step-summary.tsx b/shop/components/wizard/step-summary.tsx
index 11a40ee..ca27f77 100644
--- a/shop/components/wizard/step-summary.tsx
+++ b/shop/components/wizard/step-summary.tsx
@@ -70,6 +70,8 @@ export function StepSummary({
onAddNewBasketItem,
onDeleteBasketItem,
}: StepSummaryProps) {
+ const [confirmDeleteIdx, setConfirmDeleteIdx] = React.useState(null)
+
return (
{/* LINKER BEREICH: Scrollbares Bedienfeld */}
@@ -211,16 +213,26 @@ export function StepSummary({
{onDeleteBasketItem && (
)}
diff --git a/shop/components/wizard/summary-sidebar.tsx b/shop/components/wizard/summary-sidebar.tsx
index 420346a..4ddae47 100644
--- a/shop/components/wizard/summary-sidebar.tsx
+++ b/shop/components/wizard/summary-sidebar.tsx
@@ -283,7 +283,11 @@ export function SummarySidebar({
onClick={nextStep}
disabled={isNextStepDisabled && basketItems.length === 0}
>
- Weiter zu Schritt 4
+ {editingIdx !== null ? (
+ <>Änderungen für "{basketItems[editingIdx]?.deviceName || `Kasse ${editingIdx + 1}`}" übernehmen>
+ ) : (
+ <>Weiter zu Schritt 4 >
+ )}