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.

Textarea

Synonyme: Mehrzeiliges Eingabefeld, Textbereich, Texteingabefeld

Eine Textarea ist ein mehrzeiliges Eingabefeld, das es Nutzern ermöglicht, längere Texte mit Zeilenumbrüchen einzugeben. Im Gegensatz zu einzeiligen Eingabefeldern bietet die Textarea ausreichend Platz für umfangreiche Textinhalte wie Beschreibungen, Kommentare oder strukturierte Informationen. Die Komponente unterstützt verschiedene Konfigurationsoptionen wie Größenanpassung, Zeichenbegrenzung, Barrierefreiheit und automatische Höhenanpassung.

Beispiel

Standard-Textarea mit Beschriftung und Platzhaltertext:

<KolTextarea _hint="Ergänzende Hinweise zum Eingabefeld" _label="Beschreibung" _placeholder="Bitte geben Sie Ihre Beschreibung ein..." _rows={4} />

Barrierefreiheit

Die Textarea-Komponente wurde mit Fokus auf Barrierefreiheit entwickelt und unterstützt verschiedene assistive Technologien:

  • Label-Pflicht: Jede Textarea muss über das Attribut _label eine sichtbare Beschriftung erhalten. Dies gewährleistet, dass Screenreader-Nutzer verstehen, welchen Zweck das Eingabefeld erfüllt.
  • Hinweistexte: Mit _hint können zusätzliche Informationen bereitgestellt werden, die für alle Nutzer zugänglich sind und von Screenreadern vorgelesen werden.
  • Fehlermeldungen: Fehlerhafte Eingaben können über das Attribut _msg mit aussagekräftigen Fehlermeldungen versehen werden, die von assistiven Technologien erkannt und vorgelesen werden.
  • Zeichenzähler: Bei aktiviertem Zeichenzähler (_has-counter) wird der Status mit einer Verzögerung von 500 ms aktualisiert, um Screenreader nicht bei jeder Eingabe zu unterbrechen. Zusätzlich wird ein versteckter, nur für assistive Technologien sichtbarer Text eingeblendet (z.B. "Sie können bis zu 100 Zeichen eingeben").
  • Fokusmanagement: Die Textarea ist vollständig über die Tastatur bedienbar und bietet klare Fokusindikatoren.
  • Pflichtfelder: Mit _required gekennzeichnete Felder werden korrekt an assistive Technologien kommuniziert.

Nutzung

Tastatursteuerung

Die Textarea unterstützt folgende Tastenkombinationen:

TasteFunktion
TabFokussiert die Textarea oder wechselt zum nächsten interaktiven Element.
Shift + TabWechselt zum vorherigen interaktiven Element.
Pfeil-TastenNavigation innerhalb des Textinhalts der fokussierten Textarea.
Pos1Springt zum Anfang der aktuellen Zeile.
EndeSpringt zum Ende der aktuellen Zeile.
Strg + AMarkiert den gesamten Text in der Textarea.
EnterFügt einen Zeilenumbruch ein (im Gegensatz zu einzeiligen Eingabefeldern).

Best Practices / Empfehlungen

  • Höhe sinnvoll wählen: Beginnen Sie mit wenigen Zeilen (z.B. _rows="4") und erlauben Sie bei Bedarf die Größenanpassung über _resize, aber vermeiden Sie horizontales Scrollen.
  • Sinnvolle maximale Länge: Legen Sie eine fachlich begründete maximale Zeichenlänge fest und machen Sie diese mit _has-counter und _max-length transparent. Für weichere Limits nutzen Sie _max-length-behavior="soft".
  • Hilfetexte bereitstellen: Geben Sie Formatvorgaben oder Hinweise über das Attribut _hint vor der Eingabe an, nicht erst nach einem Fehler.
  • Kontrolle beim Nutzer lassen: Erzwingen Sie keine Groß-/Kleinschreibung. Nutzer behalten die Kontrolle über den eingegebenen Text.
  • Transparenz bei Trunkierung: Schneiden Sie Inhalte nie vorab ab oder verändern Sie diese ohne Hinweis. Bei Trunkierung klar kommunizieren.
  • Richtige Komponente wählen: Für kurze, einzeilige Eingaben verwenden Sie besser die . Textareas sind für mehrzeilige Inhalte gedacht.
  • Aussagekräftige Labels: Verwenden Sie klare und präzise Beschriftungen, die den Zweck des Eingabefelds deutlich machen.
  • Fehlermeldungen: Bei Validierungsfehlern geben Sie konkrete, verständliche Hinweise über das Attribut _msg.

