InputEmail
Synonyme: E-Mail-Eingabe, Elektronische Post, Mail
Beschreibung: Die InputEmail-Komponente ist ein spezialisiertes Eingabefeld für E-Mail-Adressen. Sie ermöglicht die sichere Erfassung einer oder mehrerer E-Mail-Adressen und unterstützt Validierung, Zeichenbegrenzung sowie barrierefreie Bedienung durch Tastatur und Screenreader.
Beispiel
Darstellung der Komponente ohne optional gesetzte Felder.
<KolInputEmail _label="E-Mail-Adresse" />Barrierefreiheit
- Label-Pflicht: Jedes InputEmail-Feld muss über das Attribut
_labeleine sichtbare Beschriftung erhalten. Dies gewährleistet, dass Screenreader-Nutzer verstehen, welchen Zweck das Eingabefeld erfüllt. - Hinweistexte: Mit
_hintkönnen zusätzliche Informationen bereitgestellt werden, die für alle Nutzer zugänglich sind. - Fehlermeldungen: Validierungsfehler können über
_msgmit aussagekräftigen Meldungen gekennzeichnet werden. Browser-seitige Validierungen werden über die Attribute_touchedund_msgkommuniziert. - 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: Das Eingabefeld ist vollständig über die Tastatur bedienbar und bietet klare Fokusindikatoren.
- Mehrfach-Modus: Wenn das Attribut
_multiplegesetzt ist, wird die Erwartung kommuniziert, dass mehrere E-Mail-Adressen (kommagetrennt) eingegeben werden können.
Links und Referenzen
Verwendung
Tastatursteuerung
| Taste | Funktion |
|---|---|
Tab | Fokussiert das Eingabefeld oder wechselt zum nächsten. |
Shift + Tab | Wechselt zum vorherigen interaktiven Element. |
Pfeil-Tasten | Navigation innerhalb des Textinhalts. |
Pos1 | Springt zum Anfang des Textinhalts. |
Ende | Springt zum Ende des Textinhalts. |
Strg + A | Markiert den gesamten Text. |
Best Practices / Empfehlungen
- Klare Labels verwenden: Geben Sie aussagekräftige Beschriftungen an, z.B. „E-Mail-Adresse", „Empfänger" oder „Registrierungs-E-Mail".
- Hilfetexte bei Mehrfach-Eingabe: Wenn
_multipleaktiviert ist, klären Sie über_hintauf, dass mehrere Adressen kommagetrennt eingegeben werden. - id und name setzen: Achten Sie darauf,
idund_namekorrekt zu setzen, damit die Daten beim Formulare-Absenden mitgesendet werden. - Placeholder sparsam nutzen: Verwenden Sie
_placeholdernur als Zusatzhilfe, nicht für zentrale Informationen. - Validierungsfeedback: Höhe auf Browser-Validierung verlassen (Format-Check) und zusätzliche Hinweise über
_msggeben, falls erforderlich. - Richtige Komponente wählen: Für Text-Eingaben verwenden Sie die
; InputEmail ist spezifisch für E-Mail-Adressen.
Anwendungsfälle
- Registrierungsformulare und Kontoerstellung
- Newsletter-Anmeldungen
- Kontaktformulare und Support-Anfragen
- Mehrfach-Adressaten in E-Mail-Versand-Formularen
- Benachrichtigungseinstellungen
- Benutzerprofil-Bearbeitung
FAQ
Kann die Komponente E-Mail-Adressen validieren?
Die Komponente nutzt die native Browser-Validierung für das type="email"-Format. Eine darüber hinausgehende Validierung (z.B. Prüfung auf Existenz) muss auf Serverseite erfolgen.
Wie trenne ich mehrere E-Mail-Adressen?
Mit _multiple="true" können Nutzer mehrere Adressen durch Kommata getrennt eingeben (z.B. mail1@example.com, mail2@example.com).
Wie wird die Validierung dem Nutzer angezeigt?
Nutzen Sie die Kombination aus _touched="true" (um anzuzeigen, dass das Feld bearbeitet wurde) und _msg (um eine aussagekräftige Fehlermeldung zu zeigen).
Konstruktion / Technik
Playground
Testen Sie die verschiedenen Eigenschaften des InputEmail-Felds:
<KolInputEmail _label="E-Mail-Adresse" />Funktionalitäten (mit Code)
Basis-Eingabefeld
Standard-E-Mail-Eingabe mit Label:
<KolInputEmail _label="E-Mail-Adresse" />Mehrfach-Eingabe
Mit _multiple werden mehrere E-Mail-Adressen akzeptiert, kommagetrennt:
<KolInputEmail _hint="Adressen durch Kommas trennen" _label="E-Mail-Adressen" _multiple={true} />Placeholder und Hinweis
Hilfstexte für bessere Usability:
<KolInputEmail _hint="Wir verwenden Ihre E-Mail für Benachrichtigungen." _label="E-Mail-Adresse" _placeholder="beispiel@domain.de" />Formularattribute
Standard-Attribute für Formulare:
<KolInputEmail _label="E-Mail-Adresse" />Verfügbare Attribute:
_disabled: Deaktiviert das Eingabefeld (mit Begründung verwenden!)_readOnly: Verhindert die Bearbeitung des Feldes_required: Kennzeichnet Pflichtfelder_hideLabel: Blendet das Label visuell aus (bleibt für assistive Technologien sichtbar)_hideMsg: Blendet die Fehlermeldung visuell aus, hält sie aber im DOM füraria-describedby_shortKey: Fügt einen visuellen Shortcut-Hinweis nach dem Label hinzu und liest ihn für Screenreader vor_tooltipAlign: Legt fest, wo der Tooltip bevorzugt angezeigt wird ('top'|'right'|'bottom'|'left')
Icons
Icons können links und/oder rechts vom Eingabefeld angezeigt werden:
<KolInputEmail _icons={{"left":"kolibri","right":"fa-solid fa-envelope"}} _label="E-Mail-Adresse" />Name und ID
Technische Kennzeichnung für Formulare:
<KolInputEmail _label="E-Mail-Adresse" _name="email" />Hinweis: _name wird als HTML-Attribut name verwendet und ist wichtig für das Absenden des Formulars.
Auto-Vervollständigung und Vorschläge
Mit _autoComplete steuern Sie, ob der Browser Eingabevorschläge anzeigen soll. Der Standardwert ist 'off'. Für Felder, bei denen Browser-Autofill erwünscht ist, setzen Sie _autoComplete="email".
Mit _suggestions können Sie eine Liste von Vorschlagswerten bereitstellen, die dem Nutzer während der Eingabe als auswählbare Datenliste angezeigt werden:
<KolInputEmail _autoComplete="email" _label="E-Mail-Adresse" />Zeichenbegrenzung und Zeichenzähler
Mit den Attributen _max-length, _max-length-behavior und _has-counter lässt sich die Eingabelänge flexibel begrenzen:
<KolInputEmail _hasCounter={true} _label="E-Mail-Adresse" _maxLength={100} />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 | 100 | (leer) oder hard | n/100 Zeichen |
| 4 | true | 100 | soft | noch 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."
Fehlermeldung und Validierung
Fehlerhafte Eingaben können über _msg mit aussagekräftigen Meldungen versehen werden. Mit _pattern lässt sich zusätzlich ein reguläres Ausdrucks-Muster zur Eingabevalidierung hinterlegen:
<KolInputEmail _label="E-Mail-Adresse" _msg={{"_description":"Bitte geben Sie eine gültige E-Mail-Adresse ein."}} _touched={true} />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 Email input type creates an input field for email addresses. It supports built-in format validation, multiple addresses via the _multiple property, and auto-complete suggestions.
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 |
_multiple | _multiple | Makes the input accept multiple inputs. | boolean | undefined | false |
_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 |
_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 |
_value | _value | Defines the value of the element. | string | undefined | undefined |
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 | undefined>
Returns the current value.
Returns
Type: Promise<string | undefined>
Slots
| Slot | Description |
|---|---|
| The label of the input field. |
| 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. |
Verwendung _msg
| Fall | _msg-Wert |
|---|---|
| Keine Message | undefined |
| "Standard"-Fehlermeldung | string |
| Meldung | {_type: 'success', _description: 'Erfolgs-Meldung'} |