Rebuild the editor around one sidebar and play motion by default in 1.11.0
The editor follows the Flatsome UX Builder: dark top bar with the device switch, one sidebar with tabs for elements, structure and page, an element view with breadcrumbs, property tabs and actions, element cards, a context menu in the preview and keyboard shortcuts that also work inside the preview. Entrance and hover effects play for every visitor unless the website chooses to respect the browser's reduced-motion preference (setting "motion", class "motion-respect" on <html>). Waiting blocks stay hidden until they scroll into view and are shown at once when the reader jumps past them. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
ebc16777d6
commit
a1f8b905cd
18 files changed
+723
-433
No files matched your search
+9
-8
@@ -1687,15 +1687,16 @@ final class CmsTest extends TestCase
|
||||
$html = $this->request('/')->getContent();
|
||||
self::assertStringContainsString('<span class="post-view" aria-hidden="true">Ansehen</span>', $html);
|
||||
|
||||
// Die Bewegung steht vollständig hinter der Bewegungsschranke, der Hinweis selbst nicht:
|
||||
// wer weniger Bewegung eingestellt hat, sieht ihn trotzdem.
|
||||
// Die Bewegung spielt für alle; beachtet die Website die Browservorgabe, nimmt ein
|
||||
// Überschreibblock hinter der Bewegungsschranke nur die Fahrt weg, der Hinweis bleibt.
|
||||
$effects = (string) file_get_contents(__DIR__.'/../public/assets/enhancements.css');
|
||||
// Der erste Abschnitt steht vor der ersten Schranke; alles dahinter ist geschützt.
|
||||
$guarded = explode('@media (prefers-reduced-motion: no-preference) {', $effects);
|
||||
$geschuetzt = implode('', array_slice($guarded, 1));
|
||||
self::assertStringContainsString('.post-card:hover, .post-card:focus-within {', $geschuetzt);
|
||||
self::assertStringContainsString('transform: scale(1.06)', $geschuetzt);
|
||||
self::assertStringNotContainsString('transform: translateY(-8px)', $guarded[0], 'Keine Bewegung außerhalb der Schranke.');
|
||||
self::assertStringContainsString('.post-card:hover, .post-card:focus-within {', $effects);
|
||||
self::assertStringContainsString('transform: scale(1.06)', $effects);
|
||||
$schranke = explode('@media (prefers-reduced-motion: reduce) {', $effects);
|
||||
self::assertCount(2, $schranke, 'Genau ein Überschreibblock für „Bewegung reduzieren“.');
|
||||
self::assertStringContainsString('html.motion-respect', $schranke[1]);
|
||||
self::assertStringContainsString('transform: none', $schranke[1]);
|
||||
self::assertStringNotContainsString('html.motion-respect', $schranke[0], 'Ohne Schranke gilt die Klasse nicht.');
|
||||
|
||||
// Und über die Tastatur erreichbar: der Zustand hängt auch an :focus-within.
|
||||
$site = (string) file_get_contents(__DIR__.'/../public/assets/site.css');
|
||||
|
||||
Reference in new issue
Block a user