diff --git a/src/View/Helper/FormHelper.php b/src/View/Helper/FormHelper.php index b4e5d3a..c6a40bc 100644 --- a/src/View/Helper/FormHelper.php +++ b/src/View/Helper/FormHelper.php @@ -119,9 +119,8 @@ class FormHelper extends \Cake\View\Helper\FormHelper { 'inputGroup' => '{{inputGroupStart}}{{input}}{{inputGroupEnd}}', 'inputGroupStart' => '
{{prepend}}', 'inputGroupEnd' => '{{append}}
', - 'inputGroupAddons' => '{{content}}', - 'inputGroupButtons' => '{{content}}', - 'inputGroupDropdowns' => '
{{content}}
', + 'inputGroupAddons' => '
{{content}}
', + 'inputGroupText' => '{{content}}', 'helpBlock' => '{{content}}', 'buttonGroup' => '
{{content}}
', 'buttonGroupVertical' => '
{{content}}
', @@ -307,27 +306,28 @@ protected function _getColumnClass($what) { * * @return string The elements wrapped in a suitable HTML element. */ - protected function _wrapInputGroup($addonOrButtons) { + protected function _wrapInputGroup($addonOrButtons, $type) { if ($addonOrButtons) { - $template = 'inputGroupButtons'; - if (is_string($addonOrButtons)) { - $addonOrButtons = $this->_makeIcon($addonOrButtons); - if (!Matching::findTagOrAttribute( - 'button', ['type' => 'submit'], $addonOrButtons)) { - $template = 'inputGroupAddons'; - } - } - else { + if (is_array($addonOrButtons)) { $addonOrButtons = implode('', $addonOrButtons); + } else { + $addonOrButtons = $this->_makeIcon($addonOrButtons); } - if (Matching::findTagOrAttribute( - null, ['data-toggle' => 'dropdown'], $addonOrButtons)) { - $template = 'inputGroupDropdowns'; + + $isButton = strpos($addonOrButtons, 'formatTemplate('inputGroupText', [ + 'content' => $addonOrButtons + ]); } - $addonOrButtons = $this->formatTemplate($template, [ + + $addonOrButtons = $this->formatTemplate('inputGroupAddons', [ + 'type' => strtolower($type), 'content' => $addonOrButtons ]); } + return $addonOrButtons; } @@ -364,7 +364,7 @@ protected function _wrap($input, $prepend, $append) { * opening `
` for an input group. */ public function prepend($input, $prepend) { - $prepend = $this->_wrapInputGroup($prepend); + $prepend = $this->_wrapInputGroup($prepend, 'prepend'); if ($input === null) { return $this->formatTemplate('inputGroupStart', ['prepend' => $prepend]); } @@ -382,7 +382,7 @@ public function prepend($input, $prepend) { * closing `
` for an input group. */ public function append($input, $append) { - $append = $this->_wrapInputGroup($append); + $append = $this->_wrapInputGroup($append, 'append'); if ($input === null) { return $this->formatTemplate('inputGroupEnd', ['append' => $append]); } @@ -713,11 +713,11 @@ public function dropdownButton($title, array $menu = [], array $options = []) { } $options = $this->addClass($options, 'dropdown-toggle'); + return $this->buttonGroup([ $this->button($title, $options), $this->Html->dropdown($menu, $ulOptions) ], $bGroupOptions); - } /** diff --git a/tests/TestCase/View/Helper/EasyIconTraitTest.php b/tests/TestCase/View/Helper/EasyIconTraitTest.php index 7bc70aa..1b0abe4 100644 --- a/tests/TestCase/View/Helper/EasyIconTraitTest.php +++ b/tests/TestCase/View/Helper/EasyIconTraitTest.php @@ -123,7 +123,6 @@ public function testEasyIcon() { 'result' => 'i:plus' ] ]); - } public function testHtmlHelperMethods() { @@ -176,22 +175,29 @@ public function testFormHelperMethod() { ['div' => [ 'class' => 'input-group' ]], + ['div' => [ + 'class' => 'input-group-prepend' + ]], ['span' => [ - 'class' => 'input-group-addon' + 'class' => 'input-group-text' ]], ['i' => [ 'class' => 'fa fa-home', 'aria-hidden' => 'true' ]], '/i', '/span', + '/div', ['input' => [ 'type' => 'text', 'class' => 'form-control', 'name' => 'fieldname', 'id' => 'fieldname' ]], + ['div' => [ + 'class' => 'input-group-append' + ]], ['span' => [ - 'class' => 'input-group-addon' + 'class' => 'input-group-text' ]], ['i' => [ 'class' => 'fa fa-plus', @@ -199,6 +205,7 @@ public function testFormHelperMethod() { ]], '/i', '/span', '/div', + '/div', '/div' ], $result); //BootstrapFormHelper::prepend($input, $prepend); // For $prepend. diff --git a/tests/TestCase/View/Helper/FormHelperTest.php b/tests/TestCase/View/Helper/FormHelperTest.php index b74ecd3..69c0b20 100644 --- a/tests/TestCase/View/Helper/FormHelperTest.php +++ b/tests/TestCase/View/Helper/FormHelperTest.php @@ -639,11 +639,15 @@ public function testInputGroup() { ['div' => [ 'class' => 'input-group' ]], + ['div' => [ + 'class' => 'input-group-prepend' + ]], ['span' => [ - 'class' => 'input-group-addon' + 'class' => 'input-group-text' ]], '@', '/span', + '/div', ['input' => [ 'type' => 'text', 'class' => 'form-control', @@ -668,12 +672,16 @@ public function testInputGroup() { 'name' => $fieldName, 'id' => $fieldName ]], + ['div' => [ + 'class' => 'input-group-append' + ]], ['span' => [ - 'class' => 'input-group-addon' + 'class' => 'input-group-text' ]], '.00', '/span', '/div', + '/div', '/div' ]; $this->_testInput($expected, $fieldName, $options + ['append' => '.00']); @@ -685,23 +693,31 @@ public function testInputGroup() { ['div' => [ 'class' => 'input-group' ]], + ['div' => [ + 'class' => 'input-group-prepend' + ]], ['span' => [ - 'class' => 'input-group-addon' + 'class' => 'input-group-text' ]], '$', '/span', + '/div', ['input' => [ 'type' => 'text', 'class' => 'form-control', 'name' => $fieldName, 'id' => $fieldName ]], + ['div' => [ + 'class' => 'input-group-append' + ]], ['span' => [ - 'class' => 'input-group-addon' + 'class' => 'input-group-text' ]], '.00', '/span', '/div', + '/div', '/div' ]; $this->_testInput($expected, $fieldName, @@ -714,8 +730,8 @@ public function testInputGroup() { ['div' => [ 'class' => 'input-group' ]], - ['span' => [ - 'class' => 'input-group-btn' + ['div' => [ + 'class' => 'input-group-prepend' ]], ['button' => [ 'class' => 'btn btn-primary', @@ -723,7 +739,7 @@ public function testInputGroup() { ]], 'Go!', '/button', - '/span', + '/div', ['input' => [ 'type' => 'text', 'class' => 'form-control', @@ -751,8 +767,8 @@ public function testInputGroup() { 'name' => $fieldName, 'id' => $fieldName ]], - ['span' => [ - 'class' => 'input-group-btn' + ['div' => [ + 'class' => 'input-group-append' ]], ['button' => [ 'class' => 'btn btn-primary', @@ -760,7 +776,7 @@ public function testInputGroup() { ]], 'Go!', '/button', - '/span', + '/div', '/div', '/div' ]; @@ -780,8 +796,8 @@ public function testInputGroup() { 'name' => $fieldName, 'id' => $fieldName ]], - ['span' => [ - 'class' => 'input-group-btn' + ['div' => [ + 'class' => 'input-group-append' ]], ['button' => [ 'class' => 'btn btn-primary', @@ -795,7 +811,7 @@ public function testInputGroup() { ]], 'GoGo!', '/button', - '/span', + '/div', '/div', '/div' ]; @@ -825,7 +841,7 @@ public function testAppendDropdown() { 'id' => $fieldName ]], ['div' => [ - 'class' => 'input-group-btn' + 'class' => 'input-group-append' ]], ['div' => [ 'class' => 'btn-group', @@ -876,7 +892,7 @@ public function testAppendDropdown() { 'id' => $fieldName ]], ['div' => [ - 'class' => 'input-group-btn' + 'class' => 'input-group-append' ]], ['div' => [ 'class' => 'btn-group dropup',