InputText
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
_labeleine Beschriftung erhalten, um Screenreader-Nutzer:innen die Feldfunktion deutlich zu machen. - Tastaturnavigation: Das Eingabefeld ist vollständig über die Tastatur bedienbar.
- Hinweistexte: Mit
_hintkönnen zusätzliche Informationen bereitgestellt werden, die von Screenreadern vorgelesen werden. - Fehlermeldungen: Das Attribut
_msgermö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.
Links und Referenzen
Verwendung
Tastatursteuerung
| Taste | Funktion |
|---|---|
Tab | Fokussiert das Eingabefeld. |
Best Practices / Empfehlungen
- Achten Sie darauf,
_idund_namekorrekt 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
_hintfür ergänzende Hinweise zur erwarteten Eingabe (z.B. Formatvorgaben). - Bei Validierungsfehlern geben Sie konkrete, verständliche Fehlermeldungen über
_msg. - Verwenden Sie
_placeholdernur als zusätzliche Orientierung, nicht als Ersatz für das Label. - Nutzen Sie
_disabledsparsam und begründen Sie deaktivierte Felder immer. - Bei langen Eingaben erwägen Sie stattdessen die
. - Setzen Sie
_auto-completebewusst: Der Standard ist'off'. Verwenden Sie'on'oder einen spezifischen Token (z.B.'email'), wenn Browser-Autofill erwünscht ist. - Mit
_hide-msglässt sich die Fehlermeldung visuell ausblenden – sie bleibt aber im DOM und ist für Screenreader überaria-describedbyweiterhin verfügbar. - Nutzen Sie
_short-key, um einen visuellen Tastaturkürzel-Hinweis nach dem Label anzuzeigen (wird auch dem Screenreader mitgeteilt). - Mit
_spell-checksteuern 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 Textfeldsearch: Suchfeld mit ESC-Funktion zum Löschentel: Für Telefonnummernurl: Für URLs mit entsprechender Validierung
Icons
Links und rechts vom Eingabefeld können Icons platziert werden:
<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:
<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
| Attribut | Typ | Standard | Beschreibung |
|---|---|---|---|
_has-counter | boolean | false | Globaler Schalter für den Zeichenzähler. Nur wenn dieses Attribut gesetzt (= true) ist, wird überhaupt ein Zähler ausgegeben. |
_max-length | number | — | Maximale 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-behavior | Sichtbarer Text |
|---|---|---|---|---|
| 1 | (leer) oder false | — | — | — (kein Zähler) |
| 2 | true | (leer) | — | n Zeichen |
| 3 | true | 50 | (leer) oder hard | n/50 Zeichen |
| 4 | true | 50 | soft | noch 30 Zeichen verfügbar(bzw. 5 Zeichen zu viel) |
Wird
_max-length-behavior="soft"verwendet, wird das nativemaxlength-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-countergibt es nie einen Zähler. - Mit
_has-counterund ohne_max-lengthwird nur die aktuell eingegebene Zeichenzahl angezeigt. - Mit
_has-counterund_max-lengthbestimmt_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:
<KolInputText _hint="Das ist ein Hinweis" _label="Mit Hinweis" _msg="Das ist eine Fehlermeldung" />Events
Zur Behandlung von Events bzw. Callbacks siehe
| Event | Auslöser | Value |
|---|---|---|
click | Eingabefeld wird angeklickt | - |
focus | Eingabefeld wird fokussiert | - |
blur | Eingabefeld verliert Fokus | - |
input | Wert wird durch Eingabe geändert | Aktueller Wert des Eingabefelds |
change | Eingabe wurde abgeschlossen | Aktueller Wert des Eingabefelds |
API
Overview
The Text input type creates an input field for plain text, search terms, URLs, or phone numbers.
Properties
| Property | Attribute | Description | Type | Default |
|---|---|---|---|---|
_accessKey | _access-key | Defines the key combination that can be used to trigger or focus the component's interactive element. | string | undefined | undefined |
_autoComplete | _auto-complete | Defines whether the input can be auto-completed. | string | undefined | 'off' |
_disabled | _disabled | Makes the element not focusable and ignore all events. | boolean | undefined | false |
_hasCounter | _has-counter | Shows a character counter for the input element. | boolean | undefined | false |
_hideLabel | _hide-label | Hides 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 | undefined | false |
_hideMsg | _hide-msg | Hides the error message but leaves it in the DOM for the input's aria-describedby. | boolean | undefined | false |
_hint | _hint | Defines the hint text. | string | undefined | '' |
_icons | _icons | Defines the icon classnames (e.g. _icons="fa-solid fa-user"). | string | undefined | { right?: IconOrIconClass | undefined; left?: IconOrIconClass | undefined; } | undefined |
_label (required) | _label | Defines 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. | string | undefined |
_maxLength | _max-length | Defines the maximum number of input characters. | number | undefined | undefined |
_maxLengthBehavior | _max-length-behavior | Defines the behavior when maxLength is set. 'hard' sets the maxlength attribute, 'soft' shows a character counter without preventing input. | "hard" | "soft" | undefined | 'hard' |
_msg | _msg | Defines the properties for a message rendered as Alert component. | Omit<AlertProps, "_on" | "_variant" | "_hasCloser" | "_label" | "_level"> & { _description: string; } | string | undefined | undefined |
_name | _name | Defines the technical name of an input field. | string | undefined | undefined |
_on | -- | Gibt die EventCallback-Funktionen für das Input-Event an. | InputTypeOnBlur & InputTypeOnClick & InputTypeOnChange & InputTypeOnFocus & InputTypeOnInput & InputTypeOnKeyDown | undefined | undefined |
_pattern | _pattern | Defines a validation pattern for the input field. | string | undefined | undefined |
_placeholder | _placeholder | Defines the placeholder for input field. To be shown when there's no value. | string | undefined | undefined |
_readOnly | _read-only | Makes the input element read only. | boolean | undefined | false |
_required | _required | Makes the input element required. | boolean | undefined | false |
_shortKey | _short-key | Adds a visual shortcut hint after the label and instructs the screen reader to read the shortcut aloud. | string | undefined | undefined |
_smartButton | _smart-button | Allows 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-check | Defines whether the browser should check the spelling and grammar. | boolean | undefined | undefined |
_suggestions | _suggestions | Suggestions to provide for the input. | W3CInputValue[] | string | undefined | undefined |
_tooltipAlign | _tooltip-align | Defines where to show the Tooltip preferably: top, right, bottom or left. | "bottom" | "left" | "right" | "top" | undefined | 'top' |
_touched | _touched | Shows if the input was touched by a user. | boolean | undefined | false |
_type | _type | Defines either the type of the component or of the components interactive element. | "search" | "tel" | "text" | "url" | undefined | 'text' |
_value | _value | Defines the value of the element. | string | undefined | undefined |
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
| Name | Type | Description |
|---|---|---|
replacement | string | |
selectionStart | number | undefined | |
selectionEnd | number | 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
| Name | Type | Description |
|---|---|---|
selectionStart | number | |
selectionEnd | number | |
selectionDirection | "none" | "forward" | "backward" | undefined |
Returns
Type: Promise<void>
setSelectionStart(selectionStart: number) => Promise<void>
Set selection start (and end = start) of internal element.
Parameters
| Name | Type | Description |
|---|---|---|
selectionStart | number |
Returns
Type: Promise<void>
Slots
| Slot | Description |
|---|---|
| The label of the input field. |