Overview

BlockComponent needs something similar to what #3532514: Gracefully handle components in active development: ensure great DX introduced for the sdc and js ComponentSource plugins.

What's tricky here is that: A) required things are not necessarily top-level, they could occur at deeply nested "block plugin settings" levels too, B) #3521221: Block plugins need to be able to update their settings in multiple different storage implementations is not yet done in core.

Proposed resolution

I think we can actually keep track of which "config schema property paths" are known to be required, so we could track (store) those in the Component config entity:

diff --git a/config/schema/canvas.schema.yml b/config/schema/canvas.schema.yml
index 7c7c57ee6..c5bc2d259 100644
--- a/config/schema/canvas.schema.yml
+++ b/config/schema/canvas.schema.yml
@@ -568,6 +568,12 @@ canvas.component_source_settings.block:
   mapping:
     default_settings:
       type: block.settings.[%parent.%parent.%parent.%parent.source_local_id]
+    required_settings_property_paths:
+      type: sequence
+      orderby: value
+      sequence:
+        type: string
+        label: 'Required property paths in block plugin settings'
 
 # The `fallback` plugin ID is the only one not required to specify a source-local ID.
 canvas.component_source_settings.fallback:

User interface changes

TBD

Comments

wim leers created an issue.