Problem/Motivation

Currently in the Layout Builder UI all block plugins are built and if the content is empty a preview fallback is applied if possible and otherwise a generic fallback.

One problem with this approach is block plugins using forms #3045171: Form blocks rendered inside layout builder break save
And there might be more undiscovered problems that we are not aware of.

#3027653: Allow block and layout plugins to determine if they are being previewed attempts to solve this by allowing a plugin to know if it’s being previewed or not.

This issue proposes an alternative solution.

Add an optional interface, PreviewBuildInterface that exposes a “buildPreview” method. If the block plugin implements that interface, the Layout Builder UI will call that method for its rendering of the block. If not, a fallback will be used. This removes all the logic to try to determine if the block works in the UI.

Additionally, it creates a distinction between preview and fallback.

Plugins build method doesn’t have to conditionally render for preview.

All block plugins would work in Layout Builder UI (the fallback) and is not required to be compliant. This is less error prone than guessing if the block contains something that would break the UI.

Most plugins could simply return the build to be compliant (no complexity required)

Proposed resolution

Add a new interface.
Implement in core’s block plugins.

Comments

johndevman created an issue. See original summary.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.0-alpha1 will be released the week of October 14th, 2019, which means new developments and disruptive changes should now be targeted against the 8.9.x-dev branch. (Any changes to 8.9.x will also be committed to 9.0.x in preparation for Drupal 9’s release, but some changes like significant feature additions will be deferred to 9.1.x.). For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.1.x-dev

Drupal 8.9.0-beta1 was released on March 20, 2020. 8.9.x is the final, long-term support (LTS) minor release of Drupal 8, which means new developments and disruptive changes should now be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 9.1.x-dev » 9.2.x-dev

Drupal 9.1.0-alpha1 will be released the week of October 19, 2020, which means new developments and disruptive changes should now be targeted for the 9.2.x-dev branch. For more information see the Drupal 9 minor version schedule and the Allowed changes during the Drupal 9 release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Drupal 9.2.0-alpha1 will be released the week of May 3, 2021, which means new developments and disruptive changes should now be targeted for the 9.3.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.0-rc1 was released on November 26, 2021, which means new developments and disruptive changes should now be targeted for the 9.4.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.0-alpha1 was released on May 6, 2022, which means new developments and disruptive changes should now be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.5.x-dev » 10.1.x-dev

Drupal 9.5.0-beta2 and Drupal 10.0.0-beta2 were released on September 29, 2022, which means new developments and disruptive changes should now be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 10.1.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch, which currently accepts only minor-version allowed changes. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

danielveza’s picture

Status: Active » Postponed (maintainer needs more info)
danielveza’s picture

Status: Postponed (maintainer needs more info) » Closed (outdated)

As per #10, it appears that another issue has already provided the required functionality. There has been no further updates to this issue since the last comment over three months ago, so I'm now marking this as closed.

Thanks!