Same filename and directory in other branches
- 8.9.x core/lib/Drupal/Core/Render/Element/Range.php
- 9 core/lib/Drupal/Core/Render/Element/Range.php
Namespace
Drupal\Core\Render\Element
File
core/lib/Drupal/Core/Render/Element/Range.php
View source
<?php
namespace Drupal\Core\Render\Element;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Render\Attribute\FormElement;
use Drupal\Core\Render\Element;
class Range extends Number {
public function getInfo() {
$info = parent::getInfo();
$class = static::class;
return [
'#min' => 0,
'#max' => 100,
'#pre_render' => [
[
$class,
'preRenderRange',
],
],
'#theme' => 'input__range',
] + $info;
}
public static function preRenderRange($element) {
$element['#attributes']['type'] = 'range';
Element::setAttributes($element, [
'id',
'name',
'value',
'step',
'min',
'max',
]);
static::setAttributes($element, [
'form-range',
]);
return $element;
}
public static function valueCallback(&$element, $input, FormStateInterface $form_state) {
if ($input === '') {
$offset = ($element['#max'] - $element['#min']) / 2;
if (strtolower($element['#step']) != 'any') {
$steps = round($offset / $element['#step']);
$offset = $element['#step'] * $steps;
}
return $element['#min'] + $offset;
}
}
}
Classes