ImsOptionsWidget.php in Improved Multi Select 8
File
modules/ims_options_widget/src/Plugin/Field/FieldWidget/ImsOptionsWidget.php
View source
<?php
namespace Drupal\ims_options_widget\Plugin\Field\FieldWidget;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\Plugin\Field\FieldWidget\OptionsSelectWidget;
use Drupal\Core\Form\FormStateInterface;
class ImsOptionsWidget extends OptionsSelectWidget {
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$element = parent::formElement($items, $delta, $element, $form, $form_state);
$options = $this
->getOptions($items
->getEntity());
$default = $this
->getSelectedOptions($items);
$ordered = [];
array_walk($default, function ($item) use (&$options, &$ordered) {
$ordered[$item] = $options[$item];
unset($options[$item]);
});
$element['#type'] = 'select';
$element['#options'] = $ordered + $options;
$element['#default_value'] = $default;
$element['#multiple'] = TRUE;
return $element;
}
protected function supportsGroups() {
return FALSE;
}
}