Commit fe4b0a5b authored by David Suissa's avatar David Suissa
Browse files

Issue #3494646 by dydave, ressa: Added keyboard shortcut 'Alt + a' to focus...

Issue #3494646 by dydave, ressa: Added keyboard shortcut 'Alt + a' to focus Admin Toolbar Search field.
parent d2f851b5
Loading
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
# Admin Toolbar Search

Admin Toolbar Search provides a search field for administration pages.
Use the shortcut `Alt` + `a` for quick access.

For a full description of the module, visit the
[project page](https://www.drupal.org/project/admin_toolbar).

Submit bug reports and feature suggestions, or track changes in the
[issue queue](https://www.drupal.org/project/issues/search/admin_toolbar).

## Table of contents

- Requirements
- Installation
- Configuration

## Requirements

This module requires the following modules:

- [Admin Toolbar](https://www.drupal.org/project/admin_toolbar)

## Installation

Install as you would normally install a contributed Drupal module. For further
information, see
[Installing Drupal Modules](https://www.drupal.org/docs/extending-drupal/installing-drupal-modules).

## Configuration

No configuration is needed.
+27 −0
Original line number Diff line number Diff line
<?php

/**
 * @file
 * Install, update and uninstall functions for the Admin Toolbar Search module.
 */

/**
 * Update settings: 'display_menu_item' and 'enable_keyboard_shortcut'.
 */
function admin_toolbar_search_update_8001() {
  // Convert the 'display_menu_item' setting from integer to boolean and enable
  // the 'enable_keyboard_shortcut' setting by default.
  /** @var \Drupal\Core\Config\Config $admin_toolbar_search_config */
  $admin_toolbar_search_config = \Drupal::service('config.factory')
    ->getEditable('admin_toolbar_search.settings');
  // Get the current value of 'display_menu_item' setting, which is an integer.
  $display_menu_item = $admin_toolbar_search_config->get('display_menu_item');

  // Update the configuration settings.
  $admin_toolbar_search_config
    // Convert the existing field value from an integer to a boolean.
    ->set('display_menu_item', (bool) $display_menu_item)
    // Enable the keyboard shortcut by default.
    ->set('enable_keyboard_shortcut', TRUE)
    ->save(TRUE);
}
+6 −0
Original line number Diff line number Diff line
@@ -9,3 +9,9 @@ search:
    - core/drupal
    - core/once
    - core/drupal.autocomplete

search.keyboard_shortcut:
  js:
    js/admin_toolbar_search.keyboard_shortcut.js: {}
  dependencies:
    - admin_toolbar_search/search
+26 −9
Original line number Diff line number Diff line
@@ -6,7 +6,6 @@
 */

use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\Url;

/**
@@ -34,16 +33,21 @@ function admin_toolbar_search_toolbar_alter(&$items) {
  $admin_toolbar_tools_enabled = \Drupal::service('module_handler')
    ->moduleExists('admin_toolbar_tools');

  $config = \Drupal::config('admin_toolbar_search.settings');
  $display_menu_item = $config->get('display_menu_item');
  $admin_toolbar_search_settings = \Drupal::config('admin_toolbar_search.settings');
  $display_menu_item = $admin_toolbar_search_settings->get('display_menu_item');
  // Admin Toolbar Search field labels.
  $search_field_title = t('Search');
  $search_field_placeholder = t('Admin Toolbar quick search');
  $search_field_title_attribute = t('Keyboard shortcut: Alt + a');

  if (!$display_menu_item) {
    // The search field is displayed directly in the Toolbar.
    $items['administration_mobile_search'] = [
      '#type' => 'toolbar_item',
      '#weight' => 100,
      'tab' => [
        '#type' => 'link',
        '#title' => new TranslatableMarkup('Search'),
        '#title' => $search_field_title,
        '#url' => Url::fromRoute('system.admin'),
        '#attributes' => [
          'class' => [
@@ -61,13 +65,13 @@ function admin_toolbar_search_toolbar_alter(&$items) {
      '#weight' => 101,
      'tab' => [
        'search' => [
          '#title' => t('Search'),
          '#title' => $search_field_title,
          '#title_display' => 'invisible',
          '#type' => 'search',
          '#size' => 30,
          '#attributes' => [
            'placeholder' => new TranslatableMarkup('Admin Toolbar quick search'),
            'accesskey' => ('a'),
            'placeholder' => $search_field_placeholder,
            'title' => $search_field_title_attribute,
          ],
          '#id' => 'admin-toolbar-search-input',
        ],
@@ -96,11 +100,12 @@ function admin_toolbar_search_toolbar_alter(&$items) {
    ];
  }
  else {
    // The search field is displayed in a specific Tray under the Search Tab.
    $items['administration_search'] = [
      "#type" => "toolbar_item",
      'tab' => [
        '#type' => 'link',
        '#title' => new TranslatableMarkup('Search'),
        '#title' => $search_field_title,
        '#url' => URL::fromRoute('system.admin'),
        '#attributes' => [
          'class' => [
@@ -110,10 +115,14 @@ function admin_toolbar_search_toolbar_alter(&$items) {
      ],
      'tray' => [
        'search' => [
          '#title' => t('Search'),
          '#title' => $search_field_title,
          '#type' => 'search',
          '#size' => 60,
          '#id' => 'admin-toolbar-search-input',
          '#attributes' => [
            'placeholder' => $search_field_placeholder,
            'title' => $search_field_title_attribute,
          ],
        ],
      ],
      '#attached' => [
@@ -140,4 +149,12 @@ function admin_toolbar_search_toolbar_alter(&$items) {
    ];
  }

  // Add the keyboard shortcut library if enabled.
  if ($admin_toolbar_search_settings->get('enable_keyboard_shortcut')) {
    $items['administration_search']['#attached']['library'][] = 'admin_toolbar_search/search.keyboard_shortcut';
    // The display menu item setting is used to determine if the search input
    // should be displayed as a menu item or directly in the toolbar.
    $items['administration_search']['#attached']['drupalSettings']['adminToolbarSearch']['displayMenuItem'] = $display_menu_item;
  }

}
+2 −1
Original line number Diff line number Diff line
display_menu_item: 0
display_menu_item: false
enable_keyboard_shortcut: true
Loading