diff --git a/addon/utils/handle-key-event.js b/addon/utils/handle-key-event.js index 476bf2276..7eaaac014 100644 --- a/addon/utils/handle-key-event.js +++ b/addon/utils/handle-key-event.js @@ -1,25 +1,4 @@ -import getMouseName from 'ember-keyboard/utils/get-mouse-name'; -import listenerName from 'ember-keyboard/utils/listener-name'; import isKey from 'ember-keyboard/utils/is-key'; -import { deprecate } from '@ember/debug'; - -function modifierStrings(event) { - if (event instanceof KeyboardEvent) { - return ['alt', 'ctrl', 'meta', 'shift'].reduce((result, keyName) => { - if (event[`${keyName}Key`]) { - result.push(keyName); - } - - return result; - }, []); - } else if (event instanceof MouseEvent) { - let mouseButton = getMouseName(event.button); - if (mouseButton) { - return [mouseButton]; - } - return []; - } -} export function handleKeyEventWithPropagation( event, @@ -100,65 +79,7 @@ function triggerResponderListener(responder, event, ekEvent = null) { return; } - if (responder.trigger) { - deprecate( - 'ember-keyboard registered responders handling events via `trigger(listenerName, event)` is deprecated. A responder should have either `keyboardHandlers` (a property returning a dictionary of listenerNames to handler functions), or `handleKeyboardEvent(event)`.', - false, - { - id: 'ember-keyboard.responder-trigger', - for: 'ember-keyboard', - since: '6.0.2', - until: '7.0.0', - url: 'https://adopted-ember-addons.github.io/ember-keyboard/deprecations#responder-trigger', - } - ); - - triggerViaLegacyResponderApi(responder, event, ekEvent); - return; - } throw new Error( 'A responder registered with the ember-keyboard service must implement either `keyboardHandlers` (property returning a dictionary of listenerNames to handler functions), or `handleKeyboardEvent(event)`)' ); } - -export function getListenerNames(event) { - let result = []; - if (event instanceof KeyboardEvent) { - if (event.key) { - result.push( - listenerName( - event.type, - modifierStrings(event).concat([event.key]).join('+') - ) - ); - } - if (event.code && event.key !== event.code) { - result.push( - listenerName( - event.type, - modifierStrings(event).concat([event.code]).join('+') - ) - ); - } - } else if (event instanceof MouseEvent) { - let modifiers = modifierStrings(event); - if (modifiers.length) { - result.push(listenerName(event.type, modifierStrings(event).join('+'))); - } - } - result.push(listenerName(event.type)); - return result; -} - -export function triggerViaLegacyResponderApi(responder, event, ekEvent) { - for (const listenerName of getListenerNames(event)) { - if (responder.has && !responder.has(listenerName)) { - continue; - } - if (ekEvent) { - responder.trigger(listenerName, event, ekEvent); - } else { - responder.trigger(listenerName, event); - } - } -} diff --git a/tests/dummy/app/templates/upgrading.hbs b/tests/dummy/app/templates/upgrading.hbs index 3d4dd3c74..c4a9d41e4 100644 --- a/tests/dummy/app/templates/upgrading.hbs +++ b/tests/dummy/app/templates/upgrading.hbs @@ -31,6 +31,11 @@ combos to the `key` equivalent. e.g. replace `ctrl+KeyT` with `ctrl+t`. ember-keyboard 7.0 removes the old mixins-based APIs deprecated in 6.x cycle. +If you use ember-keyboard 5.x, it's highly advised to upgrade to ember-keyboard 6.x first +and iteratively update to the new APIs until you have no more +deprecation warnings left. +Then, upgrade to ember-keyboard 7.x should pretty simple and straightforward. + #### keyboard-press component, keyboard-shortcut and on-keyboard modifiers You should use the `on-key` helper or `on-key` modifier instead. @@ -58,4 +63,12 @@ but our recommendation is to adopt the `on-key` helper and `on-key` element modi to accomplish in templates what you previously did in your Javascript files. For more examples with suggested approaches to migrating to the new APIs see [deprecations page](/deprecations). + +#### responders handling keyboard events via trigger + +The Ember.Evented API mechanism for triggering handlers on a responder +(using `has(listenerName)` and `trigger(listenerName, event)` methods) should be replaced +with `handleKeyboardEvent(event, ekEvent)` and optionally the `canHandleKeyboardEvent(event)` methods. + +For more examples see [deprecations page](/deprecations#responder-trigger). "}}