Zum Hauptinhalt springen

Ihre Meinung ist uns wichtig! Gemeinsam mit Ihnen möchten wir KoliBri stetig verbessern. Teilen Sie uns Ihre Ideen, Wünsche oder Anregungen mit – schnell und unkompliziert.

InputDate

Diese Dokumentation wird aktuell überarbeitet und befindet sich im Beta-Status. Inhalte können sich noch ändern.
Diese Komponente wird erneut auf Barrierefreiheit getestet. Der vollständige Test steht noch aus und kann erst nach einem abgeschlossenen Release erfolgen.

Synonyme: Date Picker, Datetime Picker, Week Picker, Month Picker, Time Picker, Kalender

Beschreibung: Die InputDate-Komponente ist ein Eingabefeld für Datumswerte in verschiedenen Formaten: konkrete Daten, Wochen, Monate oder Zeitangaben. Sie bietet je nach Browser- und Gerätetyp spezialisierte Auswahldialoge (z. B. Kalender, Zeitwähler) oder Eingabemaskierungsfunktionen für intuitive Datumseingabe.

Beispiel

Standard-Datumsfeld mit dem Typ date. Die Eingabe erfolgt über direkte Zahleneingabe mit Automatisierung oder über die gerätespezifische Auswahlhilfe.

<KolInputDate _label="Geburtsdatum" _type="date" />

Barrierefreiheit

  • Fokusmanagement: Das Eingabefeld wird über die Tab-Taste erreicht. Die Auswahlhilfen (z. B. Kalendermodul) können über die Leertaste oder Enter geöffnet werden.
  • Tastaturnavigation: Innerhalb des Auswahldialogs ermöglichen Pfeiltasten die Navigation zwischen Daten, Enter bestätigt die Auswahl.
  • Manuelle Eingabe: Ermöglicht Nutzer:innen, Werte direkt zu tippen, besonders wichtig für Tastaturnutzer:innen ohne Zugriff auf die grafische Auswahlhilfe.
  • Nichtfunktionale Icons: Die Icons sind per Tab-Taste nicht erreichbar, das Öffnen der Auswahlhilfen erfolgt ausschließlich über das Eingabefeld.
  • Browserabhängige Einschränkungen: In Firefox funktionieren die Typen month, time und week nicht mit grafischen Auswahldialogen.

Verwendung

Tastatursteuerung

TasteFunktion
TabFokussiert das Eingabefeld. Nach Fokuserhalt wechselt Tab durch Eingabebereiche (Tag/Monat/Jahr), danach zum nächsten Element.
Leertaste / EnterÖffnet die gerätespezifische Auswahlhilfe (z. B. Kalendermodul, Zeitwähler), falls verfügbar. Schließt die Auswahlhilfe nach Bestätigung.
Pfeil-Tasten (links / rechts)Wechselt zwischen Eingabebereichen (Tag, Monat, Jahr), wenn das Eingabefeld fokussiert ist.
Pfeil-Tasten (oben / unten)Erhöht oder erniedrigt den Wert im aktuell fokussierten Eingabebereich.
EscSchließt einen offenen Auswahldialog.

Best Practices / Empfehlungen

  • Sinnvolle Felder kennzeichnen: Nutzen Sie _required, um Pflichtfelder deutlich zu machen.
  • Validierung mit _min und _max: Begrenzen Sie den gültigen Datumsbereich z. B. für Geburtsdaten oder Terminreservierungen.
  • Korrekt benennen: Stellen Sie sicher, dass _name und _id korrekt gesetzt sind für Formularübermittlung.
  • Hinweistexte nutzen: Verwenden Sie _hint für Angaben zum erwarteten Format oder Einschränkungen.
  • Browserunterschiede kommunizieren: Machen Sie Nutzer:innen auf das Firefox-Verhalten bei month, time und week aufmerksam, falls diese Typen verwendet werden.
  • Fallback-Eingabe ermöglichen: Prüfen Sie, dass manuelle Zahleneingabe funktioniert, falls die grafische Auswahlhilfe nicht verfügbar ist.

