SingleSelect2BoxesAutocompleteWidget.php in Select2 Boxes 8
File
src/Plugin/Field/FieldWidget/SingleSelect2BoxesAutocompleteWidget.php
View source
<?php
namespace Drupal\select2boxes\Plugin\Field\FieldWidget;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\Plugin\Field\FieldWidget\OptionsSelectWidget;
use Drupal\Core\Form\FormStateInterface;
use Drupal\select2boxes\AutoCreationProcessTrait;
use Drupal\select2boxes\FlatteningOptionsTrait;
use Drupal\select2boxes\MinSearchLengthTrait;
class SingleSelect2BoxesAutocompleteWidget extends OptionsSelectWidget {
use MinSearchLengthTrait;
use FlatteningOptionsTrait;
use AutoCreationProcessTrait;
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$element = parent::formElement($items, $delta, $element, $form, $form_state);
$this
->flatteningOptions($element['#options']);
$field_name = $this->fieldDefinition
->getName();
$element['#attributes'] = [
'data-jquery-once-autocomplete' => 'true',
'data-select2-autocomplete-list-widget' => 'true',
'class' => [
'select2-widget',
],
'data-field-name' => $field_name,
];
$settings = $this
->getFieldSettings();
if (isset($settings['handler_settings']['auto_create']) && $settings['handler_settings']['auto_create'] == TRUE) {
$element['#attributes']['data-auto-create-entity'] = 'enabled';
}
$element['#select2'] = [
'fieldName' => $field_name,
] + $settings;
$element['#value_callback'] = [
get_class($this),
'processAutoCreation',
];
$element['#multiple'] = $element['#needs_validation'] = FALSE;
$this
->limitSearchByMinLength($element['#attributes']);
$element['#attached']['library'][] = 'select2boxes/widget';
return $element;
}
}