Skip to content

Input

Überblick

mmm-ng-input ist das generische Eingabefeld des Designsystems. Es unterstützt Standard-HTML-Typen, Form-Control-Anbindung, Fehlermeldungen, Maskierung und optional einen eingebetteten Number-Stepper.

Subkomponenten und Direktiven

  • mmm-ng-input: Hauptkomponente
  • [mmmStart]: Prefix-Inhalt
  • [mmmEnd]: Suffix-Inhalt
  • [mmmSupportingIcon]: unterstützendes Icon
  • interner Einsatz von mmm-counter-stepper bei numerischen Feldern

Inputs

InputTypBeschreibung
disabledbooleanDeaktiviert das Feld
readonlybooleanDeaktiviert die Bearbeitung des Feldes
valuestring | number | Date | nullExterner Wert
labelstringFeldlabel
type`‘text''email'
errorbooleanFehlerstatus
compactbooleanKompakter Modus
errorMessagestringFehlermeldung
supportingTextstringHilfetext
placeholderstringPlatzhalter im Hintergrund bei fokussiertem Textfeld
maskOptionsFactoryArgIMask-Konfiguration
clearablebooleanZeigt Clear-Aktion an
minnumberMinimale Zahl bei type="number"
maxnumberMaximale Zahl bei type="number"
stepnumberSchrittweite bei Zahlen
showNumberStepperbooleanZeigt den Number-Stepper

Outputs

OutputTypBeschreibung
valueChangestring | number | Date | nullEmpfohlen. Der fertig geparste Wert — bei type="number" bereits eine number
inputEventEmitter<CustomEvent<{ value: string | number }>>Native-angelehntes Input-Event
changeEventEmitter<CustomEvent<{ value: string | number }>>Native-angelehntes Change-Event

Die Komponente implementiert außerdem ControlValueAccessor.

Welches Output nehmen?

value ist ein model(), deshalb gibt es (valueChange) gratis dazu — und das ist in Angular-Code fast immer die richtige Wahl:

<!-- empfohlen: typisierter Wert, kein DOM-Zugriff, keine Konvertierung -->
<mmm-ng-input type="number" [value]="cols()" (valueChange)="cols.set($event)" />
<!-- funktioniert, ist aber Umweg über das DOM -->
<mmm-ng-input type="number" [value]="cols()" (input)="cols.set(+$any($event.target).value)" />

(input) und (change) liefern ein CustomEvent. Der Wert steht dort in detail.value; target zeigt auf das native <input>, damit auch $event.target.value funktioniert.

$event.target.value ist immer ein String — bei type="number" also "7", nicht 7. Wer damit rechnet, muss selbst konvertieren. (valueChange) und detail.value liefern die Zahl direkt.

SCSS-Variablen

Wichtige Variablen:

  • --mmm-input-border-radius
  • --mmm-input-height
  • --mmm-input-height-compact
  • --mmm-input-padding-inline
  • --mmm-input-content-gap
  • --mmm-input-label-offset-inline
  • --mmm-input-native-padding
  • --mmm-input-clear-padding
  • --mmm-input-clear-border-radius
  • --mmm-input-messages-gap

Hinweise

  • Maskierung wird über IMask eingebunden.
  • Im number-Modus können Pfeiltasten für Inkrement und Dekrement verwendet werden.
  • Prefix, Suffix und Supporting Icon werden als Content projiziert.

Beispiel

 <mmm-ng-input
    [disabled]="true"
    label="Telefon"
    type="tel"
    supportingText="Bitte mit Vorwahl eingeben"
    placeholder="Hier Telefonnummer eingeben"
></mmm-ng-input>

<mmm-ng-input
    error="true"
    label="Input Field"
    supportingText="Bitte mit Vorwahl eingeben"
    placeholder="Placeholder"
></mmm-ng-input>

<mmm-ng-input
    [compact]="true"
    label="Input Field"
    supportingText="Bitte mit Vorwahl eingeben"
    placeholder="Placeholder"
></mmm-ng-input>

<mmm-ng-input
    [maskOptions]="currencyMask"
    [compact]="true"
    [inputmode]="decimal"
    label="Input Field mit Euromaske"
    placeholder="Hier Betrag eingeben"
></mmm-ng-input>
Bitte mit Vorwahl eingeben
Bitte mit Vorwahl eingeben