TimePicker
Die TimePicker-Komponente ermöglicht es Benutzern, eine Uhrzeit auszuwählen oder direkt einzugeben.
Import
import { TimePicker } from '@smolitux/core';
Verwendung
Einfacher TimePicker
<TimePicker />
TimePicker mit Standardwert
<TimePicker defaultValue="14:30" />
TimePicker mit Label
<TimePicker
label="Startzeit"
placeholder="Zeit auswählen"
/>
TimePicker mit Hilfetext
<TimePicker
label="Besprechungszeit"
helperText="Bitte wählen Sie eine Zeit während der Geschäftszeiten"
placeholder="Zeit auswählen"
/>
TimePicker mit Fehlermeldung
<TimePicker
label="Lieferzeit"
error="Die gewählte Zeit liegt außerhalb unserer Lieferzeiten"
placeholder="Zeit auswählen"
/>
TimePicker mit verschiedenen Formaten
<TimePicker
label="24-Stunden-Format"
format="24h"
defaultValue="14:30"
className="mb-4"
/>
<TimePicker
label="12-Stunden-Format"
format="12h"
defaultValue="02:30 PM"
/>
TimePicker mit/ohne Sekunden
<TimePicker
label="Mit Sekunden"
hideSeconds={false}
defaultValue="14:30:00"
className="mb-4"
/>
<TimePicker
label="Ohne Sekunden"
hideSeconds={true}
defaultValue="14:30"
/>
TimePicker mit Zeitintervallen
<TimePicker
label="15-Minuten-Intervall"
minuteStep={15}
defaultValue="14:30"
className="mb-4"
/>
<TimePicker
label="30-Minuten-Intervall"
minuteStep={30}
defaultValue="14:30"
className="mb-4"
/>
<TimePicker
label="15-Sekunden-Intervall"
secondStep={15}
hideSeconds={false}
defaultValue="14:30:00"
/>
TimePicker mit Min/Max-Zeit
<TimePicker
label="Geschäftszeiten"
minTime="09:00"
maxTime="17:00"
placeholder="Zeit auswählen"
/>
TimePicker mit verschiedenen Größen
<TimePicker
label="Klein"
size="sm"
defaultValue="14:30"
className="mb-4"
/>
<TimePicker
label="Mittel"
size="md"
defaultValue="14:30"
className="mb-4"
/>
<TimePicker
label="Groß"
size="lg"
defaultValue="14:30"
/>
TimePicker mit Icon
<TimePicker
label="Mit Icon"
leftIcon={<ClockIcon className="w-5 h-5 text-gray-400" />}
defaultValue="14:30"
/>
TimePicker mit voller Breite
<TimePicker
label="Volle Breite"
fullWidth
defaultValue="14:30"
/>
Kontrollierter TimePicker
function ControlledTimePickerExample() {
const [time, setTime] = useState({ hours: 14, minutes: 30 });
const handleTimeChange = (newTime) => {
setTime(newTime);
};
return (
<div>
<TimePicker
label="Kontrollierter TimePicker"
value={time}
onChange={handleTimeChange}
/>
<p className="mt-2">
Ausgewählte Zeit: {time.hours}:{time.minutes.toString().padStart(2, '0')}
{time.period ? ` ${time.period}` : ''}
</p>
</div>
);
}
TimePicker mit Validierung
function ValidatedTimePickerExample() {
const [time, setTime] = useState(null);
const [error, setError] = useState('');
const handleTimeChange = (newTime) => {
setTime(newTime);
// Geschäftszeiten: 9:00 - 17:00
const businessStart = { hours: 9, minutes: 0 };
const businessEnd = { hours: 17, minutes: 0 };
if (!newTime) {
setError('Bitte wählen Sie eine Zeit aus');
} else if (
newTime.hours < businessStart.hours ||
(newTime.hours === businessStart.hours && newTime.minutes < businessStart.minutes) ||
newTime.hours > businessEnd.hours ||
(newTime.hours === businessEnd.hours && newTime.minutes > businessEnd.minutes)
) {
setError('Die Zeit muss zwischen 9:00 und 17:00 Uhr liegen');
} else {
setError('');
}
};
return (
<TimePicker
label="Validierter TimePicker"
value={time}
onChange={handleTimeChange}
error={error}
placeholder="Geschäftszeit wählen"
/>
);
}
Props
Prop | Typ | Standard | Beschreibung |
---|---|---|---|
value | TimeValue | string | - | Ausgewählte Zeit |
defaultValue | TimeValue | string | - | Standard-Ausgewählte Zeit |
onChange | (time: TimeValue) => void | - | Callback bei Auswahl einer Zeit |
label | string | - | Text-Label |
helperText | string | - | Hilfetext |
error | string | - | Fehlermeldung |
format | '12h' | '24h' | '24h' | Format der Zeit |
hideSeconds | boolean | true | Nur Stunden und Minuten anzeigen, keine Sekunden |
placeholder | string | 'Zeit auswählen' | Platzhaltertext |
size | 'sm' | 'md' | 'lg' | 'md' | Größe des TimePickers |
fullWidth | boolean | false | Volle Breite |
leftIcon | ReactNode | - | Icons vor dem Input anzeigen |
portalTarget | HTMLElement | null | - | Portierung des Popups |
closeOnSelect | boolean | true | Automatisches Schließen nach Auswahl |
zIndex | number | 1000 | Z-Index für den Popup |
minuteStep | number | 1 | Zeitintervall in Minuten |
secondStep | number | 1 | Zeitintervall in Sekunden |
minTime | TimeValue | string | - | Minimale wählbare Zeit |
maxTime | TimeValue | string | - | Maximale wählbare Zeit |
className | string | - | Zusätzliche CSS-Klassen |