diff --git a/src/Plugin/facets/widget/LinksWidget.php b/src/Plugin/facets/widget/LinksWidget.php index a2ef401..0960981 100644 --- a/src/Plugin/facets/widget/LinksWidget.php +++ b/src/Plugin/facets/widget/LinksWidget.php @@ -77,10 +77,7 @@ class LinksWidget implements WidgetInterface { */ protected function buildListItems(ResultInterface $result, $show_numbers) { - $classes = ['facet_item']; - if ($result->isActive()) { - $classes[] = 'facet_item--active'; - } + $classes = ['facet-item']; if ($children = $result->getChildren()) { $items = $this->prepareLink($result, $show_numbers); @@ -92,13 +89,22 @@ class LinksWidget implements WidgetInterface { $classes[] = 'expanded'; $items['children'] = [$children_markup]; + + if ($result->isActive()) { + $items['#attributes'] = ['class' => 'active-trail']; + } } else { $items = $this->prepareLink($result, $show_numbers); + + if ($result->isActive()) { + $items['#attributes'] = ['class' => 'is-active']; + } } $items['#wrapper_attributes'] = ['class' => $classes]; + return $items; } diff --git a/tests/src/Unit/Plugin/widget/LinksWidgetTest.php b/tests/src/Unit/Plugin/widget/LinksWidgetTest.php index 0ca4542..ec3fa76 100644 --- a/tests/src/Unit/Plugin/widget/LinksWidgetTest.php +++ b/tests/src/Unit/Plugin/widget/LinksWidgetTest.php @@ -69,7 +69,7 @@ class LinksWidgetTest extends UnitTestCase { $this->assertInternalType('array', $output['#items'][$index]); $this->assertEquals($value, $output['#items'][$index]['#title']); $this->assertEquals('link', $output['#items'][$index]['#type']); - $this->assertEquals(['facet_item'], $output['#items'][$index]['#wrapper_attributes']['class']); + $this->assertEquals(['facet-item'], $output['#items'][$index]['#wrapper_attributes']['class']); } } @@ -100,12 +100,10 @@ class LinksWidgetTest extends UnitTestCase { $this->assertInternalType('array', $output['#items'][$index]); $this->assertEquals($value, $output['#items'][$index]['#title']); $this->assertEquals('link', $output['#items'][$index]['#type']); - if ($index == 0 || $index == 3) { - $this->assertEquals(['facet_item', 'facet_item--active'], $output['#items'][$index]['#wrapper_attributes']['class']); - } - else { - $this->assertEquals(['facet_item'], $output['#items'][$index]['#wrapper_attributes']['class']); + if ($index === 0 || $index === 3) { + $this->assertEquals('is-active', $output['#items'][$index]['#attributes']['class']); } + $this->assertEquals(['facet-item'], $output['#items'][$index]['#wrapper_attributes']['class']); } } @@ -131,11 +129,9 @@ class LinksWidgetTest extends UnitTestCase { $this->assertEquals($value, $output['#items'][$index]['#title']); $this->assertEquals('link', $output['#items'][$index]['#type']); if ($index === 1) { - $this->assertEquals(['facet_item', 'facet_item--active'], $output['#items'][$index]['#wrapper_attributes']['class']); - } - else { - $this->assertEquals(['facet_item'], $output['#items'][$index]['#wrapper_attributes']['class']); + $this->assertEquals('is-active', $output['#items'][$index]['#attributes']['class']); } + $this->assertEquals(['facet-item'], $output['#items'][$index]['#wrapper_attributes']['class']); } // Enable the 'show_numbers' setting again to make sure that the switch @@ -158,12 +154,50 @@ class LinksWidgetTest extends UnitTestCase { $this->assertEquals($value, $output['#items'][$index]['#title']); $this->assertEquals('link', $output['#items'][$index]['#type']); if ($index === 1) { - $this->assertEquals(['facet_item', 'facet_item--active'], $output['#items'][$index]['#wrapper_attributes']['class']); + $this->assertEquals('is-active', $output['#items'][$index]['#attributes']['class']); + } + $this->assertEquals(['facet-item'], $output['#items'][$index]['#wrapper_attributes']['class']); + } + } + + /** + * Tests for links widget with children. + */ + public function testChildren() { + $original_results = $this->originalResults; + + $child = new Result('snake', 'Snake', 5); + $original_results[1]->setActiveState(TRUE); + $original_results[1]->setChildren($child); + + $facet = new Facet([], 'facet'); + $facet->setResults($original_results); + $facet->setWidgetConfigs(['show_numbers' => 1]); + + $output = $this->widget->build($facet); + + $this->assertInternalType('array', $output); + $this->assertCount(4, $output['#items']); + + $expected_links = [ + 'Llama (10)', + '(-) Badger (20)', + 'Duck (15)', + 'Alpaca (9)', + ]; + foreach ($expected_links as $index => $value) { + $this->assertInternalType('array', $output['#items'][$index]); + $this->assertEquals($value, $output['#items'][$index]['#title']); + $this->assertEquals('link', $output['#items'][$index]['#type']); + if ($index === 1) { + $this->assertEquals('active-trail', $output['#items'][$index]['#attributes']['class']); + $this->assertEquals(['facet-item', 'expanded'], $output['#items'][$index]['#wrapper_attributes']['class']); } else { - $this->assertEquals(['facet_item'], $output['#items'][$index]['#wrapper_attributes']['class']); + $this->assertEquals(['facet-item'], $output['#items'][$index]['#wrapper_attributes']['class']); } } + } }