mousetrap-rails 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +4 -0
- data/README.md +62 -10
- data/lib/generators/mousetrap/install/USAGE +9 -0
- data/lib/generators/mousetrap/install/install_generator.rb +20 -0
- data/lib/generators/mousetrap/install/templates/application.js +10 -0
- data/lib/generators/mousetrap/install/templates/keybindings.js.coffee +15 -0
- data/lib/mousetrap-rails/version.rb +1 -1
- metadata +6 -2
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,12 +1,13 @@
|
|
1
|
-
# Mousetrap::Rails
|
1
|
+
# Mousetrap::Rails [![endorse](http://api.coderwall.com/kugaevsky/endorsecount.png)](http://coderwall.com/kugaevsky)
|
2
2
|
|
3
3
|
[Moustrap](https://github.com/ccampbell/mousetrap) is a javascript library for handling keyboard shortcuts in your web applications written by [Craig Campbell](http://craig.is/).
|
4
4
|
|
5
5
|
The `mousetrap-rails` gem integrates Moustrap javascript library with Rails Asset Pipeline.
|
6
6
|
|
7
|
+
|
7
8
|
## Installation
|
8
9
|
|
9
|
-
###
|
10
|
+
### Add mousetrap-rails gem to app
|
10
11
|
|
11
12
|
Add this line to your application's Gemfile:
|
12
13
|
|
@@ -16,26 +17,77 @@ And then execute:
|
|
16
17
|
|
17
18
|
$ bundle install
|
18
19
|
|
19
|
-
###
|
20
|
+
### Run generator
|
20
21
|
|
21
|
-
|
22
|
+
$ rails generate mousetrap:install
|
22
23
|
|
23
|
-
|
24
|
+
It will create sample `keybindings.js.coffee` file in `app/assets/javascripts` and add `//= require mousetrap` to `application.js` manifest.
|
24
25
|
|
25
26
|
Voila!
|
26
27
|
|
28
|
+
### Latest (may be unstable) version
|
29
|
+
|
30
|
+
Instead of `gem 'mousetrap-rails'` add to your Gemfile
|
31
|
+
|
32
|
+
gem 'mousetrap-rails', git: 'git://github.com/kugaevsky/mousetrap-rails.git'
|
33
|
+
|
34
|
+
|
27
35
|
## Usage
|
28
36
|
|
29
|
-
|
37
|
+
### Via data-attributes
|
38
|
+
|
39
|
+
You can add keyboard navigation to your links by using `data-keybinding` attribute.
|
40
|
+
|
41
|
+
= link_to 'Homepage', root_path, data: { keybinding: 'h' } # Press 'h' to navigate to homepage
|
42
|
+
|
43
|
+
You can jump to input
|
44
|
+
|
45
|
+
= text_field_tag 'Username', nil, data: { keybinding: 'u' } # Press 'u' to focus username input field
|
46
|
+
|
47
|
+
### Via javascript
|
30
48
|
|
31
|
-
|
32
|
-
Mousetrap.bind 's', -> console.log 's pressed!'
|
49
|
+
Any javascript function can be called with mousetrap
|
33
50
|
|
34
|
-
|
51
|
+
```coffeescript
|
52
|
+
Mousetrap.bind 'f', (e) -> alert 'My perfect function called'
|
53
|
+
```
|
54
|
+
|
55
|
+
### More examples (from official guide)
|
56
|
+
|
57
|
+
```coffeescript
|
58
|
+
# single keys
|
59
|
+
Mousetrap.bind '4', -> alert '4 pressed!'
|
60
|
+
Mousetrap.bind 'x', (-> alert 'x pressed!'), 'keyup'
|
61
|
+
|
62
|
+
# combinations
|
63
|
+
Mousetrap.bind 'command+shift+k', ->
|
64
|
+
alert 'command+shift+k pressed!'
|
65
|
+
false
|
66
|
+
|
67
|
+
Mousetrap.bind ['command+k', 'ctrl+k'], ->
|
68
|
+
alert 'command+k or ctrl+k pressed!'
|
69
|
+
false
|
70
|
+
|
71
|
+
# gmail style sequences
|
72
|
+
Mousetrap.bind 'g i', -> console.log 'g i sequence pressed!'
|
73
|
+
Mousetrap.bind '* a', -> console.log '* a sequence pressed!'
|
74
|
+
|
75
|
+
# konami code!
|
76
|
+
Mousetrap.bind 'up up down down left right left right b a enter', -> console.log 'You WIN!'
|
77
|
+
```
|
35
78
|
|
36
79
|
You can find full documentation on [Moustrap library page](http://craig.is/killing/mice). Really, look there – there are plenty examples of using this awesome library.
|
37
80
|
|
81
|
+
|
82
|
+
## TODO
|
83
|
+
|
84
|
+
* Generators
|
85
|
+
* Helpers
|
86
|
+
* Keyboard navigation for links
|
87
|
+
* Keyboard navigation for inputs
|
88
|
+
|
89
|
+
|
38
90
|
## Authors
|
39
91
|
|
40
92
|
* mousetrap-rails gem by [Nick Kugaevsky](http://kugaevsky.ru)
|
41
|
-
* original moustrap library by [Craig Campbell](http://craig.is/)
|
93
|
+
* original moustrap library by [Craig Campbell](http://craig.is/)
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Description:
|
2
|
+
Mousetrap generator installs mousetrap javascript library in your Rails application
|
3
|
+
|
4
|
+
Example:
|
5
|
+
rails generate mousetrap:install
|
6
|
+
|
7
|
+
This will:
|
8
|
+
Create `keybindings.js.coffee' file in your `app/assets/javascripts' directory
|
9
|
+
And add `//= require mousetrap' line to `application.js' file to include library to Rails Asset Pipeline
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Mousetrap
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < ::Rails::Generators::Base
|
4
|
+
desc "Copy Mousetrap default files"
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
|
7
|
+
def copy_mousetrap
|
8
|
+
copy_file "keybindings.js.coffee", "app/assets/javascripts/keybindings.js.coffee"
|
9
|
+
end
|
10
|
+
|
11
|
+
def add_assets
|
12
|
+
if File.exist?('app/assets/javascripts/application.js')
|
13
|
+
insert_into_file "app/assets/javascripts/application.js", "//= require mousetrap\n", :after => "jquery_ujs\n"
|
14
|
+
else
|
15
|
+
copy_file "application.js", "app/assets/javascripts/application.js"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into including all the files listed below.
|
2
|
+
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
|
3
|
+
// be included in the compiled file accessible from http://example.com/assets/application.js
|
4
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
5
|
+
// the compiled file.
|
6
|
+
//
|
7
|
+
//= require jquery
|
8
|
+
//= require jquery_ujs
|
9
|
+
//= require mousetrap
|
10
|
+
//= require_tree .
|
@@ -0,0 +1,15 @@
|
|
1
|
+
$ ->
|
2
|
+
# Hotkey binding to links with 'data-keybindings' attribute
|
3
|
+
# Navigate link when hotkey pressed
|
4
|
+
$('a[data-keybinding]').each (i, el) ->
|
5
|
+
Mousetrap.bind $(el).data('keybinding'), (e) -> el.click()
|
6
|
+
|
7
|
+
# Hotkey binding to inputs with 'data-keybindings' attribute
|
8
|
+
# Focus input when hotkey pressed
|
9
|
+
$('input[data-keybinding]').each (i, el) ->
|
10
|
+
Mousetrap.bind $(el).data('keybinding'), (e) ->
|
11
|
+
el.focus()
|
12
|
+
if e.preventDefault
|
13
|
+
e.preventDefault()
|
14
|
+
else
|
15
|
+
e.returnValue = false
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mousetrap-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-23 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Mousetrap is a javascript library for handling keyboard shortcuts in
|
15
15
|
your web applications. This gem integrates Mousetrap with Rails asset pipeline for
|
@@ -26,6 +26,10 @@ files:
|
|
26
26
|
- LICENSE.txt
|
27
27
|
- README.md
|
28
28
|
- Rakefile
|
29
|
+
- lib/generators/mousetrap/install/USAGE
|
30
|
+
- lib/generators/mousetrap/install/install_generator.rb
|
31
|
+
- lib/generators/mousetrap/install/templates/application.js
|
32
|
+
- lib/generators/mousetrap/install/templates/keybindings.js.coffee
|
29
33
|
- lib/mousetrap-rails.rb
|
30
34
|
- lib/mousetrap-rails/engine.rb
|
31
35
|
- lib/mousetrap-rails/railtie.rb
|