Implements Drupal\field\Plugin\Type\Widget\WidgetInterface::formElement().
Overrides WidgetInterface::formElement
public function formElement(array $items, $delta, array $element, $langcode, array &$form, array &$form_state) {
$field = $this->field;
$instance = $this->instance;
$value = isset($items[$delta]['value']) ? $items[$delta]['value'] : NULL;
$element += array(
'#type' => 'number',
'#default_value' => $value,
'#placeholder' => $this
->getSetting('placeholder'),
);
// Set the step for floating point and decimal numbers.
switch ($field['type']) {
case 'number_decimal':
$element['#step'] = pow(0.1, $field['settings']['scale']);
break;
case 'number_float':
$element['#step'] = 'any';
break;
}
// Set minimum and maximum.
if (is_numeric($instance['settings']['min'])) {
$element['#min'] = $instance['settings']['min'];
}
if (is_numeric($instance['settings']['max'])) {
$element['#max'] = $instance['settings']['max'];
}
// Add prefix and suffix.
if (!empty($instance['settings']['prefix'])) {
$prefixes = explode('|', $instance['settings']['prefix']);
$element['#field_prefix'] = field_filter_xss(array_pop($prefixes));
}
if (!empty($instance['settings']['suffix'])) {
$suffixes = explode('|', $instance['settings']['suffix']);
$element['#field_suffix'] = field_filter_xss(array_pop($suffixes));
}
return array(
'value' => $element,
);
}