diff --git a/core/modules/contextual/js/contextual.toolbar.js b/core/modules/contextual/js/contextual.toolbar.js index 2cbac3e139..97602d6e27 100644 --- a/core/modules/contextual/js/contextual.toolbar.js +++ b/core/modules/contextual/js/contextual.toolbar.js @@ -32,8 +32,9 @@ // rather than view mode. // @see Drupal.contextualToolbar.VisualView.persist isViewing: - localStorage.getItem('Drupal.contextualToolbar.isViewing') !== - 'false', + localStorage.getItem('Drupal.contextualToolbar.isViewing') !== 'false' + ? true + : !$('body .contextual-region').length, }, { contextualCollection: Drupal.contextual.collection, diff --git a/core/modules/contextual/tests/src/FunctionalJavascript/EditModeTest.php b/core/modules/contextual/tests/src/FunctionalJavascript/EditModeTest.php index 6cb1b68c38..1bee065bb0 100644 --- a/core/modules/contextual/tests/src/FunctionalJavascript/EditModeTest.php +++ b/core/modules/contextual/tests/src/FunctionalJavascript/EditModeTest.php @@ -34,16 +34,30 @@ class EditModeTest extends WebDriverTestBase { */ protected $defaultTheme = 'stark'; + /** + * The administration theme name. + * + * @var string + */ + protected $adminTheme = 'claro'; + /** * {@inheritdoc} */ protected function setUp(): void { parent::setUp(); + \Drupal::service('theme_installer')->install([$this->adminTheme]); + \Drupal::configFactory() + ->getEditable('system.theme') + ->set('admin', $this->adminTheme) + ->save(); + $this->drupalLogin($this->createUser([ 'administer blocks', 'access contextual links', 'access toolbar', + 'view the administration theme', ])); $this->placeBlock('system_powered_by_block', ['id' => 'powered']); } @@ -86,6 +100,12 @@ public function testEditModeEnableDisable() { // correct after toggling the edit mode at least once. $this->assertAnnounceEditMode(); $this->assertSame($expected_restricted_tab_count, $this->getTabbableElementsCount()); + + // Test while Edit Mode is enabled it doesn't interfere with pages with + // no contextual links. + $this->drupalGet('admin/structure/block'); + $web_assert->elementContains('css', 'h1.page-title', 'Block layout'); + $this->assertGreaterThan(0, $this->getTabbableElementsCount()); } }