Vertrag-Zugangsdaten: Externtab-Links neben Stressfrei-Select
Rechts neben dem Stressfrei-Adressen-Dropdown sitzen jetzt zwei kleine Icon-Links (nur bei gewähltem Kunden sichtbar): - ExternalLink → öffnet den Stressfrei-Tab des Kunden im neuen Tab (dort kann man die Adressen anlegen/pflegen) - Mail → öffnet den E-Mail-Postfach-Tab des Kunden im neuen Tab Damit muss man beim Vertragserstellen nicht mehr die Seite wechseln, um schnell eine Stressfrei-Adresse anzulegen oder ins Postfach zu springen. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -15,7 +15,7 @@ import { buildContractLabelParts } from '../../utils/contractLabel';
|
||||
import type { ContractType } from '../../types';
|
||||
import { formatDate } from '../../utils/dateFormat';
|
||||
import { useProviderSettings } from '../../hooks/useProviderSettings';
|
||||
import { Plus, Trash2, Eye, EyeOff, Info, X, ArrowLeft, ExternalLink } from 'lucide-react';
|
||||
import { Plus, Trash2, Eye, EyeOff, Info, X, ArrowLeft, ExternalLink, Mail } from 'lucide-react';
|
||||
|
||||
// Kleine Helper-Komponente: Label + Mini-Link im neuen Tab. Wird neben
|
||||
// Select-Feldern eingesetzt, deren Stammdaten an anderer Stelle gepflegt
|
||||
@@ -1116,15 +1116,43 @@ export default function ContractForm() {
|
||||
<span className="text-sm">{customerEmailLabel} Adresse</span>
|
||||
</label>
|
||||
{usernameType === 'stressfrei' && (
|
||||
<Select
|
||||
value={selectedStressfreiEmailId}
|
||||
onChange={(e) => setSelectedStressfreiEmailId(e.target.value)}
|
||||
options={stressfreiEmails.map((e: { id: number; email: string; notes?: string }) => ({
|
||||
value: e.id,
|
||||
label: e.email + (e.notes ? ` (${e.notes})` : ''),
|
||||
}))}
|
||||
placeholder={stressfreiEmails.length === 0 ? 'Keine Stressfrei-Adressen vorhanden' : 'Adresse auswählen...'}
|
||||
/>
|
||||
<div className="flex items-start gap-2">
|
||||
<div className="flex-1 min-w-0">
|
||||
<Select
|
||||
value={selectedStressfreiEmailId}
|
||||
onChange={(e) => setSelectedStressfreiEmailId(e.target.value)}
|
||||
options={stressfreiEmails.map((e: { id: number; email: string; notes?: string }) => ({
|
||||
value: e.id,
|
||||
label: e.email + (e.notes ? ` (${e.notes})` : ''),
|
||||
}))}
|
||||
placeholder={stressfreiEmails.length === 0 ? 'Keine Stressfrei-Adressen vorhanden' : 'Adresse auswählen...'}
|
||||
/>
|
||||
</div>
|
||||
{customerId && (
|
||||
<div className="flex items-center gap-1 pt-1.5 flex-shrink-0">
|
||||
<a
|
||||
href={`/customers/${customerId}?tab=stressfrei`}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
title={`${customerEmailLabel} Adressen des Kunden in neuem Tab öffnen`}
|
||||
aria-label={`${customerEmailLabel} Adressen des Kunden in neuem Tab öffnen`}
|
||||
className="text-gray-400 hover:text-blue-600 p-1 rounded"
|
||||
>
|
||||
<ExternalLink className="w-4 h-4" />
|
||||
</a>
|
||||
<a
|
||||
href={`/customers/${customerId}?tab=emails`}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
title="E-Mail-Postfach des Kunden in neuem Tab öffnen"
|
||||
aria-label="E-Mail-Postfach des Kunden in neuem Tab öffnen"
|
||||
className="text-gray-400 hover:text-blue-600 p-1 rounded"
|
||||
>
|
||||
<Mail className="w-4 h-4" />
|
||||
</a>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
{usernameType === 'stressfrei' && stressfreiEmails.length === 0 && (
|
||||
<p className="text-xs text-amber-600">
|
||||
|
||||
Reference in New Issue
Block a user