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.

InputPassword

Synonyme: Passwort-Eingabefeld, Passwortfeld, Kennwortfeld, Password Input, Password Field

Beschreibung: Mit InputPassword können Passwörter und andere vertrauliche Zeichenfolgen verdeckt eingegeben und bearbeitet werden.

Die Komponente basiert auf dem nativen HTML5-Eingabetyp password und profitiert dadurch von dessen Semantik sowie der standardisierten Unterstützung durch Browser, Passwort-Manager und assistive Technologien. Die Eingabe wird maskiert dargestellt.

Optional ergänzt KoliBri einen Sichtbarkeitsumschalter (_visibilityToggle), mit dem Nutzende das eingegebene Passwort ein- und wieder ausblenden können.

Beispiel​

Standard-Passwortfeld mit Sichtbarkeitsumschalter:

<KolInputPassword _label="Passwort" _visibilityToggle={true} />

Barrierefreiheit​

  • Das Eingabefeld muss mit einer aussagekräftigen Beschriftung versehen werden. Es darf visuell ausgeblendet werden, wenn der Zweck des Eingabefeldes durch den direkten visuellen Kontext absolut unmissverständlich ist.

  • Im Fehlerfall wird die Fehlermeldung direkt an der Komponente dargestellt und automatisch mit ihr verknüpft, sodass sie auch assistiven Technologien zur Verfügung steht.

  • Der Zeichenzähler (_hasCounter) wird Screenreader-Nutzenden nicht bei jedem Tastendruck, sondern gesammelt nach einer Eingabepause von etwa einer Sekunde angesagt, damit das Tippen nicht durch laufende Ansagen unterbrochen wird. Ist die Zeichengrenze bei _maxLengthBehavior="hard" erreicht, wird dies zusätzlich angesagt – auch bei jedem weiteren Eingabeversuch –, und beim erneuten Fokussieren des Feldes wird der aktuelle Zählerstand noch einmal ausgegeben. Ist nur _maxLength ohne Zähler gesetzt, erhalten Screenreader-Nutzende die maximale Zeichenanzahl als zusätzlichen Hinweis zum Feld.

Konkrete Designentscheidungen​

EntscheidungBegründung
Verwendung des nativen HTML5-Eingabetyps passwordDie Komponente nutzt bewusst den nativen HTML5-Eingabetyp und profitiert dadurch von dessen standardisierter Unterstützung durch Browser, Passwort-Manager und assistive Technologien.
Zustand über wechselnde BeschriftungDer Sichtbarkeitsumschalter benennt die jeweils auslösbare Aktion („einblenden“ bzw. „ausblenden“). Der Zustand wird damit über den zugänglichen Namen vermittelt.
Fokus bleibt im PasswortfeldNach dem Umschalten wird der Fokus in das Passwortfeld zurückgesetzt. Nutzende müssen den Fokus nicht erneut setzen, um weiterzuschreiben oder die Eingabe zu prüfen.

Verwendung​

  • Nutzen Sie _visibilityToggle, um das Passwort bei Bedarf ein- und ausblenden zu können.
  • Setzen Sie _autoComplete passend zum Anwendungsfall, beispielsweise auf 'current-password' für Anmeldungen oder 'new-password' für die Vergabe neuer Passwörter.
  • Verwenden Sie _maxLength, um die maximal zulässige Anzahl an Zeichen zu begrenzen, und legen Sie mit _maxLengthBehavior fest, ob die Grenze nativ durchgesetzt ('hard', Standard) oder lediglich angezeigt wird ('soft').
  • Nutzen Sie _pattern, um Passwortregeln als Formatvorgabe zu hinterlegen, und beschreiben Sie diese Regeln zusätzlich über _hint.

Hinweis: Die Komponente setzt _autoComplete standardmäßig auf 'off'. Überschreiben Sie diesen Wert in produktiven Formularen in der Regel explizit, damit Browser und Passwort-Manager das Eingabefeld korrekt erkennen und unterstützen können.

Hinweis: Die native Formatprüfung des Browsers (z. B. über _pattern oder _required) wirkt sich nicht auf die Fehlerdarstellung der Komponente aus. Fehlermeldung und aria-invalid werden ausschließlich über _msg in Verbindung mit _touched gesteuert.

