From 1fd918d9fa46ae34059086b3711e34e451aba42d Mon Sep 17 00:00:00 2001 From: Dmitriy Gritsenko Date: Thu, 18 Apr 2019 18:59:55 +0600 Subject: [PATCH] Fixes #253: Fixed missing initial class `collapsed` of an `a` element in heading in `yii\bootstrap\Collapse` widget --- CHANGELOG.md | 2 +- src/Collapse.php | 10 ++++++++++ tests/CollapseTest.php | 47 ++++++++++++++++++++++++++++++++++++----------- 3 files changed, 47 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee1c70f..7b43b92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ Yii Framework 2 bootstrap extension Change Log 2.0.10 under development ------------------------ -- no changes in this release. +- Bug #253: Fixed missing initial class `collapsed` of an `a` element in heading in `yii\bootstrap\Collapse` widget (evil1) 2.0.9 January 29, 2019 diff --git a/src/Collapse.php b/src/Collapse.php index 20945b5..6b80e9f 100644 --- a/src/Collapse.php +++ b/src/Collapse.php @@ -184,12 +184,22 @@ class Collapse extends Widget $header = Html::encode($header); } + $active = false; + if (isset($options['class'])) { + $classes = is_string($options['class']) ? preg_split('/\s+/', $options['class'], -1, PREG_SPLIT_NO_EMPTY) : $options['class']; + $active = in_array('in', $classes, true); + } + $itemToggleOptions = array_merge([ 'tag' => 'a', 'data-toggle' => 'collapse', ], $this->itemToggleOptions); Html::addCssClass($itemToggleOptions, ['widget' => 'collapse-toggle']); + if (!$active) { + Html::addCssClass($itemToggleOptions, ['collapsed' => 'collapsed']); + } + if ($this->autoCloseItems) { $itemToggleOptions['data-parent'] = '#' . $this->options['id']; } diff --git a/tests/CollapseTest.php b/tests/CollapseTest.php index f9bbd7b..bf3dbae 100644 --- a/tests/CollapseTest.php +++ b/tests/CollapseTest.php @@ -74,14 +74,14 @@ class CollapseTest extends TestCase $this->assertEqualsWithoutLE(<< -

Collapsible Group Item #1 +
  • test content1
  • test content2
-

Collapsible Group Item #2 +
  • test content1
  • @@ -89,7 +89,7 @@ class CollapseTest extends TestCase
-

Collapsible Group Item #3

+
  • test content1

  • @@ -97,7 +97,7 @@ class CollapseTest extends TestCase
-

<h1>Collapsible Group Item #4</h1> +
  • test content1

  • @@ -135,19 +135,19 @@ HTML $this->assertEqualsWithoutLE(<< -

    Item1 +
    Content1
    -

    Item2 +
    Content2
    -

    Item3 +
    Content3
    -

    FormField +
    @@ -203,7 +203,7 @@ HTML $this->assertEqualsWithoutLE(<< -

    Collapsible Group Item #1 +
    @@ -262,7 +262,7 @@ HTML 'class' => 'custom-toggle', ], ]); - $this->assertContains('

    assertContains('