ui_patterns icon indicating copy to clipboard operation
ui_patterns copied to clipboard

Cannot include two pattern select elements on same page

Open nedjo opened this issue 4 years ago • 0 comments
trafficstars

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.

nedjo avatar Dec 08 '20 01:12 nedjo