Same name and namespace in other branches
- 3.0.x src/Plugin/Field/FieldWidget/ColorFieldWidgetBox.php \Drupal\color_field\Plugin\Field\FieldWidget\ColorFieldWidgetBox::formElement()
Overrides ColorFieldWidgetBase::formElement
Fichier
-
src/
Plugin/ Field/ FieldWidget/ ColorFieldWidgetBox.php, line 102
Classe
- ColorFieldWidgetBox
- Plugin implementation of the color_field box widget.
Namespace
Drupal\color_field\Plugin\Field\FieldWidgetCode
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$element = parent::formElement($items, $delta, $element, $form, $form_state);
// Ensure the default value is the required format.
if ($element['color']['#default_value']) {
$element['color']['#default_value'] = strtoupper($element['color']['#default_value']);
if (strlen($element['color']['#default_value']) === 6) {
$element['color']['#default_value'] = '#' . $element['color']['#default_value'];
}
}
elseif ($element['#required']) {
// If the element is required but has no default value and the element is
// hidden like the color boxes widget does, prevent HTML5 Validation from
// being invisible and blocking save with no apparent reason.
$element['color']['#attributes']['class'][] = 'color_field_widget_box__color';
}
$element['#attached']['library'][] = 'color_field/color-field-widget-box';
// Set Drupal settings.
$settings[$element['#uid']] = [
'required' => $this->fieldDefinition
->isRequired(),
];
$default_colors = $this->getSetting('default_colors');
preg_match_all("/#[0-9A-F]{6}/i", $default_colors, $default_colors, PREG_SET_ORDER);
foreach ($default_colors as $color) {
$settings[$element['#uid']]['palette'][] = $color[0];
}
$element['#attached']['drupalSettings']['color_field']['color_field_widget_box']['settings'] = $settings;
$element['color']['#suffix'] = "<div class='color-field-widget-box-form' id='" . $element['#uid'] . "'></div>";
return $element;
}