Skip to content

Commit f4ab2c8

Browse files
committed
bug #7333 Display the main action icon in split buttons (javiereguiluz)
This PR was merged into the 4.x branch. Discussion ---------- Display the main action icon in split buttons When setting an action as the main action of an action group, its icon is lost. We now display it and fall back to the action group icon, which is also configurable. Commits ------- 11b8f01 Display the main action icon in split buttons
2 parents 68708da + 11b8f01 commit f4ab2c8

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

templates/crud/action_group.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
href="{{ main_action.htmlElement.isLink ? main_action.linkUrl : null }}"
1313
action="{{ main_action.htmlElement.isForm ? main_action.linkUrl : null }}"
1414
method="{{ main_action.htmlElement.isForm ? 'POST' : null }}"
15-
icon="{{ group.icon }}"
15+
icon="{{ main_action.icon ?: group.icon }}"
1616
htmlAttributes="{{ main_action.htmlAttributes|merge({'data-action-group-name-main-action': true, onclick: main_action.htmlElement.isButton ? 'window.location=\'' ~ main_action.linkUrl ~ '\'' : null})|filter((v) => v is not null) }}"
1717
>
1818
{% set main_action_label = main_action.label|trans %}

tests/Controller/ActionGroupsCrudControllerTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,22 @@ public function testSplitButtonInIndexPage(): void
6565
static::assertGreaterThanOrEqual(2, $splitDropdown->filter('.dropdown-menu .dropdown-item')->count(), 'Split dropdown should have at least 2 actions');
6666
}
6767

68+
public function testSplitButtonMainActionIconInIndexPage(): void
69+
{
70+
$crawler = $this->client->request('GET', $this->generateIndexUrl());
71+
72+
// find the split button for group2global which has an icon on the main action
73+
$splitDropdown = $crawler->filter('.action-group[data-action-group-name="group2global"]');
74+
static::assertCount(1, $splitDropdown, 'Should have group2global action group');
75+
76+
$mainAction = $splitDropdown->filter('[data-action-group-name-main-action]');
77+
static::assertCount(1, $mainAction, 'Split dropdown should have a main action');
78+
79+
// verify the main action has the icon
80+
$icon = $mainAction->filter('i.fa-star, .btn-icon i.fa-star');
81+
static::assertCount(1, $icon, 'Main action in split button should display its icon');
82+
}
83+
6884
public function testActionGroupsWithHeadersAndDividersInIndexPage(): void
6985
{
7086
$crawler = $this->client->request('GET', $this->generateIndexUrl());

tests/TestApplication/src/Controller/ActionGroupsCrudController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function configureActions(Actions $actions): Actions
5050
->addAction(Action::new('action2', 'Action 2')->linkToCrudAction('delete'));
5151
$group2Global = ActionGroup::new('group2global', 'Global Action Group 2')
5252
->createAsGlobalActionGroup()
53-
->addMainAction(Action::new('main_action', 'Main Action')->linkToCrudAction('aGlobalAction'))
53+
->addMainAction(Action::new('main_action', 'Main Action')->setIcon('fa fa-star')->linkToCrudAction('aGlobalAction'))
5454
->addAction(Action::new('action1', 'Action 1')->linkToCrudAction('aGlobalAction'))
5555
->addAction(Action::new('action2', 'Action 2')->linkToCrudAction('aGlobalAction'));
5656

0 commit comments

Comments
 (0)