diff --git a/src/Plugin/EntityBrowser/Widget/View.php b/src/Plugin/EntityBrowser/Widget/View.php index 4644f73..1d561d8 100644 --- a/src/Plugin/EntityBrowser/Widget/View.php +++ b/src/Plugin/EntityBrowser/Widget/View.php @@ -42,7 +42,6 @@ class View extends WidgetBase implements ContainerFactoryPluginInterface { return array( 'view' => NULL, 'view_display' => NULL, - 'auto_select' => FALSE, ) + parent::defaultConfiguration(); } @@ -232,13 +231,6 @@ class View extends WidgetBase implements ContainerFactoryPluginInterface { public function buildConfigurationForm(array $form, FormStateInterface $form_state) { $form = parent::buildConfigurationForm($form, $form_state); - // Allow "auto_select" setting when autoSelect is supported by widget. - $form['auto_select'] = [ - '#type' => 'checkbox', - '#title' => $this->t('Automatically submit selection'), - '#default_value' => $this->configuration['auto_select'], - ]; - $options = []; // Get only those enabled Views that have entity_browser displays. $displays = Views::getApplicableViews('entity_browser_display'); @@ -274,11 +266,4 @@ class View extends WidgetBase implements ContainerFactoryPluginInterface { } } - /** - * {@inheritdoc} - */ - public function requiresJsCommands() { - return $this->getConfiguration()['settings']['auto_select']; - } - } diff --git a/src/WidgetBase.php b/src/WidgetBase.php index b7190f4..704742a 100644 --- a/src/WidgetBase.php +++ b/src/WidgetBase.php @@ -122,9 +122,15 @@ abstract class WidgetBase extends PluginBase implements WidgetInterface, Contain } } - // In case of auto submitting, widget will handle adding entities in JS. - $autoSelect = !empty($this->configuration['auto_select']); - $form['#attached']['drupalSettings']['entity_browser_widget']['auto_select'] = $autoSelect; + // Check if widget supports auto select functionality and expose config to + // front-end javascript. + $autoSelect = FALSE; + if ($this->getPluginDefinition()['autoSelect']) { + $autoSelect = $this->configuration['auto_select']; + $form['#attached']['drupalSettings']['entity_browser_widget']['auto_select'] = $autoSelect; + } + + // In case of auto select, widget will handle adding entities in JS. if (!$autoSelect) { $form['actions'] = [ '#type' => 'actions', @@ -145,9 +151,16 @@ abstract class WidgetBase extends PluginBase implements WidgetInterface, Contain * {@inheritdoc} */ public function defaultConfiguration() { - return [ + $defaultConfig = [ 'submit_text' => $this->t('Select entities'), ]; + + // If auto select is supported by Widget, append default configuration. + if ($this->getPluginDefinition()['autoSelect']) { + $defaultConfig['auto_select'] = FALSE; + } + + return $defaultConfig; } /** @@ -202,6 +215,15 @@ abstract class WidgetBase extends PluginBase implements WidgetInterface, Contain '#default_value' => $this->configuration['submit_text'], ]; + // Allow "auto_select" setting when autoSelect is supported by widget. + if ($this->getPluginDefinition()['autoSelect']) { + $form['auto_select'] = [ + '#type' => 'checkbox', + '#title' => $this->t('Automatically submit selection'), + '#default_value' => $this->configuration['auto_select'], + ]; + } + return $form; } @@ -332,7 +354,7 @@ abstract class WidgetBase extends PluginBase implements WidgetInterface, Contain * {@inheritdoc} */ public function requiresJsCommands() { - return FALSE; + return $this->getPluginDefinition()['autoSelect'] && $this->getConfiguration()['settings']['auto_select']; } }