Tastatursteuerung​

Die Tastaturbedienung wird durch den Browser und das Betriebssystem bestimmt. Daher können sich einzelne Tastaturfunktionen je nach Browser und Endgerät unterscheiden.

Typischerweise werden folgende Funktionen unterstützt:

TasteFunktion
TabFokus auf das Eingabefeld bzw. das nächste fokussierbare Element setzen.
Shift+TabFokus auf das vorherige fokussierbare Element setzen.
Pfeil-Tasten (links/rechts)Cursor innerhalb des Eingabewerts bewegen.
Pos1 / EndeCursor an den Anfang bzw. das Ende des Eingabewerts setzen.
EnterUmgebendes Formular absenden.

Hinweis: Das Absenden per Enter wird von KoliBri ergänzt, da das native Element im Shadow DOM der Komponente liegt: Befindet sich die Komponente innerhalb eines form- bzw. kol-form-Elements, sucht sie dieses – auch über Shadow-DOM-Grenzen hinweg – und löst dort das Absenden aus.

Ist _visibilityToggle aktiviert, folgt der Sichtbarkeitsumschalter in der Tab-Reihenfolge direkt auf das Passwortfeld. Er wird mit Enter oder Leertaste betätigt; anschließend liegt der Fokus wieder im Passwortfeld.

Best Practices / Empfehlungen​

  • Setzen Sie _autoComplete passend zum Anwendungsfall ein. Verwenden Sie 'current-password' für Anmeldungen und 'new-password' für die Vergabe neuer Passwörter, damit Browser und Passwort-Manager das Eingabefeld korrekt erkennen und unterstützen können.
  • Nutzen Sie _visibilityToggle, wenn Nutzende ihre Passworteingabe vor dem Absenden überprüfen können sollen. Berücksichtigen Sie dabei, ob das Anzeigen des Passworts in der jeweiligen Nutzungssituation angemessen ist.
  • Formulieren Sie Passwortanforderungen vorab über _hint und Validierungsfehler konkret über _msg, damit Nutzende wissen, wie sie die Eingabe korrigieren können.
  • Begrenzen Sie die Passwortlänge nur, wenn es fachlich erforderlich ist, und wählen Sie mit _maxLengthBehavior das zum Anwendungsfall passende Verhalten.
  • Verhindern Sie das Einfügen von Passwörtern nicht, damit Passwort-Manager und Kopierfunktionen genutzt werden können.
  • Verwenden Sie _placeholder ausschließlich als zusätzliche Orientierung und nicht als Ersatz für eine aussagekräftige Beschriftung (_label).

Anwendungsfälle​

  • Eingabe eines Passworts bei der Anmeldung an einer Anwendung
  • Vergabe eines neuen Passworts bei der Registrierung eines Benutzerkontos
  • Festlegen oder Ändern eines Passworts in den Kontoeinstellungen
  • Bestätigung eines neuen Passworts in Registrierungs- oder Änderungsformularen
  • Eingabe eines Passworts zur Authentifizierung besonders geschützter Aktionen

FAQ​

Wann sollte ich _visibilityToggle verwenden?
Nutzen Sie _visibilityToggle, wenn Nutzende ihre Passworteingabe vor dem Absenden überprüfen können sollen, beispielsweise bei der Vergabe komplexer Passwörter. Berücksichtigen Sie dabei, ob das Anzeigen des Passworts in der jeweiligen Nutzungssituation angemessen ist.

Kann ich den Sichtbarkeitsumschalter weiterhin über _variant aktivieren?
Die frühere Aktivierung über _variant: 'visibility-toggle' wird aus Gründen der Abwärtskompatibilität noch unterstützt, soll aber künftig entfallen. Verwenden Sie stattdessen _visibilityToggle.

Wie kann ich die Länge eines Passworts begrenzen?
Mit _maxLength legen Sie die maximale Zeichenanzahl fest. _maxLengthBehavior: 'hard' (Standard) verhindert weitere Eingaben nach Erreichen der Grenze – auch ohne Zeichenzähler. Bei 'soft' sind weitere Eingaben möglich; ist _hasCounter gesetzt, zeigt der Zähler die noch verfügbaren bzw. überzähligen Zeichen an.

