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.

InputText

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: Text Field, Eingabefeld, Textfeld

Beschreibung: Die InputText-Komponente erzeugt ein Eingabefeld für normale Texteingaben, Suchbegriffe, URLs oder Telefonnummern. Sie unterstützt verschiedene Konfigurationsoptionen wie Zeichenbegrenzung, Icons und Validierungs-Feedback.

Beispiel

Standard-Eingabefeld mit Beschriftung:

<KolInputText _label="Texteingabe" />

Barrierefreiheit

  • Label erforderlich: Jedes Eingabefeld muss über das Attribut _label eine Beschriftung erhalten, um Screenreader-Nutzer:innen die Feldfunktion deutlich zu machen.
  • Tastaturnavigation: Das Eingabefeld ist vollständig über die Tastatur bedienbar.
  • Hinweistexte: Mit _hint können zusätzliche Informationen bereitgestellt werden, die von Screenreadern vorgelesen werden.
  • Fehlermeldungen: Das Attribut _msg ermöglicht aussagekräftige Fehlermeldungen, die von assistiven Technologien erkannt werden.
  • Zeichenzähler: Bei Aktivierung (_has-counter) wird der Zähler mit einer Verzögerung von 500 ms aktualisiert, um Screenreader nicht zu unterbrechen. Ein versteckter, nur für assistive Technologien sichtbarer Text wird eingeblendet (z.B. „Sie können bis zu 10 Zeichen eingeben").
  • Fokusmanagement: Klare Fokusindikatoren unterstützen visuelle und tastaturgesteuerte Navigation.

Verwendung

Tastatursteuerung

TasteFunktion
TabFokussiert das Eingabefeld.

Best Practices / Empfehlungen

  • Achten Sie darauf, _id und _name korrekt zu setzen, damit die Daten beim Formular-Versand mitgesendet werden.
  • Verwenden Sie aussagekräftige Label-Texte, die den Zweck des Eingabefelds klar kommunizieren.
  • Nutzen Sie _hint für ergänzende Hinweise zur erwarteten Eingabe (z.B. Formatvorgaben).
  • Bei Validierungsfehlern geben Sie konkrete, verständliche Fehlermeldungen über _msg.
  • Verwenden Sie _placeholder nur als zusätzliche Orientierung, nicht als Ersatz für das Label.
  • Nutzen Sie _disabled sparsam und begründen Sie deaktivierte Felder immer.
  • Bei langen Eingaben erwägen Sie stattdessen die .
  • Setzen Sie _auto-complete bewusst: Der Standard ist 'off'. Verwenden Sie 'on' oder einen spezifischen Token (z.B. 'email'), wenn Browser-Autofill erwünscht ist.
  • Mit _hide-msg lässt sich die Fehlermeldung visuell ausblenden – sie bleibt aber im DOM und ist für Screenreader über aria-describedby weiterhin verfügbar.
  • Nutzen Sie _short-key, um einen visuellen Tastaturkürzel-Hinweis nach dem Label anzuzeigen (wird auch dem Screenreader mitgeteilt).
  • Mit _spell-check steuern Sie, ob der Browser die Rechtschreibprüfung für das Eingabefeld aktiviert.

Anwendungsfälle

  • Erfassung einfacher Texteingaben (Namen, Adressen, Beschreibungen)
  • Suchfelder mit Suchtext-Eingabe
  • Kontaktdaten (E-Mail, Telefon via _type="tel")
  • URL-Eingaben via _type="url"
  • Formularfelder in Masken und Dialogen

FAQ

Wann sollte ich _hideLabel verwenden?
Nur in Spezialfällen, wenn das Label visuell verborgen sein soll. Das Label bleibt für assistive Technologien sichtbar. Nutzen Sie _hint zur zusätzlichen Unterstützung.

Wie kann ich Eingaben validieren?
Mit _pattern können Sie ein reguläres Ausdruck-Muster zum Validieren der Eingabe verwenden. Fehlermeldungen geben Sie über _msg aus.

Kann ich Vorschläge anzeigen?
Ja, über das Attribut _suggestions können Sie eine Liste von Vorschlagswerten bereitstellen.

Konstruktion / Technik

Funktionalitäten (mit Code)

Basis-Eingabefeld

Ein einfaches Eingabefeld mit Label:

<KolInputText _label="Texteingabe" />

Eingabefeld-Typen

InputText unterstützt verschiedene Eingabe-Typen über das Attribut _type:

<KolInputText _label="Eingabetyp" _type="text" />

Verfügbare Typen:

  • text (Standard): Normales Textfeld
  • search: Suchfeld mit ESC-Funktion zum Löschen
  • tel: Für Telefonnummern
  • url: Für URLs mit entsprechender Validierung

Icons

Links und rechts vom Eingabefeld können Icons platziert werden:

Icons
<KolInputText _icons={{"left":"kolibri-icon-24","right":"kolibri-icon-24"}} _label="Mit Icons" />

Validierungszustände

Status-Eigenschaften zur Steuerung von Validierung und Interaktion:

<KolInputText _label="Eingabefeld" />

Verfügbare Zustände:

  • _disabled: Deaktiviert das Feld (mit Begründung nutzen)
  • _readOnly: Feld ist lesbar, aber nicht editierbar
  • _required: Kennzeichnet Pflichtfelder
  • _touched: Zeigt an, ob das Feld vom Nutzer angefasst wurde

Label-Verwaltung

Label können visuell verborgen sein, bleiben aber für assistive Technologien sichtbar:

<KolInputText _hideLabel={true} _label="Verborgenes Label" _placeholder="Platzhalter" />

Vorschlagswerte (Suggestions)

Über _suggestions können Vorschlagswerte bereitgestellt werden, die während der Eingabe als auswählbare Datenliste angezeigt werden:

Suggestions
<KolInputText _label="Anrede" _suggestions={["Herr","Frau","Firma"]} />

Verfügbares Attribut:

  • _suggestions: Liste von Vorschlagswerten für die Datalist-Autovervollständigung

Zeichenbegrenzung und Zeichenzähler

Mit den Attributen _max-length, _max-length-behavior und _has-counter lässt sich die Eingabelänge flexibel begrenzen und gleichzeitig visuelles Feedback geben:

<KolInputText _hasCounter={true} _label="Mit Zeichenzähler" _maxLength={50} />
Attribute
AttributTypStandardBeschreibung
_has-counterbooleanfalseGlobaler Schalter für den Zeichenzähler. Nur wenn dieses Attribut gesetzt (= true) ist, wird überhaupt ein Zähler ausgegeben.
_max-lengthnumberMaximale Anzahl erlaubter Zeichen. Wirksam nur, wenn _has-counter aktiv ist.
_max-length-behavior"hard" | "soft""hard"Legt fest, wie die Grenze behandelt wird, falls _max-length gesetzt ist:
- hard: Setzt zusätzlich das native maxlength-Attribut und verhindert weitere Eingaben.
- soft: Lässt weitere Eingaben zu; der Zähler zeigt verbleibende oder überschrittene Zeichen an.
Ausgabevarianten
Fall_has-counter_max-length_max-length-behaviorSichtbarer Text
1(leer) oder false— (kein Zähler)
2true(leer)n Zeichen
3true50(leer) oder hardn/50 Zeichen
4true50softnoch 30 Zeichen verfügbar
(bzw. 5 Zeichen zu viel)

Wird _max-length-behavior="soft" verwendet, wird das native maxlength-Attribut nicht gesetzt – das Eingabefeld wird also nicht hart begrenzt.

Barrierefreiheit
  • Der Zähler aktualisiert sich mit einer Verzögerung von 500 ms, damit Screenreader-Ereignisse gebündelt werden und das Tippen nicht unterbrechen.
  • Für Screenreader wird zusätzlich ein versteckter, nur für assistive Technologien sichtbarer Text eingeblendet, etwa: „Sie können bis zu 10 Zeichen eingeben.“
Zusammenfassung
  • Ohne _has-counter gibt es nie einen Zähler.
  • Mit _has-counter und ohne _max-length wird nur die aktuell eingegebene Zeichenzahl angezeigt.
  • Mit _has-counter und _max-length bestimmt _max-length-behavior, ob die Grenze hart (hard) oder weich (soft) umgesetzt wird.

SmartButton

Ein Schaltfläche mit beliebiger Aktion kann im Feld platziert werden (nur mit _hideLabel):

<KolInputText _hideLabel={true} _label="Mit SmartButton" _placeholder="Platzhalter" _smartButton={{"_label":"Action"}} />

Hinweistexte und Fehlermeldungen

Zusätzliche Informationen und Fehler-Feedback:

Message
<KolInputText _hint="Das ist ein Hinweis" _label="Mit Hinweis" _msg="Das ist eine Fehlermeldung" />

Events

Zur Behandlung von Events bzw. Callbacks siehe .

EventAuslöserValue
clickEingabefeld wird angeklickt-
focusEingabefeld wird fokussiert-
blurEingabefeld verliert Fokus-
inputWert wird durch Eingabe geändertAktueller Wert des Eingabefelds
changeEingabe wurde abgeschlossenAktueller Wert des Eingabefelds

API

Overview

The Text input type creates an input field for plain text, search terms, URLs, or phone numbers.

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
_hasCounter_has-counterShows a character counter for the input element.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
_maxLength_max-lengthDefines the maximum number of input characters.number | undefinedundefined
_maxLengthBehavior_max-length-behaviorDefines the behavior when maxLength is set. 'hard' sets the maxlength attribute, 'soft' shows a character counter without preventing input."hard" | "soft" | undefined'hard'
_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
_pattern_patternDefines a validation pattern for the input field.string | undefinedundefined
_placeholder_placeholderDefines the placeholder for input field. To be shown when there's no value.string | 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
_spellCheck_spell-checkDefines whether the browser should check the spelling and grammar.boolean | 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."search" | "tel" | "text" | "url" | undefined'text'
_value_valueDefines the value of the element.string | undefinedundefined

Methods

click

click() => Promise<void>

Focuses 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 | undefined>

Returns the current value.

Returns

Type: Promise<string | undefined>

selectioconEnd() => Promise<number | null | undefined>

Get selection end of internal element.

Returns

Type: Promise<number | null | undefined>

selectionStart() => Promise<number | null | undefined>

Get selection start of internal element.

Returns

Type: Promise<number | null | undefined>

setRangeText(replacement: string, selectionStart?: number, selectionEnd?: number, selectMode?: "select" | "start" | "end" | "preserve") => Promise<void>

Add string at position of internal element; just like https://developer.mozilla.org/docs/Web/API/HTMLInputElement/setRangeText

Parameters

NameTypeDescription
replacementstring
selectionStartnumber | undefined
selectionEndnumber | undefined
selectMode"select" | "start" | "end" | "preserve" | undefined

Returns

Type: Promise<void>

setSelectionRange(selectionStart: number, selectionEnd: number, selectionDirection?: "forward" | "backward" | "none") => Promise<void>

Set selection start and end, and optional in which direction, of internal element; just like https://developer.mozilla.org/docs/Web/API/HTMLInputElement/setSelectionRange

Parameters

NameTypeDescription
selectionStartnumber
selectionEndnumber
selectionDirection"none" | "forward" | "backward" | undefined

Returns

Type: Promise<void>

setSelectionStart(selectionStart: number) => Promise<void>

Set selection start (and end = start) of internal element.

Parameters

NameTypeDescription
selectionStartnumber

Returns

Type: Promise<void>

Slots

SlotDescription
The label of the input field.