nuvoleweb / ui_patterns

[NOTE] Development has moved to https://drupal.org/project/ui_patterns
https://drupal.org/project/ui_patterns
GNU General Public License v2.0
85 stars 56 forks source link

Cannot include two pattern select elements on same page #316

Open nedjo opened 3 years ago

nedjo commented 3 years ago

Bug description

In Drupal\ui_patterns\Form\PatternDisplayFormTrait::buildPatternDisplayForm() we explicitly assign an 'id' attribute to the $form['pattern'] select element as follows:

      '#attributes' => ['id' => 'patterns-select'],

and subsequently attach #states behaviours using this same hard-coded 'patterns-select' ID:

          '#states' => [
            'visible' => [
              'select[id="patterns-select"]' => ['value' => $pattern_id],
            ],
          ],

This means placing more than one pattern select on a given form leads to invalid HTML and broken #states.

Use case

An example use case is in the UI Patterns Blocks module, see the issue Support sub-patterns for block .

Proposed fix

Use Html::getUniqueId() to generate a unique ID value and use that in the '#states' values.