You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
MForm-Integration: neuer Feldtyp a11y_datetime über MForm::registerFieldType() (MForm ≥10.0), registriert in boot.php wenn MForm verfügbar ist. Nutzung im Modul-Code: $form->addCustomField('a11y_datetime', $id, ['label' => '...', 'data-enableTime' => 'true']). Funktioniert sowohl im klassischen MForm-Formular als auch im Flex-Repeater (neue Klasse FriendsOfREDAXO\A11yDatetimeAddon\MFormFieldType, implementiert FieldTypeInterface). Anders als das YForm-Value-Feld bietet dieser Feldtyp kein eigenes Manager-Formular für Picker-Optionen — Optionen werden direkt als data-*-Attribute übergeben, analog zur manuellen HTML-Einbindung.
Hinweis: Der MForm-Formbuilder (visuelle Drag&Drop-Oberfläche) hat aktuell keine Registrierungs-API für Custom-Feldtypen aus Fremd-Addons — a11y_datetime erscheint daher nicht in der Builder-Palette, nur programmatisch über addCustomField() im Modul-Code nutzbar. Ein entsprechender Vorschlag wurde im MForm-Repository eingereicht.
Fixed
Init-Script (a11y_datetime_init.js): Bei jedem weiteren rex:ready (PJAX-Navigation, MBlock, MForm-Flex-Repeater, per Ajax nachgeladenes HTML) wurde das sichtbare Ersatzfeld (altInput) bereits initialisierter Picker selbst noch einmal als Picker initialisiert. Ursache: flatpickr übernimmt beim Anlegen des Ersatzfelds alle Klassen des Originalfelds, also auch .a11y_datetime, und die Init-Schleife erkannte nur das Originalfeld als erledigt. Sichtbar wurde das als verschachtelter zweiter Picker mit falschem Datum (der formatierte Anzeigetext wurde als Wert geparst, etwa 01.01.2026), leerer Uhrzeit und Konsolen-Warnungen Invalid date provided. Das Init-Script überspringt Ersatzfelder jetzt (isAltInputOfExistingPicker) und markiert sie zusätzlich direkt nach dem Anlegen mit data-a11y-datetime-initialized="1". Betrifft Datums- und Range-Picker. Der Fehler wurde erst durch das Entfernen des globalen Init-Guards (nächster Punkt) erreichbar.
Init-Script (a11y_datetime_init.js): ein globaler window.__a11yDatetimeInitRan-Guard verhinderte, dass nach dem ersten Laden der Seite jemals wieder ein Picker initialisiert wurde — betraf jede Form von dynamisch nachträglich eingefügtem Markup (REDAXO-PJAX-Navigation, MForm-Flex-Repeater-Items nach dem Klonen, Ajax-Inhalte). Der Guard war redundant (die eigentliche Mehrfach-Listener-Bindung war bereits separat über jQuery(document).data('a11y-datetime-rex-ready-bound') abgesichert) und wurde ersatzlos entfernt. Betraf auch schon die Vorgängerversion (flatpickr_init.js).
Vendor-Update auf a11y_datetime v5.2.9: behebt einen Bug im documentClick-Handler, der einen Klick außerhalb des Pickers zwar korrekt erkannte, aber nie tatsächlich close() aufrief — der Kalender blieb dadurch dauerhaft offen, unabhängig davon, wohin als Nächstes geklickt wurde. Bei mehreren Picker-Instanzen auf einer Seite (z. B. im MForm-Flex-Repeater) konnten dadurch mehrere Kalender gleichzeitig offen bleiben. Root Cause im Vendor-TypeScript-Quellcode gefunden und dort behoben (nicht nur im Addon umgangen).