Anwendungsfälle

  • Geburtsdatum: Erfassung des Geburtsdatums mit Typ date
  • Terminbuchung: Auswahl eines Datums und optional einer Uhrzeit mit Typ datetime-local
  • Rechnungsmonat: Auswahl eines Monats mit Typ month
  • Schichtenplanung: Auswahl einer Karten-Woche mit Typ week
  • Zeitliche Eingrenzung: Auswahl von Anfangs- und Endzeiten mit Typ time

FAQ

Warum funktioniert der Typ week in Firefox nicht?
Firefox bietet kein grafisches Wahlmodul für Wochen an. In diesem Fall ist nur die manuelle Texteingabe möglich.

Kann ich vordefinierte Werte setzen?
Ja, über das Attribut _value mit dem entsprechenden Format (z. B. "2024-01-15" für Typ date).

Wie kann ich das Datumsfeld leeren?
Setzen Sie _value auf null oder undefined, um das Feld zu leeren.

Konstruktion / Technik

Playground

Icons
Message
<KolInputDate _label="Erstellungsdatum" _type="date" />

Funktionalitäten (mit Code)

Beschriftung und Hinweistexte

Das Eingabefeld wird mit einer Beschriftung über _label versehen. Zusätzliche Informationen können über _hint bereitgestellt werden.

<KolInputDate _hint="Bitte geben Sie Ihr Geburtsdatum ein." _label="Geburtsdatum" _type="date" />

Eingabetypen

Das Attribut _type bestimmt das Format und den Auswahldialog:

<KolInputDate _label="Datum" _type="date" />

Verfügbare Typen:

  • date: Vollständiges Datum (Standard)
  • datetime-local: Datum und Uhrzeit ohne Zeitzone
  • month: Nur Monat und Jahr
  • time: Nur Uhrzeit (HH:MM)
  • week: Kalenderwoche und Jahr

Bereichsbeschränkung

Die Attribute _min und _max definieren den gültigen Datumsbereich:

<KolInputDate _label="Reservierungsdatum" _max="2025-12-31" _min="2025-01-01" _type="date" />

Schrittgröße bei Zeiteingabe

Für Typ time kann die Schrittgröße über _step festgelegt werden:

<KolInputDate _label="Uhrzeit" _step="15" _type="time" />

Formularattribute

Standard-Formularattribute für Validierung und Interaktion:

<KolInputDate _label="Datum" _required={true} _type="date" />

Verfügbare Attribute:

  • _disabled: Deaktiviert das Eingabefeld (mit Begründung verwenden!)
  • _readOnly: Verhindert Bearbeitung, erlaubt aber den Fokus
  • _required: Kennzeichnet Pflichtfelder
  • _hideLabel: Blendet das Label visuell aus (bleibt für assistive Technologien sichtbar)

Fehlermeldungen

Validierungsfehler oder Hinweismeldungen werden über das Attribut _msg ausgegeben:

Message
<KolInputDate _label="Datum" _msg="Das eingegebene Datum liegt außerhalb des zulässigen Bereichs." _type="date" />

Events

Zur Behandlung von Events bzw. Callbacks siehe .

EventAuslöserValue
clickEingabefeld wird angeklickt-
focusEingabefeld wird fokussiert-
blurEingabefeld verliert Fokus-
inputWert wird durch Eingabe oder Auswahl geändertAktueller Wert in ISO8601-Format
changeEingabe wurde durch Fokusabzug oder Enter abgeschlos.Aktueller Wert in ISO8601-Format

API

Overview

The Date input type creates an input field for date values. These can be specific dates as well as weeks, months, or time values.

Properties

