From f71213b167f357c42164c2d836228b870dfe0efd Mon Sep 17 00:00:00 2001 From: Mathieu Santostefano Date: Fri, 21 Jan 2022 09:32:21 +0100 Subject: [PATCH] Add inputmode attribute on NumberType --- .../Form/Extension/Core/Type/NumberType.php | 2 ++ .../Extension/Core/Type/NumberTypeTest.php | 32 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/Symfony/Component/Form/Extension/Core/Type/NumberType.php b/src/Symfony/Component/Form/Extension/Core/Type/NumberType.php index 1437369fbaa4..fd75f689d778 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/NumberType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/NumberType.php @@ -47,6 +47,8 @@ public function buildView(FormView $view, FormInterface $form, array $options) { if ($options['html5']) { $view->vars['type'] = 'number'; + } else { + $view->vars['attr']['inputmode'] = 0 === $options['scale'] ? 'numeric' : 'decimal'; } } diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/Type/NumberTypeTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/Type/NumberTypeTest.php index 4aa86db62b15..0cf482a9d8a4 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/Type/NumberTypeTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/Type/NumberTypeTest.php @@ -202,4 +202,36 @@ public function testGroupingNotAllowedWithHtml5Widget() 'html5' => true, ]); } + + public function testNumericInputmode() + { + $form = $this->factory->create(static::TESTED_TYPE, null, [ + 'scale' => 0, + 'html5' => false, + ]); + $form->setData(12345.54321); + + $this->assertSame('numeric', $form->createView()->vars['attr']['inputmode']); + } + + public function testDecimalInputmode() + { + $form = $this->factory->create(static::TESTED_TYPE, null, [ + 'scale' => 2, + 'html5' => false, + ]); + $form->setData(12345.54321); + + $this->assertSame('decimal', $form->createView()->vars['attr']['inputmode']); + } + + public function testNoInputmodeWithHtml5Widget() + { + $form = $this->factory->create(static::TESTED_TYPE, null, [ + 'html5' => true, + ]); + $form->setData(12345.54321); + + $this->assertArrayNotHasKey('inputmode', $form->createView()->vars['attr']); + } }