Wie sollte _autoComplete verwendet werden?
Verwenden Sie 'current-password' für Anmeldungen und 'new-password' für die Vergabe neuer Passwörter. Dadurch können Browser und Passwort-Manager das Eingabefeld korrekt erkennen und unterstützen. Den Wert 'on' sollten Sie für Passwortfelder nicht verwenden.

Kann ich zusätzliche Passwortregeln prüfen?
Ja. Nutzen Sie beispielsweise _pattern oder eine anwendungsspezifische Validierung, um zusätzliche Anforderungen wie Mindestlänge, Sonderzeichen oder bestimmte Passwortregeln umzusetzen. Das Prüfergebnis zeigen Sie über _msg an.

Playground​

Testen Sie die verschiedenen Eigenschaften des InputPassword-Feldes:

Icons
Message
Tooltip Align
<KolInputPassword _label="Passwort" _visibilityToggle={true} />

Funktionalitäten​

Einfaches Eingabefeld​

Jedes Feld benötigt mindestens ein Label (_label), um für alle Nutzenden verständlich und zugänglich zu sein. Das Label wird als natives label-Element mit dem Feld verknüpft.

<KolInputPassword _label="Passwort" _visibilityToggle={false} />

Formularattribute​

Mit den folgenden Properties passen Sie das Feld an gängige Formularanforderungen an:

  • _disabled: Deaktiviert das Feld. Deaktivierte Felder sind nicht fokussierbar und können nicht bearbeitet werden (mit Bedacht verwenden!).

  • _readOnly: Verhindert die Bearbeitung des Feldes. Das Feld bleibt fokussierbar und lesbar. Hinter der Beschriftung erscheint zusätzlich der Hinweis „(schreibgeschützt)“; er ist vor assistiven Technologien verborgen, da der Zustand bereits über das native readonly-Attribut vermittelt wird.

  • _required: Kennzeichnet das Feld als Pflichtfeld.

Die Properties werden 1:1 auf die gleichnamigen nativen HTML-Attribute des input-Elements übertragen. _disabled deaktiviert zusätzlich den Sichtbarkeitsumschalter.

<KolInputPassword _label="Passwort" _visibilityToggle={true} />

Hinweistexte und Fehlermeldungen​

Mit _hint und _msg geben Sie Nutzenden zusätzliche Orientierung zur Eingabe und machen Validierungsfehler unmittelbar am Feld sichtbar:

  • _hint: Ergänzende Hinweise zur Eingabe (wird immer angezeigt und über aria-describedby mit dem Feld verknüpft)
  • _msg: Fehlermeldungen oder Validierungshinweise (wird nur in Verbindung mit _touched angezeigt)
  • _touched: Zeigt an, ob das Feld von Nutzenden bereits angefasst wurde, und steuert damit, ob _msg sichtbar wird
  • _hideMsg: Unterdrückt die Fehlermeldung am Feld, wenn sie an anderer Stelle dargestellt wird

Hinweis: _msg wird erst dann eingeblendet, wenn _touched auf true gesetzt ist. So werden Validierungsfehler nicht bereits beim ersten Rendern, sondern erst nach einer Interaktion mit dem Feld angezeigt. Handelt es sich um eine Fehlermeldung, wird das Feld zusätzlich über aria-invalid als ungültig gekennzeichnet.

Anwendungsfall für _hideMsg: Besteht eine fachliche Einheit aus mehreren Eingabefeldern innerhalb eines Field-Sets, beispielsweise ein sechsstelliger Bestätigungscode mit einem einzelnen Feld je Stelle, kann eine gemeinsame Fehlermeldung für die gesamte Gruppe sinnvoller sein als eine Meldung je Einzelfeld. In diesem Fall unterdrücken Sie die Fehlermeldung an den einzelnen Feldern über _hideMsg und stellen sie stattdessen einmalig am Field-Set dar.

Wichtig: _hideMsg blendet die Fehlermeldung nicht nur visuell aus. Die Meldung wird weder gerendert noch über aria-describedby mit dem Feld verknüpft – lediglich die Kennzeichnung über aria-invalid bleibt erhalten. Stellen Sie daher sicher, dass die gemeinsame Fehlermeldung auf Anwendungsebene für alle Nutzenden, auch für Nutzende assistiver Technologien, wahrnehmbar ist.