Anwendungsfälle

  • Kommentare und Feedback: Erfassen von Nutzer-Kommentaren, Feedback oder Bewertungen.
  • Beschreibungen: Eingabe von Produkt-, Artikel- oder Personenbeschreibungen.
  • Formularfelder: Erfassung von Anliegen, Anfragen oder Begründungen in Formularen.
  • Strukturierte Daten: Eingabe von Adressen mit mehreren Zeilen, Notizen oder Anweisungen.
  • Nachrichten: Verfassen von E-Mails, Nachrichten oder Mitteilungen.
  • Dokumentation: Eingabe von längeren Texten für Dokumentations- oder Content-Management-Systeme.

Konstruktion / Technik

Playground

Testen Sie die verschiedenen Eigenschaften der Textarea-Komponente:

<KolTextarea _hint="Hinweistext" _label="Beschreibung" _placeholder="Bitte geben Sie eine Beschreibung ein..." _rows={4} />

Funktionalitäten

Einfache Textarea

Standard-Textarea ohne spezielle Konfiguration:

<KolTextarea _label="Beschreibung" />

Automatische Höhenanpassung

Die Textarea passt ihre Höhe automatisch an den Inhalt an:

<KolTextarea _adjustHeight={true} _label="Beschreibung" _value="Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat." />

Formularattribute

Standard-Attribute für Formulare:

<KolTextarea _label="Beschreibung" />

Verfügbare Attribute:

  • _msg: Fehlermeldungen oder Validierungshinweise
  • _hint: Ergänzende Hinweise zur Eingabe
  • _disabled: Deaktiviert das Eingabefeld (mit Begründung verwenden!)
  • _readOnly: Verhindert die Bearbeitung des Feldes
  • _required: Kennzeichnet Pflichtfelder

Placeholder

Der Placeholder-Text wird angezeigt, wenn das Eingabefeld leer ist:

<KolTextarea _label="Beschreibung" _placeholder="Bitte geben Sie eine Beschreibung ein..." />

Hinweis: Der Placeholder sollte nur als ergänzende Hilfe dienen und keine Pflichtinformationen enthalten, da der Text beim Eintippen verschwindet.

Nur-Lesen-Modus

Die Textarea ist nur lesbar, aber nicht editierbar:

<KolTextarea _label="Beschreibung" _readOnly={true} />

Größenanpassung (Resize)

Die Textarea kann über das Attribut _resize in ihrer Größe angepasst werden:

<KolTextarea _label="Beschreibung" _resize="vertical" />

Verfügbare Werte:

  • vertical: Nur vertikal vergrößerbar (Standard)
  • horizontal: Nur horizontal vergrößerbar
  • both: In beide Richtungen vergrößerbar
  • none: Keine Größenanpassung möglich

Zeilenanzahl

Die anfängliche Höhe der Textarea kann über das Attribut _rows in Zeilen angegeben werden:

<KolTextarea _label="Beschreibung" _rows={6} />

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:

<KolTextarea _hasCounter={true} _label="Beschreibung" _maxLength={100} _rows={3} _value="Initialer Text" />
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
3true100(leer) oder hardn/100 Zeichen
4true100softnoch 50 Zeichen verfügbar
(bzw. 5 Zeichen zu viel)

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

Barrierefreiheit des Zeichenzählers
  • 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 100 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.

API

Properties

PropertyAttributeDescriptionTypeDefault
_accessKey_access-keyDefines the key combination that can be used to trigger or focus the component's interactive element.string | undefinedundefined
_adjustHeight_adjust-heightAdjusts the height of the element to its content.boolean | undefinedfalse
_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
_id_id[DEPRECATED] Will be removed in the next major version.

Defines the internal ID of the primary component element.
string | undefinedundefined
_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" | "_hasCloser" | "_label" | "_level" | "_variant"> & { _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
_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
_resize_resizeDefines whether and in which direction the size of the input can be changed by the user. (https://developer.mozilla.org/de/docs/Web/CSS/resize) In version 3 (v3), horizontal resizing is abolished. The corresponding property is then reduced to the properties vertical (default) and none."none" | "vertical" | undefined'vertical'
_rows_rowsMaximum number of visible rows of the element.number | undefinedundefined
_shortKey_short-keyAdds a visual shortcut hint after the label and instructs the screen reader to read the shortcut aloud.string | undefinedundefined
_spellCheck_spell-checkDefines whether the browser should check the spelling and grammar.boolean | 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
_value_valueDefines the value of the element.string | undefinedundefined

Methods

focus

focus() => Promise<void | undefined>

Sets focus on the internal element.

Returns

Type: Promise<void | undefined>

getValue() => Promise<string | undefined>

Returns the current value.

Returns

Type: Promise<string | undefined>

Slots

SlotDescription
Die Beschriftung des Eingabefeldes.

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