@tequila99/vue3-shortkey

1.0.5 • Public • Published

vue3-shortkey

Плагин Vue3 для вызова событий по нажатию клавиш, как отдельных, так и в различных сочетаниях. По мотивам https://github.com/fgr-araujo/vue-shortkey.

Установка

npm install @tequila99/vue3-shortkey

Инициализация

import shortkey from '@tequila99/vue3-shortkey'
Vue.use(shortkey)

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

Примеры:

Vue.use('vue-shortkey', { prevent: ['input', 'textarea'] })
Vue.use('vue-shortkey', { prevent: ['.my-class-name', 'textarea.class-of-textarea'] })

Используемые клавиши

Для добавления к любому элементу клавиатурного сокращения используется директива v-shortkey. В качестве параметров ей передается массив строк, соответствующих нажатым клавишам. Клавиши Ctrl, Alt, Shift и Meta являются модификаторами и могут быть использованы в любых сочетаниях с другими клавишами. Сочетания клавиш не зависят от регистра и выбранной раскладки (русская-английская). Клавиши дополнительной цифровой клавиатуры в этой версии не задействованы.

Клавиша Строка в параметрах
ArrowUp 'arrowup'
ArrowRight 'arrowright'
ArrowDown 'arrowdown'
AltGraph 'altgraph'
Escape 'esc'
Enter 'enter'
Tab 'tab'
Space 'space'
PageUp 'pageup'
PageDown 'pagedown'
Home 'home'
End 'end'
Delete 'del'
Backspace 'backspace'
Insert 'insert'
NumLock 'numlock'
CapsLock 'capslock'
Pause 'pause'
ContextMenu 'contextmenu'
ScrollLock 'scrolllock'
BrowserHome 'browserhome'
MediaSelect 'mediaselect'
PrintScreen 'printscreen'
0-1 '0'-'9'
A-Z 'a'= 'z'
F1-F12 'f1'-'f12'
; ';'
= '='
, ','
- '-'
. '.'
/ '/'
` '`'
[ '['
] ']'
' '''

Примеры использования

Поведение по умолчанию

Код ниже подразумевает, что комбинация клавиш Ctrl + Alt + o будет вызывать выполнение метода 'handleAction'

<button v-shortkey="['ctrl', 'alt', 'o']" @shortkey="handleAction">Open</button>

Метод, указанный в событии @shortkey будет вызываться каждый раз при нажатии клавиш. При необходимости вызвать этот метод только один раз, можно применить модификатор once

<button v-shortkey.once="['ctrl', 'alt', 'o']" @shortkey="theAction">Open</button>

Установка фокуса

С помощью клавиатурных сокращений можно легко установить фокус на необходимый элемент

Код ниже подразумевает, что сочетание клавиш Alt + I установит фокус на поле ввода

<input type="text" v-shortkey.focus="['alt', 'i']" v-model="name" />

Режим клавиатуры

Иногда необходимо вызвать метода-обработчик как при нажатии, так и при отпускании клавиш. Т.е. первоначально метод срабатывает при нажатии клавиш, когда же клавиши отпущены - метод срабатывает снова, как триггер. Для использования такого режима служит модификатор push.

Пример ниже показывает возможный код

<tooltip v-shortkey.push="['f3']" @shortkey="toggleToolTip"></tooltip>

Выполнение всех обработчиков

По умолчанию событие обрабатывает и выполняется на последнем смонтированном элементе (компоненте). Чтобы выполнить все обработчики для того же клавиатурного сочетания на всех смонтированных элементах (компонентах) необходимо использовать модификатор propagate

Пример ниже подразумевает выполнение при нажатии Ctrl + Alt + o методов anAction и aDiferrentAction

 <my-first-component v-shortkey.propagate="['ctrl', 'alt', 'o']" @shortkey="anAction"></my-first-component>
 <my-second-component v-shortkey.propagate="['ctrl', 'alt', 'o']" @shortkey="aDifferentAction"></my-second-component>

Пропуск отдельного элемента (компонента)

Кроме задания списка пропускаемых при обработке типов элементов или других селекторов, существует возможность пропустить при обработке отдельный элемент используя модификатор avoid

Пример кода

<textarea v-shortkey.avoid></textarea>

Логи

Добавлена возможность выводить логи и другие сообщения. Для этого предназначен параметр logger при инициализации плагина. Значение по умолчанию - false, т.е. в консоль ничего не выводится.

Пример инициализации

import shortkey from '@tequila99/vue3-shortkey'
Vue.use(shortkey, { logger: true })

в этом случае для вывода логов будет использоваться стандартная утилита console.

В качестве logger может быть использован объект, содержащий в себе методы info, error, warn и debug.

пример:

import shortkey from '@tequila99/vue3-shortkey'

const logger = {
  info (message) { console.log(message) },
  error (message) { console.log(message) },
  warn (message) { console.log(message) },
  debug (message) { console.log(message) }
}

Vue.use(shortkey, { logger })

если сигнатура объекта logger не соответствует ожидаемой (к примеру отсутствует один или несколько вышеуказанных методов) - вывод логов будет включен, но для вывода будет использоваться стандартная утилита console

Тесты

Запуск тестов

npm run test

TODO

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

Package Sidebar

Install

npm i @tequila99/vue3-shortkey

Weekly Downloads

29

Version

1.0.5

License

MIT

Unpacked Size

39.2 kB

Total Files

10

Last publish

Collaborators

  • tequila99