Skip to content

173 input groups #175

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Mar 1, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 20 additions & 20 deletions src/View/Helper/FormHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -119,9 +119,8 @@ class FormHelper extends \Cake\View\Helper\FormHelper {
'inputGroup' => '{{inputGroupStart}}{{input}}{{inputGroupEnd}}',
'inputGroupStart' => '<div class="input-group">{{prepend}}',
'inputGroupEnd' => '{{append}}</div>',
'inputGroupAddons' => '<span class="input-group-addon">{{content}}</span>',
'inputGroupButtons' => '<span class="input-group-btn">{{content}}</span>',
'inputGroupDropdowns' => '<div class="input-group-btn">{{content}}</div>',
'inputGroupAddons' => '<div class="input-group-{{type}}">{{content}}</div>',
'inputGroupText' => '<span class="input-group-text">{{content}}</span>',
'helpBlock' => '<small class="help-block form-text text-muted">{{content}}</small>',
'buttonGroup' => '<div class="btn-group{{attrs.class}}" role="group"{{attrs}}>{{content}}</div>',
'buttonGroupVertical' => '<div class="btn-group-vertical{{attrs.class}}" role="group"{{attrs}}>{{content}}</div>',
Expand Down Expand Up @@ -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, '<button') === 0;
$isDropdown = strpos($addonOrButtons, 'data-toggle="dropdown"');
if (!$isButton && !$isDropdown) {
$addonOrButtons = $this->formatTemplate('inputGroupText', [
'content' => $addonOrButtons
]);
}
$addonOrButtons = $this->formatTemplate($template, [

$addonOrButtons = $this->formatTemplate('inputGroupAddons', [
'type' => strtolower($type),
'content' => $addonOrButtons
]);
}

return $addonOrButtons;
}

Expand Down Expand Up @@ -364,7 +364,7 @@ protected function _wrap($input, $prepend, $append) {
* opening `<div>` 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]);
}
Expand All @@ -382,7 +382,7 @@ public function prepend($input, $prepend) {
* closing `</div>` 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]);
}
Expand Down Expand Up @@ -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);

}

/**
Expand Down
13 changes: 10 additions & 3 deletions tests/TestCase/View/Helper/EasyIconTraitTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,6 @@ public function testEasyIcon() {
'result' => 'i:plus'
]
]);

}

public function testHtmlHelperMethods() {
Expand Down Expand Up @@ -176,29 +175,37 @@ 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',
'aria-hidden' => 'true'
]], '/i',
'/span',
'/div',
'/div',
'/div'
], $result);
//BootstrapFormHelper::prepend($input, $prepend); // For $prepend.
Expand Down
46 changes: 31 additions & 15 deletions tests/TestCase/View/Helper/FormHelperTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand All @@ -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']);
Expand All @@ -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,
Expand All @@ -714,16 +730,16 @@ public function testInputGroup() {
['div' => [
'class' => 'input-group'
]],
['span' => [
'class' => 'input-group-btn'
['div' => [
'class' => 'input-group-prepend'
]],
['button' => [
'class' => 'btn btn-primary',
'type' => 'submit'
]],
'Go!',
'/button',
'/span',
'/div',
['input' => [
'type' => 'text',
'class' => 'form-control',
Expand Down Expand Up @@ -751,16 +767,16 @@ public function testInputGroup() {
'name' => $fieldName,
'id' => $fieldName
]],
['span' => [
'class' => 'input-group-btn'
['div' => [
'class' => 'input-group-append'
]],
['button' => [
'class' => 'btn btn-primary',
'type' => 'submit'
]],
'Go!',
'/button',
'/span',
'/div',
'/div',
'/div'
];
Expand All @@ -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',
Expand All @@ -795,7 +811,7 @@ public function testInputGroup() {
]],
'GoGo!',
'/button',
'/span',
'/div',
'/div',
'/div'
];
Expand Down Expand Up @@ -825,7 +841,7 @@ public function testAppendDropdown() {
'id' => $fieldName
]],
['div' => [
'class' => 'input-group-btn'
'class' => 'input-group-append'
]],
['div' => [
'class' => 'btn-group',
Expand Down Expand Up @@ -876,7 +892,7 @@ public function testAppendDropdown() {
'id' => $fieldName
]],
['div' => [
'class' => 'input-group-btn'
'class' => 'input-group-append'
]],
['div' => [
'class' => 'btn-group dropup',
Expand Down