Verified Commit a902834c authored by Cristina Chumillas's avatar Cristina Chumillas
Browse files

Issue #3516887 by plopesc, gxleano, m4olivei, pdureau: Allow to customize Navigation icons

parent 9307769b
Loading
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -57,7 +57,23 @@ props:
      default: button
    icon:
      title: Icon
      type: object
      properties:
        pack_id:
          title: Icon Pack
          type: string
          default: navigation
        icon_id:
          title: Icon ID
          type: string
        settings:
          title: Icon Settings
          type: object
          default:
            class: toolbar-button__icon
            size: 20
      required:
        - icon_id
    text:
      title: Text
      description: Text of button.
+3 −3
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ appear after main classes #}
{%
  set classes = [
    'toolbar-button',
    icon ? 'toolbar-button--icon--' ~ icon : '',
    icon.icon_id ? 'toolbar-button--icon--' ~ icon.icon_id : '',
  ]
%}

@@ -24,8 +24,8 @@ appear after main classes #}

<{{ html_tag|default('button') }} {{ attributes.addClass(classes) }}>

  {% if icon %}
    {{ icon('navigation', icon, { class: 'toolbar-button__icon', size: 20 }) }}
  {% if icon.icon_id %}
    {{ icon(icon.pack_id|default('navigation'), icon.icon_id, icon.settings|default({ class: 'toolbar-button__icon', size: 20 })) }}
  {% endif %}

  {% if action %}
+3 −3
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@
  <div class="admin-toolbar-control-bar__content">
    {% include 'navigation:toolbar-button' with {
      attributes: create_attribute({'aria-expanded': 'false', 'aria-controls': 'admin-toolbar', 'type': 'button'}),
      icon: 'burger',
      icon: { icon_id: 'burger' },
      text: 'Expand sidebar'|t,
      modifiers: ['small-offset'],
      extra_classes: [
@@ -59,14 +59,14 @@
        {% include 'navigation:toolbar-button' with {
          attributes: create_attribute({ 'data-toolbar-back-control': true, 'tabindex': '-1' }),
          extra_classes: ['admin-toolbar__back-button'],
          icon: 'arrow-left',
          icon: { icon_id: 'arrow-left' },
          text: 'Back'|t,
        } only %}
        {% include 'navigation:toolbar-button' with {
          action: 'Collapse sidebar'|t,
          attributes: create_attribute({ 'aria-controls': 'admin-toolbar', 'tabindex': '-1', 'type': 'button' }),
          extra_classes: ['admin-toolbar__close-button'],
          icon: 'cross',
          icon: { icon_id: 'cross' },
        } only %}
      </div>

+13 −1
Original line number Diff line number Diff line
@@ -4,6 +4,8 @@

namespace Drupal\navigation\Menu;

use Drupal\Component\Utility\Html;
use Drupal\Component\Utility\NestedArray;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Menu\MenuActiveTrailInterface;
use Drupal\Core\Menu\MenuLinkManagerInterface;
@@ -72,8 +74,18 @@ public function build(array $tree): array {
    foreach ($tree as $item) {
      if ($item->access->isAllowed()) {
        $plugin_id = $item->link->getPluginId();
        $plugin_class = str_replace('.', '_', $plugin_id);
        $plugin_class = Html::getClass(str_replace('.', '_', $plugin_id));
        $build['#items'][$plugin_id]['class'] = $plugin_class;
        $url = $build['#items'][$plugin_id]['url'];
        $icon_defaults = [
          'pack_id' => 'navigation',
          'icon_id' => $plugin_class,
          'settings' => [
            'class' => 'toolbar-button__icon',
            'size' => 20,
          ],
        ];
        $build['#items'][$plugin_id]['icon'] = NestedArray::mergeDeep($icon_defaults, $url->getOption('icon') ?? []);
      }
    }

+3 −0
Original line number Diff line number Diff line
@@ -274,6 +274,9 @@ public function build(): array {
          'title' => $config['title'],
          'class' => $config['icon_class'],
          'url' => $url,
          'icon' => [
            'icon_id' => $config['icon_class'],
          ],
        ],
      ],
    ];
Loading