Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
ember-key-responder
Advanced tools
A component-oriented approach to keyboard shortcuts for Ember, inspired by Cocoa's KeyResponder.
A component-oriented approach to keyboard shortcuts for Ember, inspired by Cocoa's KeyResponder.
ember-key-responder will delegate keyEvents to the current keyResponder. Typically a keyResponder is a view
, or a component
. In complex applications, various keyResponders enter and leave the system. Since only 1 keyResponder can be active at any given point in time, a stack of them is maintained. The top of the stack is considered the current keyResponder.
This allows for modals or other UI components to naturally become the default responder. As they enter they are pushed onto the stack. When they resign themselves they are dropped from the stack.
Given the following components component-a
and component-b
// component-a.js | component-b.js
export default Ember.Component.extend({
acceptsKeyResponder: true,
didInsertElement: function() {
this.becomeKeyResponder(false /* true: replace | false: pushOnToStack*/);
this._super.apply(this, arguments);
},
willDestroyElement: function() {
this.resignKeyResponder();
this._super.apply(this, arguments);
},
moveUp: function() {
// do something
}
});
the template layout of
{{#component-a}
{{#if showB}}
{{#component-b}
{{/component-b}
{{/if}}
{{/component-a}
and showB
is true
the stack of key responders is
component-b // <= current keyResponder
component-a
Key events captured will be delegated to component-b
.
If showB
becomes false
then component-b
will be removed and the stack becomes
component-a // <- current keyResponder
At this point in time key events will be delegated to component-a
.
ember install:npm ember-key-responder
// app/views/key-reponder-base.js
export default Ember.View.extend({
acceptsKeyResponder: true,
didInsertElement: function() {
this.becomeKeyResponder(false /* true: replace | false: pushOnToStack*/);
this._super();
},
willDestroyElement: function() {
this.resignKeyResponder();
this._super();
}
});
Events:
export var KEY_EVENTS = {
8: 'deleteBackward',
9: 'insertTab',
13: 'insertNewline',
27: 'cancel',
32: 'insertSpace',
37: 'moveLeft',
38: 'moveUp',
39: 'moveRight',
40: 'moveDown',
46: 'deleteForward'
};
export var MODIFIED_KEY_EVENTS = {
8: 'deleteForward',
9: 'insertBacktab',
37: 'moveLeftAndModifySelection',
38: 'moveUpAndModifySelection',
39: 'moveRightAndModifySelection',
40: 'moveDownAndModifySelection'
};
To pause or resume the keyResponder:
keyResponder.pause();
keyResponder.resume();
git clone
this repositorynpm install
bower install
ember server
ember test
ember test --server
ember build
For more information on using ember-cli, visit http://www.ember-cli.com/.
FAQs
A component-oriented approach to keyboard shortcuts for Ember, inspired by Cocoa's KeyResponder.
The npm package ember-key-responder receives a total of 5 weekly downloads. As such, ember-key-responder popularity was classified as not popular.
We found that ember-key-responder demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.