Message
<KolInputPassword _hideMsg={false} _hint="Mindestens 12 Zeichen, davon mindestens eine Ziffer" _label="Neues Passwort" _msg={{ "_description": "Das Passwort muss mindestens 12 Zeichen lang sein." }} _touched={true} _visibilityToggle={true} />

Sichtbarkeitsumschalter​

Mit _visibilityToggle blenden Sie am Ende des Feldes einen Button ein, mit dem Nutzende das eingegebene Passwort im Klartext anzeigen und wieder verbergen können. Der Sichtbarkeitsumschalter ist standardmäßig deaktiviert. Er wird als Icon-Button ohne sichtbare Beschriftung dargestellt; sein zugänglicher Name benennt die jeweils auslösbare Aktion und wechselt zwischen „einblenden“ und „ausblenden“, das Icon zwischen geöffnetem und geschlossenem Auge. Der Button ist per Tastatur erreichbar und wird zusammen mit dem Feld deaktiviert (_disabled). Nach dem Umschalten liegt der Fokus wieder im Passwortfeld.

<KolInputPassword _label="Passwort" _value="Geheim123" _visibilityToggle={true} />

Zeichenbegrenzung und Zeichenzähler​

Mit _maxLength, _maxLengthBehavior und _hasCounter begrenzen Sie die Eingabelänge und geben Nutzenden gleichzeitig Rückmeldung über die bereits eingegebenen bzw. noch verfügbaren Zeichen.

Properties

PropertyTypStandardBeschreibung
_hasCounterbooleanfalseBlendet den Zeichenzähler ein. Ohne dieses Property wird kein Zähler ausgegeben.
_maxLengthnumber–Maximale Anzahl erlaubter Zeichen.
_maxLengthBehavior'hard' | 'soft''hard'Legt fest, wie die Grenze aus _maxLength behandelt wird:
- hard: Setzt das native maxlength-Attribut und verhindert weitere Eingaben – auch ohne Zähler.
- soft: Lässt weitere Eingaben zu; der Zähler zeigt verbleibende bzw. überschrittene Zeichen an.

Ausgabevarianten des Zählers

Fall_hasCounter_maxLength_maxLengthBehaviorSichtbarer Text
1(leer) oder false––– (kein Zähler)
2true(leer)(leer) oder hardn Zeichen
3true50(leer) oder hardn/50 Zeichen
4true50softnoch 30 Zeichen verfügbar
(bzw. 5 Zeichen zu viel)

Hinweis: Bei _maxLengthBehavior="soft" wird das native maxlength-Attribut nicht gesetzt. Die Einhaltung der Zeichengrenze muss dann auf Anwendungsebene validiert werden. Ohne _maxLength wird bei soft kein Zähler angezeigt.

<KolInputPassword _hasCounter={true} _label="Passwort" _maxLength={20} _visibilityToggle={true} />

Autovervollständigung​

Mit _autoComplete teilen Sie Browsern und Passwort-Managern mit, welche Art von Passwort erwartet wird. Der Standardwert ist 'off'. Verwenden Sie 'current-password' für Anmeldungen und 'new-password' für die Vergabe neuer Passwörter. Beim Wert 'on' gibt KoliBri einen Entwicklerhinweis aus.

<KolInputPassword _autoComplete="current-password" _label="Passwort" _visibilityToggle={true} />

Placeholder​

Mit _placeholder zeigen Sie einen Platzhaltertext an, solange noch kein Wert eingegeben bzw. ausgewählt ist – etwa ein Format- oder Eingabebeispiel. Der Platzhalter ist kein Ersatz für die Beschriftung (_label), da er nach der Eingabe verschwindet und von assistiven Technologien nicht zuverlässig ausgegeben wird.

<KolInputPassword _label="Passwort" _placeholder="Passwort eingeben" _visibilityToggle={true} />

Label ausblenden​

Mit _hideLabel blenden Sie das Label visuell aus, um das Feld kompakter zu gestalten. Für assistive Technologien bleibt die Beschriftung als zugänglicher Name (aria-label) weiterhin verfügbar; sehende Nutzende erhalten sie bei Maus-Hover und Tastaturfokus als Tooltip.

