Shield Docs

Design System

Web Components

shield-text-input

Text-Eingabefeld mit Label, Placeholder und Value-Event fuer Form-Flows.

Custom Stories

Freie Doku-Demos fuer Binding, Autofokus und imperative Methoden.

Text Input Basis (HTML)

Klassischer Einsatz mit Label und Placeholder.

Code
<shield-text-input label="E-Mail" placeholder="name@firma.de" value=""></shield-text-input>

Text Input Binding (Angular Island)

Control + valueChange Event in Angular.

Aktueller Angular-State: Hallo aus Angular in Astro

Code
import { Component } from '@angular/core';
import { ShieldTextInput } from '@shield/angular';

@Component({
  standalone: true,
  imports: [ShieldTextInput],
  template: `
    <shield-text-input label="Angular in Astro (Two-Way Binding)" placeholder="Schreib was..." [value]="value" (valueChange)="onValueChange($event)"></shield-text-input>
  `
})
export class AngularTextInputDemoComponent {
  value = 'Hallo aus Angular in Astro';

  onValueChange(event: CustomEvent<string>) {
    this.value = event.detail ?? '';
  }
}

Autofocus bei Initial-View (HTML)

Zweites Feld wird initial fokussiert.

Code
<shield-text-input label="Name" placeholder="Max Mustermann"></shield-text-input>
<shield-text-input label="Suche" placeholder="Direkt fokussiert" autofocus></shield-text-input>

Autofocus bei Initial-View (Angular Island)

Autofocus plus empfohlenes setFocus in ngAfterViewInit.

Code
import { Component, ElementRef, ViewChild } from '@angular/core';
import type { AfterViewInit } from '@angular/core';
import { ShieldTextInput } from '@shield/angular';

@Component({
  standalone: true,
  imports: [ShieldTextInput],
  template: `
    <shield-text-input label="Name" placeholder="Max Mustermann"></shield-text-input>
    <shield-text-input #autoField label="Suche" placeholder="Direkt fokussiert" [autofocus]="true"></shield-text-input>
  `
})
export class AngularTextInputAutofocusDemoComponent implements AfterViewInit {
  @ViewChild('autoField', { read: ElementRef }) autoField?: ElementRef<HTMLElement & {
    setFocus: () => Promise<void>;
  }>;

  ngAfterViewInit() {
    queueMicrotask(() => {
      void this.autoField?.nativeElement?.setFocus?.();
    });
  }
}

Hinweis: In Angular ist fuer verlassliches Initial-Fokusverhalten die Kombination aus autofocus und einem expliziten setFocus() nach dem Render empfohlen.

Imperative API (HTML)

Methoden setFocus, select und setBlur fuer gesteuerte Interaktion.

Code
<button type="button" onclick="document.getElementById('text-input-methods-demo')?.setFocus()">Focus</button>
<button type="button" onclick="document.getElementById('text-input-methods-demo')?.select()">Select</button>
<button type="button" onclick="document.getElementById('text-input-methods-demo')?.setBlur()">Blur</button>
<shield-text-input id="text-input-methods-demo" label="Ticket-ID" value="SHD-12345"></shield-text-input>

Imperative API (Angular Island)

Methoden via ElementRef aufrufen.

Aktueller Wert: SHD-12345

Code
import { Component, ElementRef, ViewChild } from '@angular/core';
import { ShieldTextInput } from '@shield/angular';

@Component({
  standalone: true,
  imports: [ShieldTextInput],
  template: `
    <button type="button" (click)="focusInput()">Focus</button>
    <button type="button" (click)="selectText()">Select</button>
    <button type="button" (click)="blurInput()">Blur</button>
    <shield-text-input #field label="Ticket-ID" [value]="value"></shield-text-input>
  `
})
export class AngularTextInputMethodsDemoComponent {
  @ViewChild('field', { read: ElementRef }) field?: ElementRef<HTMLElement & {
    setFocus: () => Promise<void>;
    setBlur: () => Promise<void>;
    select: () => Promise<void>;
  }>;

  value = 'SHD-12345';

  focusInput() { void this.field?.nativeElement?.setFocus?.(); }
  blurInput() { void this.field?.nativeElement?.setBlur?.(); }
  selectText() { void this.field?.nativeElement?.select?.(); }
}

Guidelines

  • Immer mit sichtbarem Label einsetzen.
  • Placeholder nur als Zusatzinfo nutzen.
  • Autofocus nur sparsam und kontextbezogen verwenden.
  • Fuer programmatische Steuerung setFocus/setBlur/select nutzen.
  • Fehlertexte klar und direkt am Feld zeigen.