BynderSelect2SimpleElement.php in Bynder 8.3
File
modules/bynder_select2/src/Element/BynderSelect2SimpleElement.php
View source
<?php
namespace Drupal\bynder_select2\Element;
use Drupal\Component\Utility\Html;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Render\Element\Select;
class BynderSelect2SimpleElement extends Select {
public function getInfo() {
$info = parent::getInfo();
$class = get_class($this);
$info['#process'] = [
[
$class,
'processBynderSelect2',
],
];
return $info;
}
public static function processBynderSelect2(&$element, FormStateInterface $form_state, &$complete_form) {
$element = parent::processSelect($element, $form_state, $complete_form);
$class = 'bynder-select2-' . hash('md5', Html::getUniqueId('bynder-select2-simple-element'));
$base_url = \Drupal::request()
->getSchemeAndHttpHost();
$element['#attributes']['class'][] = $class;
$select2_settings = [
'selector' => '.' . $class,
'placeholder_text' => $element['#placeholder_text'],
'multiple' => $element['#multiple'],
'base_url' => $base_url,
];
if (isset($element['#loadRemoteData'])) {
$select2_settings['loadRemoteData'] = [
'url' => $base_url . $element['#loadRemoteData'],
];
}
$element['#attached']['drupalSettings']['bynder_select2'][$class] = $select2_settings;
$element['#attached']['library'] = [
'bynder_select2/bynder_select2.widget',
];
return $element;
}
}