Skip to content

Commit

Permalink
[Form] Added default inputmode attribute to Search, Email and Tel f…
Browse files Browse the repository at this point in the history
…orm types
  • Loading branch information
fre5h authored and nicolas-grekas committed Dec 26, 2019
1 parent 8c80c5b commit dbc500f
Show file tree
Hide file tree
Showing 7 changed files with 143 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/Symfony/Component/Form/CHANGELOG.md
@@ -1,6 +1,11 @@
CHANGELOG
=========

5.1.0
-----

* Added default `inputmode` attribute to Search, Email and Tel form types.

5.0.0
-----

Expand Down
10 changes: 10 additions & 0 deletions src/Symfony/Component/Form/Extension/Core/Type/EmailType.php
Expand Up @@ -12,6 +12,8 @@
namespace Symfony\Component\Form\Extension\Core\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;

class EmailType extends AbstractType
{
Expand All @@ -23,6 +25,14 @@ public function getParent()
return __NAMESPACE__.'\TextType';
}

/**
* {@inheritdoc}
*/
public function buildView(FormView $view, FormInterface $form, array $options)
{
$view->vars['attr']['inputmode'] = $options['attr']['inputmode'] ?? 'email';
}

/**
* {@inheritdoc}
*/
Expand Down
10 changes: 10 additions & 0 deletions src/Symfony/Component/Form/Extension/Core/Type/SearchType.php
Expand Up @@ -12,6 +12,8 @@
namespace Symfony\Component\Form\Extension\Core\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;

class SearchType extends AbstractType
{
Expand All @@ -23,6 +25,14 @@ public function getParent()
return __NAMESPACE__.'\TextType';
}

/**
* {@inheritdoc}
*/
public function buildView(FormView $view, FormInterface $form, array $options)
{
$view->vars['attr']['inputmode'] = $options['attr']['inputmode'] ?? 'search';
}

/**
* {@inheritdoc}
*/
Expand Down
10 changes: 10 additions & 0 deletions src/Symfony/Component/Form/Extension/Core/Type/TelType.php
Expand Up @@ -12,6 +12,8 @@
namespace Symfony\Component\Form\Extension\Core\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;

class TelType extends AbstractType
{
Expand All @@ -23,6 +25,14 @@ public function getParent()
return TextType::class;
}

/**
* {@inheritdoc}
*/
public function buildView(FormView $view, FormInterface $form, array $options)
{
$view->vars['attr']['inputmode'] = $options['attr']['inputmode'] ?? 'tel';
}

/**
* {@inheritdoc}
*/
Expand Down
@@ -0,0 +1,36 @@
<?php

/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Symfony\Component\Form\Tests\Extension\Core\Type;

class EmailTypeTest extends BaseTypeTest
{
const TESTED_TYPE = 'Symfony\Component\Form\Extension\Core\Type\EmailType';

public function testDefaultInputmode()
{
$form = $this->factory->create(static::TESTED_TYPE);

$this->assertSame('email', $form->createView()->vars['attr']['inputmode']);
}

public function testOverwrittenInputmode()
{
$form = $this->factory->create(static::TESTED_TYPE, null, ['attr' => ['inputmode' => 'text']]);

$this->assertSame('text', $form->createView()->vars['attr']['inputmode']);
}

public function testSubmitNull($expected = null, $norm = null, $view = null)
{
parent::testSubmitNull($expected, $norm, '');
}
}
@@ -0,0 +1,36 @@
<?php

/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Symfony\Component\Form\Tests\Extension\Core\Type;

class SearchTypeTest extends BaseTypeTest
{
const TESTED_TYPE = 'Symfony\Component\Form\Extension\Core\Type\SearchType';

public function testDefaultInputmode()
{
$form = $this->factory->create(static::TESTED_TYPE);

$this->assertSame('search', $form->createView()->vars['attr']['inputmode']);
}

public function testOverwrittenInputmode()
{
$form = $this->factory->create(static::TESTED_TYPE, null, ['attr' => ['inputmode' => 'text']]);

$this->assertSame('text', $form->createView()->vars['attr']['inputmode']);
}

public function testSubmitNull($expected = null, $norm = null, $view = null)
{
parent::testSubmitNull($expected, $norm, '');
}
}
@@ -0,0 +1,36 @@
<?php

/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Symfony\Component\Form\Tests\Extension\Core\Type;

class TelTypeTest extends BaseTypeTest
{
const TESTED_TYPE = 'Symfony\Component\Form\Extension\Core\Type\TelType';

public function testDefaultInputmode()
{
$form = $this->factory->create(static::TESTED_TYPE);

$this->assertSame('tel', $form->createView()->vars['attr']['inputmode']);
}

public function testOverwrittenInputmode()
{
$form = $this->factory->create(static::TESTED_TYPE, null, ['attr' => ['inputmode' => 'text']]);

$this->assertSame('text', $form->createView()->vars['attr']['inputmode']);
}

public function testSubmitNull($expected = null, $norm = null, $view = null)
{
parent::testSubmitNull($expected, $norm, '');
}
}

0 comments on commit dbc500f

Please sign in to comment.