Skip to content

9.3.0

Choose a tag to compare

@skerbis skerbis released this 10 Jul 11:42
· 68 commits to main since this release

Version 9.3.0

Neu

  • Renderer-Parität Demo/Smoke-Checks - Neue Demo-Seite demo_renderer_parity zur Gegenprobe von Parser-HTML und Flex-Repeater-Template-HTML inkl. Marker-Checks für Tooltip, Row-/Modal-Klassen und Full-Layout.
  • Optionale Row-Klassen für Auto-Column-Gruppen - Für automatisch erzeugte Column-Row-Wrapper können jetzt zusätzliche Klassen per data-group-column-row-class (Alias: data-group-row-class) gesetzt werden.
  • Optionale Row-Klassen für Modal-Wrapper - Zusätzliche Klassen für den Modal-Row-Wrapper sind jetzt per data-modal-row-class (Alias: data-group-row-class) möglich.
  • Einfaches visible_if für Einzelfelder - Über setVisibleIf($sourceField, $operator, $compareValue) lassen sich einzelne Felder direkt ein- und ausblenden, ohne zusätzliches Wrapper-Fieldset.
  • Builder-Optionen für beide Sichtbarkeitsmodi - Der Form Builder unterstützt jetzt sowohl feldbasiertes visible_if (Einzelfelder) als auch addConditionalFieldsetArea() für komplette Fieldset-Bereiche.
  • Neue Extended-Demo visible_if - Beispielmodul ergänzt, das beide Varianten kombiniert (Einzelfeld + Conditional-Fieldset + Repeater).

Behoben

  • Row/Column-Grundverhalten vereinheitlicht (klassischer Parser + Flex-Repeater) - addColumnElement() wird jetzt in allen relevanten Renderpfaden konsistent in row-Gruppen geführt. Damit ist kein manueller HTML-Workaround mit addHtml('<div class="row">') mehr nötig.
  • Modal-Wrapper auf Bootstrap-Row ausgerichtet - Der Modal-Button-Wrapper rendert jetzt konsistent als row form-group (klassischer Parser und Flex-Repeater), damit col-*-Spalten erwartungsgemäß funktionieren.
  • setTooltipInfo() im Flex-Repeater funktionsgleich zum Parser - Label- und Tooltip-Rendering laufen jetzt über einen gemeinsamen internen Renderer. Dadurch wird der Tooltip im Repeater nicht mehr ignoriert und die Label-Aufbereitung (inkl. Sprach-Array-Fallback) bleibt über beide Pfade konsistent.
  • Default-Tooltip-Icon angepasst - Wenn bei setTooltipInfo() kein eigenes Icon übergeben wird, verwendet MForm jetzt standardmäßig fa-info-circle statt fa-exclamation.
  • Label-Auflösung für Wrapper/Navigation vereinheitlicht - Repeater-, Modal-, Collapse- und Tab-Labels verwenden jetzt in beiden Renderpfaden dieselbe locale-fähige Auflösung (statt „erstes Array-Element“). Das reduziert Drift bei mehrsprachigen Label-Arrays.
  • Tabs in beiden Pfaden generell angeglichen - Active-/Pull-Right-Auswertung, Nav-Klassenbildung, Layout-/Style-Flags (vertical/modern) sowie die Bereinigung tab-spezifischer Meta-Attribute sind jetzt in Parser und Flex-Repeater konsistent umgesetzt (inkl. robuster Truthy-Auswertung für true/1).
  • Selectpicker in Repeatern stabilisiert - Wenn bei .selectpicker kein explizites data-container gesetzt ist, wird beim Initialisieren standardmäßig body verwendet. Das verhindert falsch angedockte Dropdowns in verschachtelten Wrappern/Reapeatern.
  • Copy/Paste-UX im Repeater entkoppelt und bereinigt - Das Kopieren ist jetzt eine klare Aktion ohne klebrigen Toggle-Zustand. Die Einfügen-Buttons folgen konsequent dem Clipboard-Status und bleiben nicht mehr unbeabsichtigt sichtbar.
  • Clipboard auf Modultyp + Repeater begrenzt - Ein kopiertes Item kann jetzt nur noch in Blöcken desselben Modultyps und im selben Repeater eingefügt werden. Dadurch erscheinen Einfügen-Aktionen nicht mehr in fachfremden Bereichen.
  • Toolbar-Einfügen semantisch aufgeteilt - Oben wird jetzt am Anfang eingefügt, unten am Ende. Beide Buttons bleiben kompakt mit dem Label „Einfügen“, die genaue Position wird über den Title vermittelt.
  • Kopieren beenden kompakt und eindeutig - Für den aktiven Clipboard-Zustand gibt es ein eigenes Symbol (Copy mit X-Overlay) inklusive Tooltip-Titel „Kopieren beenden“, damit der Exit aus dem Copy-Modus sofort erkennbar ist.
  • Style-Fixes für Repeater-Aktionsbuttons - Die Buttonflächen und Hover-Zustände im Flex-Repeater wurden für Light- und Dark-Mode vereinheitlicht. Der Plus-Button bleibt grün, der Delete-Button wieder klar als weißer Danger-Button mit rotem Icon erkennbar, und die Icon-Kontraste bleiben in beiden Dark-Modi sauber lesbar.
  • Einfache Feldparität im Flex-Repeater erweitert - datetime wird im Repeater-Template jetzt direkt gerendert, Textfelder unterstützen Datalist-Optionen analog zum Parser, und markitup wird bewusst als normale textarea-Fallback-Ausgabe behandelt.
  • Password-Input in beiden Renderpfaden angeglichen - password wird jetzt wie andere einfache Input-Typen sowohl im klassischen Parser als auch im Flex-Repeater konsistent als Eingabefeld gerendert.
  • Conditional Fieldset im Builder korrekt generiert - Für bedingte Fieldsets wird kein doppeltes verschachteltes Fieldset mehr erzeugt.
  • setVisibleIf() im Top-Level-Codegenerator repariert - Die Builder-Ausgabe erzeugt jetzt gültiges Method-Chaining und zerschießt keine nachfolgenden Feldaufrufe mehr.
  • visible_if im Flex-Repeater funktionsfähig - Die Condition-Quellfeldsuche erkennt jetzt auch Repeater-Felder zuverlässig (inkl. Toggle/Checkbox-Fälle), sodass setVisibleIf('toggle_checkbox', '=', '1') korrekt reagiert.