<KolInputPassword _hideLabel={false} _label="Passwort" _visibilityToggle={true} />

Icons​

Mit _icons versehen Sie das Feld links und/oder rechts mit zusätzlichen Icons, um visuellen Kontext zu geben.

Verfügbare Positionen sind:

  • left: Icon links vom Feld
  • right: Icon rechts vom Feld

Wird ein Icon nur über seine Icon-Klasse angegeben, gilt es als dekorativ und wird vor assistiven Technologien verborgen. Trägt ein Icon eine Information, die nicht bereits aus Label oder Hinweis hervorgeht, übergeben Sie es als Objekt mit label – das Icon erhält dann eine zugängliche Beschriftung.

Icons
<KolInputPassword _icons={{ "left": "kolicon-kolibri" }} _label="Passwort" _visibilityToggle={true} />

SmartButton​

Mit _smartButton platzieren Sie einen Button mit beliebiger Aktion direkt im Eingabefeld, etwa um eine zugehörige Funktion griffbereit anzubieten. Der SmartButton wird immer als Icon-Button ohne sichtbare Beschriftung dargestellt; sein _label dient als zugänglicher Name und muss die Aktion daher eindeutig beschreiben. Der SmartButton ist per Tastatur erreichbar und wird zusammen mit dem Feld deaktiviert (_disabled).

Ist zusätzlich _visibilityToggle aktiviert, werden SmartButton und Sichtbarkeitsumschalter nebeneinander am Ende des Feldes dargestellt.

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

API​

Events​

Zur Behandlung von Events bzw. Callbacks siehe .

EventAuslöserValue
clickPasswortfeld wird angeklickt-
focusPasswortfeld wird fokussiert-
blurPasswortfeld verliert Fokus-
keydownTaste wird im Passwortfeld gedrückt-
inputWert wird durch Eingabe geändertAktueller Wert des Passwortfelds
changeEingabe wurde abgeschlossenAktueller Wert des Passwortfelds

Overview​

The Password input type creates an input field for passwords. The input is masked with dot symbols.

Properties​

PropertyAttributeDescriptionTypeDefault
_accessKey_access-keyDefines the key combination that can be used to trigger or focus the component's interactive element.string | undefinedundefined
_ariaDetails_aria-detailsReferences an external element by ID that provides accessible details for this input. Uses ElementInternals.ariaDetailsElements to cross the Shadow DOM boundary. Supported by desktop screen readers (NVDA, JAWS with Chrome/Firefox). Not yet supported by mobile screen readers (TalkBack, VoiceOver iOS).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.string | undefined | { right?: IconOrIconClass | undefined; left?: IconOrIconClass | undefined; }undefined
_infoPopover_info-popoverDefines the informational popover after the label.anyundefined
_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" | "_label" | "_level" | "_variant" | "_hasCloser"> & { _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; } & { _ariaExpanded?: boolean | undefined; _tabIndex?: number | undefined; _value?: StencilUnknown; _accessKey?: string | undefined; _role?: "tab" | "treeitem" | undefined; _ariaControls?: string | undefined; _ariaDescription?: string | undefined; _ariaSelected?: boolean | undefined; _on?: ButtonCallbacksPropType<StencilUnknown> | undefined; _type?: "button" | "reset" | "submit" | undefined; _variant?: VariantClassNamePropType | 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; }undefined
_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
_variant_variantDefines which variant should be used for presentation.string | string[] | undefinedundefined
_visibilityToggle_visibility-toggleActivates the show password buttonboolean | undefinedfalse

Methods​

click​

click() => Promise<void>

Clicks the primary interactive element inside this component.

Returns​

Type: Promise<void>

focus(options?: KolFocusOptions) => Promise<void>​

Sets focus on the internal element.

Parameters​
NameTypeDescription
optionsKolFocusOptions | undefined
Returns​

Type: Promise<void>

getValue() => Promise<string | undefined>​

Returns the current value.

Returns​

Type: Promise<string | undefined>

Slots​

SlotDescription
The label of the input field.
"expert"Custom label content, e.g. for rich text or icons. https://public-ui.github.io/docs/concepts/expert-slot