Component config entities are incomplete: missing entries for optional props, causing errors in ComponentPropsForm

Created on 27 August 2024, 3 months ago
Updated 9 September 2024, 2 months ago

Overview

Perhaps it's premature to report these kinds of bugs since there is a lot changing right now, but will do anyway...

  1. Installed XB per these instructions .
  2. Clicked + to see components
  3. Dragged the "shoe button" into the desktop area
  4. Add more text to the shoe button title on the right sidebar
  5. Error popped up
  6. Went back to /xb/node/1 and tried again and got the same result

Proposed resolution

Debug and fix ;)

User interface changes

No error popup.

🐛 Bug report
Status

Fixed

Component

Config management

Created by

🇺🇸United States Kristen Pol Santa Cruz, CA, USA

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

  • Issue created by @Kristen Pol
  • 🇺🇸United States Kristen Pol Santa Cruz, CA, USA

    Note there are a number of errors in the logs like:

    Warning: Trying to access array offset on null in Drupal\experience_builder\Form\ComponentPropsForm->buildForm() (line 73 of /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php)
    
    Warning: Undefined array key "icon_position" in Drupal\experience_builder\Form\ComponentPropsForm->buildForm() (line 73 of /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php)
    
    Warning: Undefined array key "download" in Drupal\experience_builder\Form\ComponentPropsForm->buildForm() (line 73 of /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php)
    
  • 🇺🇸United States Kristen Pol Santa Cruz, CA, USA

    Tested the other components and many have the same problem (all the "shoe" ones). The heading and and hero components let me change their title text. When I upload an image for the image component, I'm redirected which is a different bug obviously but won't add another issue for that for now.

  • Assigned to Kristen Pol
  • Status changed to Closed: duplicate 3 months ago
  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺

    I predicted this problem, which is why I opened 📌 New component requirement: each SDC prop must have StorablePropShape Active , which is almost done and will fix this. Crediting you on that issue for reporting this 👍

  • Issue was unassigned.
  • Status changed to Active 3 months ago
  • 🇺🇸United States Kristen Pol Santa Cruz, CA, USA

    Reopening this one.

    📌 New component requirement: each SDC prop must have StorablePropShape Active

    is marked fixed but I just tried the latest code with a fresh install using these instructions and am getting the same behavior again.

    I don't see "Shoe Button" listed anymore, but I tried "Shoe Badge" with similar behavior.

    Logs:

    Warning: Undefined array key "pill" in Drupal\experience_builder\Form\ComponentPropsForm->buildForm() (line 73 of /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php)
    #0 /var/www/html/web/core/includes/bootstrap.inc(166): _drupal_error_handler_real()
    #1 /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php(73): _drupal_error_handler()
    #2 [internal function]: Drupal\experience_builder\Form\ComponentPropsForm->buildForm()
    #3 /var/www/html/web/core/lib/Drupal/Core/Form/FormBuilder.php(536): call_user_func_array()
    #4 /var/www/html/web/core/lib/Drupal/Core/Form/FormBuilder.php(284): Drupal\Core\Form\FormBuilder->retrieveForm()
    #5 /var/www/html/web/core/lib/Drupal/Core/Controller/FormController.php(73): Drupal\Core\Form\FormBuilder->buildForm()
    #6 [internal function]: Drupal\Core\Controller\FormController->getContentResult()
    #7 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array()
    #8 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(638): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
    #9 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(121): Drupal\Core\Render\Renderer->executeInRenderContext()
    #10 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext()
    #11 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
    #12 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw()
    #13 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/Session.php(53): Symfony\Component\HttpKernel\HttpKernel->handle()
    #14 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle()
    #15 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ContentLength.php(28): Drupal\Core\StackMiddleware\KernelPreHandle->handle()
    #16 /var/www/html/web/core/modules/big_pipe/src/StackMiddleware/ContentLength.php(32): Drupal\Core\StackMiddleware\ContentLength->handle()
    #17 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\big_pipe\StackMiddleware\ContentLength->handle()
    #18 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass()
    #19 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\page_cache\StackMiddleware\PageCache->handle()
    #20 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle()
    #21 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/AjaxPageState.php(36): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle()
    #22 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\AjaxPageState->handle()
    #23 /var/www/html/web/core/lib/Drupal/Core/DrupalKernel.php(741): Drupal\Core\StackMiddleware\StackedHttpKernel->handle()
    #24 /var/www/html/web/index.php(19): Drupal\Core\DrupalKernel->handle()
    #25 {main}
    
    Warning: Undefined array key "pulse" in Drupal\experience_builder\Form\ComponentPropsForm->buildForm() (line 73 of /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php)
    #0 /var/www/html/web/core/includes/bootstrap.inc(166): _drupal_error_handler_real()
    #1 /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php(73): _drupal_error_handler()
    #2 [internal function]: Drupal\experience_builder\Form\ComponentPropsForm->buildForm()
    #3 /var/www/html/web/core/lib/Drupal/Core/Form/FormBuilder.php(536): call_user_func_array()
    #4 /var/www/html/web/core/lib/Drupal/Core/Form/FormBuilder.php(284): Drupal\Core\Form\FormBuilder->retrieveForm()
    #5 /var/www/html/web/core/lib/Drupal/Core/Controller/FormController.php(73): Drupal\Core\Form\FormBuilder->buildForm()
    #6 [internal function]: Drupal\Core\Controller\FormController->getContentResult()
    #7 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array()
    #8 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(638): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
    #9 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(121): Drupal\Core\Render\Renderer->executeInRenderContext()
    #10 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext()
    #11 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
    #12 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw()
    #13 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/Session.php(53): Symfony\Component\HttpKernel\HttpKernel->handle()
    #14 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle()
    #15 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ContentLength.php(28): Drupal\Core\StackMiddleware\KernelPreHandle->handle()
    #16 /var/www/html/web/core/modules/big_pipe/src/StackMiddleware/ContentLength.php(32): Drupal\Core\StackMiddleware\ContentLength->handle()
    #17 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\big_pipe\StackMiddleware\ContentLength->handle()
    #18 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass()
    #19 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\page_cache\StackMiddleware\PageCache->handle()
    #20 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle()
    #21 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/AjaxPageState.php(36): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle()
    #22 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\AjaxPageState->handle()
    #23 /var/www/html/web/core/lib/Drupal/Core/DrupalKernel.php(741): Drupal\Core\StackMiddleware\StackedHttpKernel->handle()
    #24 /var/www/html/web/index.php(19): Drupal\Core\DrupalKernel->handle()
    #25 {main}
    
    Message	Warning: Trying to access array offset on null in Drupal\experience_builder\Form\ComponentPropsForm->buildForm() (line 73 of /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php)
    #0 /var/www/html/web/core/includes/bootstrap.inc(166): _drupal_error_handler_real()
    #1 /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php(73): _drupal_error_handler()
    #2 [internal function]: Drupal\experience_builder\Form\ComponentPropsForm->buildForm()
    #3 /var/www/html/web/core/lib/Drupal/Core/Form/FormBuilder.php(536): call_user_func_array()
    #4 /var/www/html/web/core/lib/Drupal/Core/Form/FormBuilder.php(284): Drupal\Core\Form\FormBuilder->retrieveForm()
    #5 /var/www/html/web/core/lib/Drupal/Core/Controller/FormController.php(73): Drupal\Core\Form\FormBuilder->buildForm()
    #6 [internal function]: Drupal\Core\Controller\FormController->getContentResult()
    #7 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array()
    #8 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(638): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
    #9 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(121): Drupal\Core\Render\Renderer->executeInRenderContext()
    #10 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext()
    #11 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
    #12 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw()
    #13 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/Session.php(53): Symfony\Component\HttpKernel\HttpKernel->handle()
    #14 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle()
    #15 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ContentLength.php(28): Drupal\Core\StackMiddleware\KernelPreHandle->handle()
    #16 /var/www/html/web/core/modules/big_pipe/src/StackMiddleware/ContentLength.php(32): Drupal\Core\StackMiddleware\ContentLength->handle()
    #17 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\big_pipe\StackMiddleware\ContentLength->handle()
    #18 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass()
    #19 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\page_cache\StackMiddleware\PageCache->handle()
    #20 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle()
    #21 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/AjaxPageState.php(36): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle()
    #22 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\AjaxPageState->handle()
    #23 /var/www/html/web/core/lib/Drupal/Core/DrupalKernel.php(741): Drupal\Core\StackMiddleware\StackedHttpKernel->handle()
    #24 /var/www/html/web/index.php(19): Drupal\Core\DrupalKernel->handle()
    #25 {main}
    
    Drupal\Core\Render\Component\Exception\InvalidComponentException: [pill] Integer value found, but a boolean or an object is required/n[pulse] String value found, but a boolean or an object is required in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 203 of /var/www/html/web/core/lib/Drupal/Core/Theme/Component/ComponentValidator.php).
    
    #0 /var/www/html/web/core/lib/Drupal/Core/Template/ComponentsTwigExtension.php(127): Drupal\Core\Theme\Component\ComponentValidator->validateProps()
    #1 /var/www/html/web/core/lib/Drupal/Core/Template/ComponentsTwigExtension.php(109): Drupal\Core\Template\ComponentsTwigExtension->doValidateProps()
    #2 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff_experience_builder:shoe_b_1MG5agHVvcJo_Pcqlpl97KFIk/uhIQQ8-FwrK24uki6fzvdY6lQCxoKjx76OBLorAG2fE.php(43): Drupal\Core\Template\ComponentsTwigExtension->validateProps()
    #3 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_a065b8b7ca093140df6d582ecb978039->doDisplay()
    #4 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff___string_template__6d15ed_pztJZ_2hkq2PSuj-eaXUPfFP6/fUxgD60nVLiTWXEJ4IvMJa47jIg1ffTz_eb41AHv-6U.php(123): Twig\Template->yield()
    #5 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_6f2f2892690a25b32886131362215d79___1273635156->doDisplay()
    #6 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff___string_template__6d15ed_pztJZ_2hkq2PSuj-eaXUPfFP6/fUxgD60nVLiTWXEJ4IvMJa47jIg1ffTz_eb41AHv-6U.php(40): Twig\Template->yield()
    #7 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_6f2f2892690a25b32886131362215d79->doDisplay()
    #8 /var/www/html/vendor/twig/twig/src/Template.php(335): Twig\Template->yield()
    #9 /var/www/html/vendor/twig/twig/src/TemplateWrapper.php(38): Twig\Template->render()
    #10 /var/www/html/web/core/lib/Drupal/Core/Template/TwigEnvironment.php(234): Twig\TemplateWrapper->render()
    #11 /var/www/html/web/core/lib/Drupal/Core/Render/Element/InlineTemplate.php(54): Drupal\Core\Template\TwigEnvironment->renderInline()
    #12 [internal function]: Drupal\Core\Render\Element\InlineTemplate::preRenderInlineTemplate()
    #13 /var/www/html/web/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php(113): call_user_func_array()
    #14 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(870): Drupal\Core\Render\Renderer->doTrustedCallback()
    #15 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(432): Drupal\Core\Render\Renderer->doCallback()
    #16 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(504): Drupal\Core\Render\Renderer->doRender()
    #17 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(504): Drupal\Core\Render\Renderer->doRender()
    #18 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender()
    #19 /var/www/html/web/core/lib/Drupal/Core/Template/TwigExtension.php(475): Drupal\Core\Render\Renderer->render()
    #20 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff___string_template__61f286_cr4z0MdOC8FLvYnVGaIZR7XtO/1MaloL-Nmefv-9wEP3jVaQeEZT2chmmgprtUoAfY7MY.php(147): Drupal\Core\Template\TwigExtension->escapeFilter()
    #21 /var/www/html/vendor/twig/twig/src/Template.php(430): __TwigTemplate_7ea36e8c2fe70c246011f10332ef82f2___1709422647->block_column_two()
    #22 /var/www/html/vendor/twig/twig/src/Template.php(193): Twig\Template->yieldBlock()
    #23 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff_experience_builder:two_co_z7IWqBG4CjqhiCCoQroz8Vq0z/aTzvWJEkqXRw3egXCGkXYKlFp_TZwCq3pHjY4-BJ5T0.php(66): Twig\Template->renderBlock()
    #24 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_d232d4b58ef9ebdaa18420c2676ce452->doDisplay()
    #25 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff___string_template__61f286_cr4z0MdOC8FLvYnVGaIZR7XtO/1MaloL-Nmefv-9wEP3jVaQeEZT2chmmgprtUoAfY7MY.php(125): Twig\Template->yield()
    #26 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_7ea36e8c2fe70c246011f10332ef82f2___1709422647->doDisplay()
    #27 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff___string_template__61f286_cr4z0MdOC8FLvYnVGaIZR7XtO/1MaloL-Nmefv-9wEP3jVaQeEZT2chmmgprtUoAfY7MY.php(40): Twig\Template->yield()
    #28 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_7ea36e8c2fe70c246011f10332ef82f2->doDisplay()
    #29 /var/www/html/vendor/twig/twig/src/Template.php(335): Twig\Template->yield()
    #30 /var/www/html/vendor/twig/twig/src/TemplateWrapper.php(38): Twig\Template->render()
    #31 /var/www/html/web/core/lib/Drupal/Core/Template/TwigEnvironment.php(234): Twig\TemplateWrapper->render()
    #32 /var/www/html/web/core/lib/Drupal/Core/Render/Element/InlineTemplate.php(54): Drupal\Core\Template\TwigEnvironment->renderInline()
    #33 [internal function]: Drupal\Core\Render\Element\InlineTemplate::preRenderInlineTemplate()
    #34 /var/www/html/web/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php(113): call_user_func_array()
    #35 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(870): Drupal\Core\Render\Renderer->doTrustedCallback()
    #36 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(432): Drupal\Core\Render\Renderer->doCallback()
    #37 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(504): Drupal\Core\Render\Renderer->doRender()
    #38 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(504): Drupal\Core\Render\Renderer->doRender()
    #39 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(504): Drupal\Core\Render\Renderer->doRender()
    #40 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender()
    #41 /var/www/html/web/core/lib/Drupal/Core/Template/TwigExtension.php(475): Drupal\Core\Render\Renderer->render()
    #42 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff_page.html.twig_YUdYz6x-iJcRjvTYNH_DVwpw6/cxvdO_x3zsLgBV8yAEIPUvwsKoRTq1Q3fTmRdPVnWng.php(163): Drupal\Core\Template\TwigExtension->escapeFilter()
    #43 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_202aa75686e2177fb449be965643e91a->doDisplay()
    #44 /var/www/html/vendor/twig/twig/src/Template.php(335): Twig\Template->yield()
    #45 /var/www/html/vendor/twig/twig/src/TemplateWrapper.php(38): Twig\Template->render()
    #46 /var/www/html/web/core/themes/engines/twig/twig.engine(33): Twig\TemplateWrapper->render()
    #47 /var/www/html/web/modules/contrib/experience_builder/themes/engines/semi_coupled/semi_coupled.engine(39): twig_render_template()
    #48 /var/www/html/web/core/lib/Drupal/Core/Theme/ThemeManager.php(348): semi_coupled_render_template()
    #49 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(491): Drupal\Core\Theme\ThemeManager->render()
    #50 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender()
    #51 /var/www/html/web/core/lib/Drupal/Core/Template/TwigExtension.php(475): Drupal\Core\Render\Renderer->render()
    #52 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff_html.html.twig_52Qf1eg-AtuaMf7xGvt3ekB9z/NNbpV-dWovNIAeLxnsgKAszjO5GneNO3M6ywn4t8xgw.php(94): Drupal\Core\Template\TwigExtension->escapeFilter()
    #53 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_2be45878b8e9ee78d9e324a1567b13d1->doDisplay()
    #54 /var/www/html/vendor/twig/twig/src/Template.php(335): Twig\Template->yield()
    #55 /var/www/html/vendor/twig/twig/src/TemplateWrapper.php(38): Twig\Template->render()
    #56 /var/www/html/web/core/themes/engines/twig/twig.engine(33): Twig\TemplateWrapper->render()
    #57 /var/www/html/web/modules/contrib/experience_builder/themes/engines/semi_coupled/semi_coupled.engine(39): twig_render_template()
    #58 /var/www/html/web/core/lib/Drupal/Core/Theme/ThemeManager.php(348): semi_coupled_render_template()
    #59 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(491): Drupal\Core\Theme\ThemeManager->render()
    #60 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender()
    #61 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(153): Drupal\Core\Render\Renderer->render()
    #62 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(638): Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}()
    #63 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(152): Drupal\Core\Render\Renderer->executeInRenderContext()
    #64 /var/www/html/web/core/lib/Drupal/Core/Render/BareHtmlPageRenderer.php(66): Drupal\Core\Render\Renderer->renderRoot()
    #65 /var/www/html/web/core/lib/Drupal/Core/ProxyClass/Render/BareHtmlPageRenderer.php(76): Drupal\Core\Render\BareHtmlPageRenderer->renderBarePage()
    #66 /var/www/html/web/modules/contrib/experience_builder/src/Controller/SdcController.php(354): Drupal\Core\ProxyClass\Render\BareHtmlPageRenderer->renderBarePage()
    #67 [internal function]: Drupal\experience_builder\Controller\SdcController->preview()
    #68 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array()
    #69 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(638): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
    #70 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(121): Drupal\Core\Render\Renderer->executeInRenderContext()
    #71 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext()
    #72 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
    #73 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw()
    #74 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/Session.php(53): Symfony\Component\HttpKernel\HttpKernel->handle()
    #75 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle()
    #76 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ContentLength.php(28): Drupal\Core\StackMiddleware\KernelPreHandle->handle()
    #77 /var/www/html/web/core/modules/big_pipe/src/StackMiddleware/ContentLength.php(32): Drupal\Core\StackMiddleware\ContentLength->handle()
    #78 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\big_pipe\StackMiddleware\ContentLength->handle()
    #79 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass()
    #80 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\page_cache\StackMiddleware\PageCache->handle()
    #81 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle()
    #82 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/AjaxPageState.php(36): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle()
    #83 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\AjaxPageState->handle()
    #84 /var/www/html/web/core/lib/Drupal/Core/DrupalKernel.php(741): Drupal\Core\StackMiddleware\StackedHttpKernel->handle()
    #85 /var/www/html/web/index.php(19): Drupal\Core\DrupalKernel->handle()
    #86 {main}
    
  • Status changed to Needs work 3 months ago
  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺

    Needs investigating.

  • 🇺🇸United States Kristen Pol Santa Cruz, CA, USA

    This isn't just "shoe badge"... also happens with:

    • Shoe Icon
    • Shoe Tab
    • Shoe Tab Group
    • Shoe Tab Panel
  • Assigned to wim leers
  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺

    This is happening even for the experience_builder:my-hero SDC.

    The root cause for the symptom took me 10 seconds to find. </code> calls <code>$component->get('defaults')['props'][$sdc_prop_name]['field_type'], but not all prop names have an entry in the Component config entity:

    uuid: 122bc978-25ca-45d0-b4df-71f9acd9827b
    langcode: en
    status: true
    dependencies: {  }
    label: Hero
    component: experience_builder+my-hero
    defaults:
      props:
        cta1href:
          field_type: uri
          field_storage_settings: {  }
          field_instance_settings: {  }
          field_widget: uri
          default_value:
            value: 'https://example.com'
          expression: ℹ︎uri␟value
        heading:
          field_type: string
          field_storage_settings: {  }
          field_instance_settings: {  }
          field_widget: string_textfield
          default_value:
            value: 'There goes my hero'
          expression: ℹ︎string␟value
    

    Full list of props:

    1. heading
    2. subheading
    3. cta1
    4. cta1href
    5. cta2
    6. attributes

    Investigating why this is happening.

  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺

    Another 10 seconds later, and it's clear \Drupal\experience_builder\Entity\Component::getDefaultsForComponentPlugin() is the culprit: it's only generating defaults for required props, instead of all props.

    So we caused this regression in 📌 Auto-create/update Component config entities for all discovered SDCs that meet XB's minimum criteria Fixed without noticing. How is that possible?

    It's possible because the validation of Component config entities is incomplete, and we know it: experience_builder.schema.yml contains this since Allow specifying default props values when opting an SDC in for XB Fixed :

              # Ensure a default is specified for EVERY prop of this component.
              # @todo Follow-up issue: implement this constraint, similar to the `CKEditor5EnabledConfigurablePlugins` constraint, with test coverage that causes existing config entities to fail if the props of an SDC change (because that is a BC break in the SDC).
              # KeyForEveryComponentProp: [%parent.component]
    

    👆 Implementing that will cause \Drupal\Tests\experience_builder\Kernel\ComponentTest::testComponentAutoCreate() to fail. No need for additional test coverage beyond that.

  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺

    First pass at fixing the bug brought the failures down to 40: https://git.drupalcode.org/project/experience_builder/-/jobs/2602877.

    But many tests are now failing because some plugins cannot be found: in kernel tests, all module dependencies must be explicitly installed. This is now necessary because the validator is verifying the config entity is consistent with the SDC plugin.

    So: installing missing modules next.

  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺

    Down to 24 test failures.

    Most test failures are now like this:

    'component' entity with ID 'experience_builder+experimental' already exists.
    

    https://git.drupalcode.org/project/experience_builder/-/jobs/2603045

    Root cause: \Drupal\experience_builder\Plugin\ComponentPluginManager creates Component config entities in \Drupal\experience_builder\Plugin\ComponentPluginManager::setCachedDefinitions().

    But in this MR, the Component::save() call happens inside that method, which will trigger validation, which in turn also calls ComponentPluginManager. Which then causes these config entities to be created too!

  • Issue was unassigned.
  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺

    Down to 22 test failures.

    The remaining violations look like this:

    1) DefaultConfigTest::testConfig
    Drupal\Core\Config\Schema\SchemaIncompleteException: Schema errors for experience_builder.component.sdc_test_all_props+all-props with the following errors: experience_builder.component.sdc_test_all_props+all-props:defaults.props.test_integer_range_minimum.field_storage_settings.min missing schema, experience_builder.component.sdc_test_all_props+all-props:defaults.props.test_integer_range_minimum.field_storage_settings.max missing schema, experience_builder.component.sdc_test_all_props+all-props:defaults.props.test_integer_range_minimum_maximum_timestamps.field_storage_settings.min missing schema, experience_builder.component.sdc_test_all_props+all-props:defaults.props.test_integer_range_minimum_maximum_timestamps.field_storage_settings.max missing schema, experience_builder.component.sdc_test_all_props+all-props:defaults.props.test_string_format_date.default_value.value missing schema, experience_builder.component.sdc_test_all_props+all-props:defaults.props.test_string_format_date_time.default_value.value missing schema
    

    and

    Drupal\Component\Plugin\Exception\PluginNotFoundException: The "space separated:space separated" plugin does not exist. Valid plugin IDs for Drupal\experience_builder\Plugin\ComponentPluginManager are: experience_builder:video, experience_builder:shoe_tab_panel, experience_builder:shoe_tab, experience_builder:shoe_icon, experience_builder:shoe_details, experience_builder:shoe_button, experience_builder:shoe_badge, experience_builder:heading, experience_builder:obsolete, experience_builder:experimental, experience_builder:deprecated, experience_builder:my-section, experience_builder:my-hero, experience_builder:image, experience_builder:two_column, experience_builder:shoe_tab_group, experience_builder:one_column, sdc_test:no-props, sdc_test:my-cta, sdc_test:my-button, sdc_test:my-banner, sdc_test:array-to-object
    

    That second one is caused by 📌 Component config entity should validate that the SDC actually (still) exists Active not yet being fixed. Let's fix that first. Or fix it here. Whichever is handier.

    I think @f.mazeikis and @tedbow can carry this over the finish line!

  • 🇬🇧United Kingdom f.mazeikis Brighton

    f.mazeikis made their first commit to this issue’s fork.

  • Assigned to wim leers
  • Status changed to Needs review 2 months ago
  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
  • Issue was unassigned.
  • Status changed to RTBC 2 months ago
  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺

    Closed 📌 Component config entity should validate that the SDC actually (still) exists Active as outdated — @f.mazeikis implemented that as part of this issue.

    This is ready for final sign-off by @f.mazeikis. We both worked on this, but he's the owner of 👍😊

  • Assigned to f.mazeikis
  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺

    Forgot to re-assign to Felix :)

  • 🇺🇸United States Kristen Pol Santa Cruz, CA, USA

    For testing, I needed to get the fix from this issue in there:

    🐛 Prop select lists don't affect the component Fixed

  • Status changed to Needs work 2 months ago
  • 🇺🇸United States Kristen Pol Santa Cruz, CA, USA

    The shoe components are still causing errors.

    Try dragging shoe icon or shoe tab panel and you'll see the error popup.

    Or drag shoe badge, shoe tab, or shoe tab group and try changing something.

  • Pipeline finished with Failed
    2 months ago
    Total: 490s
    #272785
  • 🇫🇮Finland lauriii Finland

    I added the shoe icon component and got the following error:

    Drupal\Core\Render\Component\Exception\InvalidComponentException: [name] The property name is required in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 203 of /var/www/html/drupal/core/lib/Drupal/Core/Theme/Component/ComponentValidator.php).

    I changed a value for the shoe tab component using the right sidebar and got the following error:

    Drupal\Core\Render\Component\Exception\InvalidComponentException: [active] Integer value found, but a boolean or an object is required/n[closable] Integer value found, but a boolean or an object is required/n[disabled] Integer value found, but a boolean or an object is required in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 203 of /var/www/html/drupal/core/lib/Drupal/Core/Theme/Component/ComponentValidator.php).
    

    I changed a value for the shoe badge using the right sidebar and got the following error:

    Drupal\Core\Render\Component\Exception\InvalidComponentException: [pill] Integer value found, but a boolean or an object is required/n[pulse] Integer value found, but a boolean or an object is required in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 203 of /var/www/html/drupal/core/lib/Drupal/Core/Theme/Component/ComponentValidator.php).
    

    I changed a value for the shoe tab group using the right sidebar and got the following error:

    Drupal\Core\Render\Component\Exception\InvalidComponentException: [no_scroll] Integer value found, but a boolean or an object is required in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 203 of /var/www/html/drupal/core/lib/Drupal/Core/Theme/Component/ComponentValidator.php).
    
    

    I'll let @wim leers and/or @f.mazeikis to decide if this is something that should be fixed here or in a follow-up issue.

  • 🇫🇮Finland lauriii Finland

    It seems that #23 might be related to 🐛 `enum` data shapes: error when choosing "- None -" in `` Needs work but maybe there's an aspect related to booleans that isn't being tracked there currently?

  • Status changed to RTBC 2 months ago
  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺

    The boolean shenanigans reported in #23 are indeed unrelated.

    The goal of this issue is to be able to render the ComponentPropsForm without triggering the PHP warnings reported in #3. That it does 👍

    If I interact with the boolean field widget, I can also reproduce

    Drupal\Core\Render\Component\Exception\InvalidComponentException: [pill] String value found, but a boolean or an object is required/n[pulse] Integer value found, but a boolean or an object is required in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 203 of core/lib/Drupal/Core/Theme/Component/ComponentValidator.php).
    

    This is being worked on in 📌 Component props form: map textarea, bool, and select elements to React components Fixed . The root cause is the request to update the preview after interacting with the boolean field widget, which sends this data from the client to the server that indeed violates the JSON schema, because both pill and pulse must be booleans, not strings nor integers:

  • 🇺🇸United States Kristen Pol Santa Cruz, CA, USA

    So if both this and that issue are fixed then there will no more fatal errors when using the prop forms for ALL XB example components? If so, ETA on both?

  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺

    Yes, for all XB components. With the exception of the special all-props SDC, which we're using to be able to test/develop missing pieces. But that's not an SDC that is installed by default.

  • Pipeline finished with Skipped
    2 months ago
    #273309
  • Pipeline finished with Skipped
    2 months ago
    #273312
  • Pipeline finished with Skipped
    2 months ago
    #273314
  • Pipeline finished with Skipped
    2 months ago
    #273315
    • wim leers committed 25d5779c on 0.x
      Issue #3470550 by wim leers, f.mazeikis, kristen pol: Component config...
  • Issue was unassigned.
  • Status changed to Fixed 2 months ago
  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
  • 🇺🇸United States Kristen Pol Santa Cruz, CA, USA

    Thanks. I tested and found the following:

    1. Shoe button is missing... not sure why and didn't debug but maybe due to the variant info?

    2. Shoe badge and shoe tab are "working" (other than the boolean true/false issue that I reported).

    🐛 [PP-1] Can't toggle boolean prop back to true after changing to false Postponed

    3. Some others cause fatal errors...

    shoe icon and shoe tab panel have known issue:

    Drupal\Core\Render\Component\Exception\InvalidComponentException: [name] The property name is required in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 206 of /var/www/html/web/core/lib/Drupal/Core/Theme/Component/ComponentValidator.php).
    

    🐛 Some components cannot be used in XB because UI prevents SDC props being named `name` Active

    4. Sidenote that there are a lot of these:

    Attempting to re-run cron while it is already running.
    

    as well for some reason.

  • 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
    1. See 📌 Surface the REASON for an SDC not being made available in XB (i.e. not meeting criteria) Fixed .
    2. Yep, we're well aware.
    3. The more pressing blocker to that is 🐛 Emptying a required value through the UI crashes the app Active , although indeed name is de facto an unsupported prop name right now, and that must be fixed, too
    4. That's unrelated to XB for sure.
  • Automatically closed - issue fixed for 2 weeks with no activity.

Production build 0.71.5 2024