diff --git a/core/modules/outside_in/js/outside_in.es6.js b/core/modules/outside_in/js/outside_in.es6.js index 66708cea0d..32a5556eca 100644 --- a/core/modules/outside_in/js/outside_in.es6.js +++ b/core/modules/outside_in/js/outside_in.es6.js @@ -9,6 +9,8 @@ const itemsToToggleSelector = '[data-off-canvas-main-canvas], #toolbar-bar, [data-drupal-outsidein="editable"] a, [data-drupal-outsidein="editable"] button'; const contextualItemsSelector = '[data-contextual-id] a, [data-contextual-id] button'; const quickEditItemSelector = '[data-quickedit-entity-id]'; + const excludedLinksSelector = '[data-outside-in-exclude] [data-outside-in-edit]'; + /** * Reacts to contextual links being added. @@ -21,6 +23,10 @@ * @listens event:drupalContextualLinkAdded */ $(document).on('drupalContextualLinkAdded', (event, data) => { + // Remove contextual links that should be excluded. + // @see outside_in_block_view_alter(). + $(excludedLinksSelector).remove(); + // Bind Ajax behaviors to all items showing the class. // @todo Fix contextual links to work with use-ajax links in // https://www.drupal.org/node/2764931. diff --git a/core/modules/outside_in/js/outside_in.js b/core/modules/outside_in/js/outside_in.js index fb4410c06b..c7d73056f2 100644 --- a/core/modules/outside_in/js/outside_in.js +++ b/core/modules/outside_in/js/outside_in.js @@ -14,8 +14,6 @@ var excludedLinksSelector = '[data-outside-in-exclude] [data-outside-in-edit]'; $(document).on('drupalContextualLinkAdded', function (event, data) { - // Remove contextual links that should be excluded. - // @see outside_in_block_view_alter(). $(excludedLinksSelector).remove(); Drupal.attachBehaviors(data.$el[0]); @@ -171,4 +169,4 @@ } } }); -})(jQuery, Drupal); +})(jQuery, Drupal); \ No newline at end of file diff --git a/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php b/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php index 055a8d8469..32be2b4a8b 100644 --- a/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php +++ b/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php @@ -474,17 +474,19 @@ public function getBlockSelector(Block $block) { */ public function testBlockExcluded() { $web_assert = $this->assertSession(); + + $non_excluded_block = $this->placeBlock('system_powered_by_block'); $excluded_block_plugin_ids = ['page_title_block', 'system_main_block']; $block_selectors = []; // Place blocks that should be excluded. foreach ($excluded_block_plugin_ids as $excluded_block_plugin_id) { // The block HTML 'id' attribute will be "block-[block_id]". - $block_selectors[] = '#block-' . $this->placeBlock($excluded_block_plugin_id)->id(); + $block_selectors[] = $this->getBlockSelector($this->placeBlock($excluded_block_plugin_id)); } $this->drupalGet('user'); // Assert that block has been marked as "editable" and contextual that // should exist does. - $web_assert->elementExists('css', "#block-powered[data-drupal-outsidein=\"editable\"] [data-outside-in-edit]"); + $web_assert->elementExists('css', $this->getBlockSelector($non_excluded_block) . "[data-drupal-outsidein=\"editable\"]"); // Check each block that should be excluded. foreach ($block_selectors as $block_selector) { // Assert block itself exists.