Навигация с клавиатуры

Gantt и его элементы могут быть доступны с помощью клавиш или их комбинаций. В этой статье описаны основы навигации с клавиатуры в Gantt, включая поведение фокуса, использование встроенных горячих клавиш и создание собственных сочетаний.

Включение функциональности

Чтобы включить навигацию с клавиатуры в Gantt, активируйте плагин keyboard_navigation с помощью метода gantt.plugins.

gantt.plugins({
    keyboard_navigation: true
});

Подробности об API gantt.ext.keyboardNavigation можно найти в статье Расширение Keyboard Navigation.

Доступны два типа навигации с клавиатуры:

  • навигация по строкам задач

Активируйте, установив свойство keyboard_navigation в true.

  • навигация по ячейкам задач

Включите, установив свойство keyboard_navigation_cells в true.

Поведение фокуса при навигации с клавиатуры

Фокус на Gantt

Нажатие клавиши Tab устанавливает фокус на Gantt, как и на любой стандартный элемент. После получения фокуса можно использовать стрелки и другие клавиши для перемещения внутри Gantt.

Повторное нажатие Tab перемещает фокус с Gantt на другую часть страницы.

Фокус на модальном окне

Когда открывается модальное окно (например, лайтбокс или окно подтверждения), фокус переключается с Gantt на модальное окно, и навигация осуществляется внутри него как в обычной форме. После закрытия окна фокус возвращается в Gantt.

Чтобы вернуть фокус в Gantt, используйте метод focus. Когда Gantt получает фокус, он устанавливается либо на активный элемент внутри, либо на первую строку, либо на последний выбранный элемент.

Стандартные действия навигации в модальном окне:

  • Enter — подтвердить и закрыть
  • Escape — закрыть без изменений

Если фокус находится на кнопке формы, нажатие Space или Enter активирует эту кнопку, а не действие модального окна.


Если фокус установлен на ячейке или строке грида, и пользователь кликает по пользовательскому HTML-элементу внутри Gantt, фокус вернётся на ячейку или строку грида.

Начиная с v7.1.13, добавление класса 'no_keyboard_navigation' к пользовательскому элементу предотвращает возврат фокуса к ячейке или строке грида.

Области действия (Scopes)

Действие, вызываемое нажатием клавиши, зависит от контекста (scope). Различные сочетания клавиш могут быть назначены разным элементам (областям) внутри Gantt:

  • "gantt" — Весь Gantt
  • "taskRow" — Строка задачи
  • "taskCell" — Ячейка внутри строки задачи
  • "headerCell" — Ячейка в заголовке

Если одно и то же сочетание клавиш назначено нескольким областям, приоритет имеет более специфичная область. Например, если сочетание назначено и Gantt, и элементу, будет срабатывать сочетание для элемента.

Добавление сочетания клавиш

Чтобы добавить новое сочетание клавиш, используйте метод addShortcut с тремя параметрами:

  • shortcut — (string) сочетание клавиш
  • handler — (function) функция, вызываемая при срабатывании сочетания
  • scope — (string) опционально, элемент-контекст для обработчика; по умолчанию "gantt"
gantt.addShortcut("shift+w", function(e){ 
    var task = gantt.locate(e); 
    if(task) 
        gantt.showQuickInfo(task)
},"taskRow");

Удаление сочетания клавиш

Чтобы удалить сочетание клавиш из области, используйте метод removeShortcut с двумя параметрами:

  • shortcut — (string) сочетание клавиш для удаления
  • scope — (string) элемент-контекст, из которого удаляется сочетание
gantt.removeShortcut("shift+w","taskRow");

Получение обработчика сочетания клавиш

Можно получить функцию-обработчик сочетания с помощью метода getShortcutHandler, который принимает:

  • shortcut — (string) сочетание клавиш
  • scope — (string) область, к которой привязано сочетание
var shortcut_handler = gantt.getShortcutHandler("shift+w","taskRow");

Этот метод возвращает функцию-обработчик для сочетания.

Синтаксис сочетаний клавиш

Сочетания клавиш могут включать:

  • клавишу-модификатор и символьную клавишу (например, "ctrl+a");
  • клавишу-модификатор и несимвольную клавишу (например, "ctrl+space");
  • одну символьную клавишу (например, "a");
  • одну несимвольную клавишу (например, "space")

Несколько сочетаний для одного действия можно перечислить через запятую, например: "ctrl+a, ctrl+space".

Поддерживаемые клавиши для сочетаний

  • клавиши-модификаторы: shift, alt, ctrl, meta
  • несимвольные клавиши: backspace, tab, enter, esc, space, up, down, left, right, home, end, pageup, pagedown, delete, insert, plus, f1-f12

Существующие сочетания клавиш

Для навигации по Gantt доступны несколько встроенных сочетаний:

Общие сочетания клавиш:

  • Tab — фокус на Gantt
  • Alt+Up/Down — вертикальная прокрутка
  • Alt+Left/Right — горизонтальная прокрутка
  • Ctrl+Enter — создать новую задачу
  • Ctrl+Z — отменить последнее действие
  • Ctrl+R — повторить отменённое действие

Сочетания для ячеек заголовка

  • Стрелки Влево/Вправо — переход между ячейками заголовка
  • Home/End — переход к первому/последнему столбцу
  • Down — переход к строкам задач
  • Space/Enter — активация ячейки заголовка (например, для сортировки)

Сочетания для строк задач

  • Up/Down — перемещение по строкам
  • PageDown/PageUp — переход к последней/первой задаче
  • Space — выбор задачи
  • Ctrl+Enter — создать новую задачу
  • Delete — удалить выбранную задачу
  • Enter — открыть лайтбокс
  • Ctrl+Left/Right — свернуть/развернуть дерево
  • Shift+Left/Right — увеличить/уменьшить отступ задачи
  • Shift+Down/Up — развернуть/свернуть ветку

Related sample:  Keyboard Navigation

Пример реализации копирования/вставки задач с помощью сочетаний Ctrl+C/Ctrl+V доступен в связанной статье.

Сочетания для ячеек задач

  • Стрелки Вверх/Вниз/Влево/Вправо — перемещение между ячейками задач
  • PageDown/PageUp — переход к первой/последней ячейке в столбце
  • Home/End — переход к первой/последней ячейке в столбце
  • Space — выбор задачи
  • Ctrl+Enter — создать новую задачу
  • Delete — удалить выбранную задачу
  • Enter — открыть лайтбокс
  • Ctrl+Left/Right — свернуть/развернуть дерево

Related sample:  Keyboard Navigation - navigate cells

Встроенное сочетание для горизонтальной прокрутки временной шкалы

Начиная с версии 4.2, Gantt поддерживает горизонтальную прокрутку временной шкалы с помощью:

-> Клавиша Shift + прокрутка колесом мыши.

С версии 6.3 вы можете изменить клавишу-модификатор по умолчанию с Shift на Alt или Meta с помощью свойства horizontal_scroll_key:

gantt.config.horizontal_scroll_key = "altKey";

Чтобы отключить горизонтальную прокрутку колесом мыши, установите свойство в false:

gantt.config.horizontal_scroll_key = false;
К началу