From b67a67f2f8666e9044d9292126498954be62b753 Mon Sep 17 00:00:00 2001 From: brookewp Date: Tue, 25 Mar 2025 16:46:31 -0700 Subject: [PATCH 1/2] Add fix inspired by #428 Signed-off-by: brookewp --- inc/Editor/BlockManagement/ConfigRegistry.php | 16 +++++++++++----- .../placeholders/ItemSelectQueryType.tsx | 19 ++++++------------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/inc/Editor/BlockManagement/ConfigRegistry.php b/inc/Editor/BlockManagement/ConfigRegistry.php index c8141f737..701c80790 100644 --- a/inc/Editor/BlockManagement/ConfigRegistry.php +++ b/inc/Editor/BlockManagement/ConfigRegistry.php @@ -50,8 +50,14 @@ public static function register_block( array $user_config = [] ): bool|WP_Error $display_query = self::inflate_query( $user_config[ self::RENDER_QUERY_KEY ]['query'] ); $input_schema = $display_query->get_input_schema(); + $output_schema = $display_query->get_output_schema(); - $is_loop = $user_config[ self::RENDER_QUERY_KEY ]['loop'] ?? false; + // Check if any variables are required + $has_required_variables = array_reduce( + array_column( $input_schema, 'required' ), + fn( $carry, $required ) => $carry || ( $required ?? true ), + false + ); // Build the base configuration for the block. This is our own internal // configuration, not what will be passed to WordPress's register_block_type. @@ -61,7 +67,7 @@ public static function register_block( array $user_config = [] ): bool|WP_Error 'icon' => $user_config['icon'] ?? 'cloud', 'instructions' => $user_config['instructions'] ?? null, 'name' => $block_name, - 'loop' => $is_loop, + 'loop' => $user_config[ self::RENDER_QUERY_KEY ]['loop'] ?? false, 'overrides' => $user_config['overrides'] ?? [], 'patterns' => [], 'queries' => [ @@ -74,13 +80,13 @@ public static function register_block( array $user_config = [] ): bool|WP_Error return [ 'name' => $input_var['name'] ?? $slug, 'required' => $input_var['required'] ?? true, - 'slug' => $slug, + 'slug' => $slug, 'type' => $input_var['type'] ?? 'string', ]; }, array_keys( $input_schema ), array_values( $input_schema ) ), - 'name' => $is_loop ? 'Collection' : 'Manual input', + 'name' => $has_required_variables ? 'Manual input' : 'Load collection', 'query_key' => self::DISPLAY_QUERY_KEY, - 'type' => $is_loop ? 'loop' : 'input', + 'type' => $has_required_variables ? 'input' : 'collection', ], ], 'title' => $block_title, diff --git a/src/blocks/remote-data-container/components/placeholders/ItemSelectQueryType.tsx b/src/blocks/remote-data-container/components/placeholders/ItemSelectQueryType.tsx index a57fdb0c5..05d41377b 100644 --- a/src/blocks/remote-data-container/components/placeholders/ItemSelectQueryType.tsx +++ b/src/blocks/remote-data-container/components/placeholders/ItemSelectQueryType.tsx @@ -38,8 +38,13 @@ export function ItemSelectQueryType( props: ItemSelectQueryTypeProps ) { { ...selectorProps } /> ); + case 'collection': + return ( + + ); case 'input': - case 'loop': if ( selector.inputs.length === 1 && selector.inputs[ 0 ] ) { return ( ; } - return ( - - ); - return null; } ) } From a233441dfa84eb1d725d9d5d3c0321394b0b0375 Mon Sep 17 00:00:00 2001 From: brookewp Date: Tue, 25 Mar 2025 17:10:01 -0700 Subject: [PATCH 2/2] Failing test fixes Signed-off-by: brookewp --- inc/Editor/BlockManagement/ConfigRegistry.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/inc/Editor/BlockManagement/ConfigRegistry.php b/inc/Editor/BlockManagement/ConfigRegistry.php index 701c80790..ca719b324 100644 --- a/inc/Editor/BlockManagement/ConfigRegistry.php +++ b/inc/Editor/BlockManagement/ConfigRegistry.php @@ -50,7 +50,6 @@ public static function register_block( array $user_config = [] ): bool|WP_Error $display_query = self::inflate_query( $user_config[ self::RENDER_QUERY_KEY ]['query'] ); $input_schema = $display_query->get_input_schema(); - $output_schema = $display_query->get_output_schema(); // Check if any variables are required $has_required_variables = array_reduce( @@ -80,7 +79,7 @@ public static function register_block( array $user_config = [] ): bool|WP_Error return [ 'name' => $input_var['name'] ?? $slug, 'required' => $input_var['required'] ?? true, - 'slug' => $slug, + 'slug' => $slug, 'type' => $input_var['type'] ?? 'string', ]; }, array_keys( $input_schema ), array_values( $input_schema ) ),