PropertyAttributeDescriptionTypeDefault
_accessKey_access-keyDefines the key combination that can be used to trigger or focus the component's interactive element.string | undefinedundefined
_autoComplete_auto-completeDefines whether the input can be auto-completed.string | undefined'off'
_disabled_disabledMakes the element not focusable and ignore all events.boolean | undefinedfalse
_hideLabel_hide-labelHides the caption by default and displays the caption text with a tooltip when the interactive element is focused or the mouse is over it.boolean | undefinedfalse
_hideMsg_hide-msgHides the error message but leaves it in the DOM for the input's aria-describedby.boolean | undefinedfalse
_hint_hintDefines the hint text.string | undefined''
_icons_iconsDefines the icon classnames (e.g. _icons="fa-solid fa-user").string | undefined | { right?: IconOrIconClass | undefined; left?: IconOrIconClass | undefined; }undefined
_label (required)_labelDefines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.). Set to false to enable the expert slot.stringundefined
_max_maxDefines the maximum value of the element.Date | `${number}-${number}-${number}T${number}:${number}:${number}` | `${number}-${number}-${number}T${number}:${number}` | `${number}-${number}-${number}` | `${number}-${number}` | `${number}-W${number}` | `${number}:${number}:${number}` | `${number}:${number}` | undefinedundefined
_min_minDefines the smallest possible input value.Date | `${number}-${number}-${number}T${number}:${number}:${number}` | `${number}-${number}-${number}T${number}:${number}` | `${number}-${number}-${number}` | `${number}-${number}` | `${number}-W${number}` | `${number}:${number}:${number}` | `${number}:${number}` | undefinedundefined
_msg_msgDefines the properties for a message rendered as Alert component.Omit<AlertProps, "_on" | "_variant" | "_hasCloser" | "_label" | "_level"> & { _description: string; } | string | undefinedundefined
_name_nameDefines the technical name of an input field.string | undefinedundefined
_on--Gibt die EventCallback-Funktionen für das Input-Event an.InputTypeOnBlur & InputTypeOnClick & InputTypeOnChange & InputTypeOnFocus & InputTypeOnInput & InputTypeOnKeyDown | undefinedundefined
_readOnly_read-onlyMakes the input element read only.boolean | undefinedfalse
_required_requiredMakes the input element required.boolean | undefinedfalse
_shortKey_short-keyAdds a visual shortcut hint after the label and instructs the screen reader to read the shortcut aloud.string | undefinedundefined
_smartButton_smart-buttonAllows to add a button with an arbitrary action within the element (_hide-label only).string | undefined | { _label: string; } & { _on?: ButtonCallbacksPropType<StencilUnknown> | undefined; _type?: "button" | "reset" | "submit" | undefined; _ariaExpanded?: boolean | undefined; _tabIndex?: number | undefined; _value?: StencilUnknown; _accessKey?: string | undefined; _role?: "tab" | "treeitem" | undefined; _ariaControls?: string | undefined; _ariaDescription?: string | undefined; _ariaSelected?: boolean | undefined; _customClass?: string | undefined; _disabled?: boolean | undefined; _hideLabel?: boolean | undefined; _icons?: IconsPropType | undefined; _id?: string | undefined; _inline?: boolean | undefined; _name?: string | undefined; _shortKey?: string | undefined; _syncValueBySelector?: string | undefined; _tooltipAlign?: AlignPropType | undefined; _variant?: string | undefined; }undefined
_step_stepDefines the step size for value changes.`${number}.${number}` | `${number}` | number | undefinedundefined
_suggestions_suggestionsSuggestions to provide for the input.W3CInputValue[] | string | undefinedundefined
_tooltipAlign_tooltip-alignDefines where to show the Tooltip preferably: top, right, bottom or left."bottom" | "left" | "right" | "top" | undefined'top'
_touched_touchedShows if the input was touched by a user.boolean | undefinedfalse
_type_typeDefines either the type of the component or of the components interactive element."date" | "datetime-local" | "month" | "time" | "week"'date'
_value_valueDefines the value of the element.Date | `${number}-${number}-${number}T${number}:${number}:${number}` | `${number}-${number}-${number}T${number}:${number}` | `${number}-${number}-${number}` | `${number}-${number}` | `${number}-W${number}` | `${number}:${number}:${number}` | `${number}:${number}` | null | undefinedundefined

Methods

click

click() => Promise<void>

Clicks the primary interactive element inside this component.

Returns

Type: Promise<void>

focus() => Promise<void>

Sets focus on the internal element.

Returns

Type: Promise<void>

getValue() => Promise<string | Date | undefined | null>

Returns the current value.

Returns

Type: Promise<string | Date | null | undefined>

reset() => Promise<void>

Resets the component's value.

Returns

Type: Promise<void>

Slots

SlotDescription
The label of the input field.