react-router-rails 0.11.6 → 0.11.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +34 -2
- data/lib/react/router/rails.rb +3 -1
- data/lib/react/router/rails/railtie.rb +18 -0
- data/lib/react/router/rails/version.rb +1 -1
- data/lib/react/router/rails/view_helper.rb +17 -0
- data/vendor/assets/javascripts/react_router_ujs.js +69 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e07cf28306d1d239726cc55899f915debdfb561d
|
4
|
+
data.tar.gz: 51e18933b73b2b4d2713797dad291b4fcb56dc48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ffb52fb0fe227097da416a3dfc4d0b8879e5eb260ddfb15177f20e7d6521b222810aca7b81f1dda8821f017146115135cc14d00c966180e4975b92c19938d35e
|
7
|
+
data.tar.gz: 644b2270f47b15caffbca27abbb76feec2809fef64c9cbb610904e18e0ece3af0c528a1a8daea3892e6e15848d9a0b92d9fd2e29212ad4884d5be2bfe3f2a84c
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# react-router-rails
|
2
2
|
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/react-router-rails.svg)](https://badge.fury.io/rb/react-router-rails.svg)
|
4
|
+
|
3
5
|
[React Router](https://github.com/rackt/react-router/) for Rails asset pipeline
|
4
6
|
|
5
7
|
- React Router version: [0.11.6](https://github.com/rackt/react-router/tree/v0.11.6)
|
@@ -30,9 +32,37 @@
|
|
30
32
|
#= require react_router
|
31
33
|
#OR
|
32
34
|
#= require react_router.min
|
35
|
+
|
36
|
+
#Optional. Gives you the ability to use the view helper in your template
|
37
|
+
#= require react_router_ujs
|
38
|
+
```
|
39
|
+
3. Using the view helper:
|
40
|
+
|
41
|
+
Define your routes 'MyRoutes' in any javascript file like you would normally do:
|
42
|
+
|
43
|
+
```coffeescript
|
44
|
+
Route = ReactRouter.Route
|
45
|
+
|
46
|
+
@AppRoutes = (
|
47
|
+
<Route handler={App}>
|
48
|
+
<Route name='home' handler={Home} path='/' />
|
49
|
+
</Route>
|
50
|
+
)
|
33
51
|
```
|
34
52
|
|
35
|
-
|
53
|
+
In the view helper set the name of your routes component
|
54
|
+
|
55
|
+
```erb
|
56
|
+
<%= react_router 'MyRoutes' %>
|
57
|
+
```
|
58
|
+
|
59
|
+
Optionally set the location handler (defaults to HashLocation):
|
60
|
+
|
61
|
+
```erb
|
62
|
+
<%= react_router 'MyRoutes', 'HistoryLocation' %>
|
63
|
+
```
|
64
|
+
|
65
|
+
4. Using React Router in your javascript :
|
36
66
|
|
37
67
|
```js
|
38
68
|
ReactRouter.run(routes, function (Handler) {
|
@@ -50,6 +80,8 @@
|
|
50
80
|
|
51
81
|
## Acknowledgements
|
52
82
|
|
53
|
-
|
83
|
+
This gem is highly inspired and based on [React Rails](https://github.com/reactjs/react-rails) code. Thanks!
|
84
|
+
|
85
|
+
[React Router](https://github.com/rackt/react-router/) by [Ryan Florence](https://github.com/rpflorence), [Michael Jackson](https://github.com/mjackson) licensed under the [MIT license](https://github.com/rackt/react-router/blob/master/LICENSE)
|
54
86
|
|
55
87
|
Copyright [Mario Peixoto](https://github.com/mariopeixoto), released under the [MIT license](https://github.com/mariopeixoto/react-router-rails/LICENSE).
|
data/lib/react/router/rails.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rails'
|
2
|
+
|
3
|
+
module React
|
4
|
+
module Router
|
5
|
+
module Rails
|
6
|
+
class Railtie < ::Rails::Railtie
|
7
|
+
|
8
|
+
# Include the react-router-rails view helper lazily
|
9
|
+
initializer "react_router_rails.setup_view_helpers" do |app|
|
10
|
+
ActiveSupport.on_load(:action_view) do
|
11
|
+
include ::React::Router::Rails::ViewHelper
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module React
|
2
|
+
module Router
|
3
|
+
module Rails
|
4
|
+
module ViewHelper
|
5
|
+
def react_router(routes, location = 'HashLocation', &block)
|
6
|
+
html_options = {
|
7
|
+
:'data-react-router-class' => routes,
|
8
|
+
:'data-react-router-location' => location
|
9
|
+
}
|
10
|
+
|
11
|
+
content_tag(:div, '', html_options, &block)
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
// Unobtrusive scripting adapter for React Router based on react-rails gem.
|
2
|
+
// https://github.com/reactjs/react-rails/blob/master/lib/assets/javascripts/react_ujs.js
|
3
|
+
(function(document, window, React, ReactRouter) {
|
4
|
+
var ROUTER_CLASS_NAME = 'data-react-router-class';
|
5
|
+
var LOCATION_CLASS_NAME = 'data-react-router-location';
|
6
|
+
|
7
|
+
// jQuery is optional. Use it to support legacy browsers.
|
8
|
+
var $ = (typeof jQuery !== 'undefined') && jQuery;
|
9
|
+
|
10
|
+
var findReactRouterDOMNodes = function() {
|
11
|
+
var SELECTOR = '[' + ROUTER_CLASS_NAME + ']';
|
12
|
+
if ($) {
|
13
|
+
return $(SELECTOR);
|
14
|
+
} else {
|
15
|
+
return document.querySelectorAll(SELECTOR);
|
16
|
+
}
|
17
|
+
};
|
18
|
+
|
19
|
+
var mountReactRouter = function() {
|
20
|
+
var nodes = findReactRouterDOMNodes();
|
21
|
+
if (nodes.length >= 1) {
|
22
|
+
if (nodes.length > 1) {
|
23
|
+
console.warn('React Router is designed to have a single root router. ' + nodes.length + ' routers were found on the html. Using the first one.');
|
24
|
+
}
|
25
|
+
var routerNode = nodes[0];
|
26
|
+
|
27
|
+
// Assume className is simple and can be found at top-level (window).
|
28
|
+
// Fallback to eval to handle cases like 'My.React.ComponentName'.
|
29
|
+
var className = routerNode.getAttribute(ROUTER_CLASS_NAME);
|
30
|
+
var routes = window[className] || eval.call(window, className);
|
31
|
+
|
32
|
+
var locationName = routerNode.getAttribute(LOCATION_CLASS_NAME);
|
33
|
+
var location = ReactRouter[locationName] ;
|
34
|
+
|
35
|
+
ReactRouter.run(routes, location, function (Handler) {
|
36
|
+
React.render(React.createElement(Handler), routerNode);
|
37
|
+
});
|
38
|
+
}
|
39
|
+
};
|
40
|
+
|
41
|
+
var handleTurbolinksEvents = function() {
|
42
|
+
var handleEvent;
|
43
|
+
if ($) {
|
44
|
+
handleEvent = function(eventName, callback) {
|
45
|
+
$(document).on(eventName, callback);
|
46
|
+
}
|
47
|
+
} else {
|
48
|
+
handleEvent = function(eventName, callback) {
|
49
|
+
document.addEventListener(eventName, callback);
|
50
|
+
}
|
51
|
+
}
|
52
|
+
handleEvent('page:change', mountReactRouter);
|
53
|
+
};
|
54
|
+
|
55
|
+
var handleNativeEvents = function() {
|
56
|
+
if ($) {
|
57
|
+
$(mountReactRouter);
|
58
|
+
} else {
|
59
|
+
document.addEventListener('DOMContentLoaded', mountReactRouter);
|
60
|
+
}
|
61
|
+
};
|
62
|
+
|
63
|
+
if (typeof Turbolinks !== 'undefined' && Turbolinks.supported) {
|
64
|
+
handleTurbolinksEvents();
|
65
|
+
} else {
|
66
|
+
handleNativeEvents();
|
67
|
+
}
|
68
|
+
|
69
|
+
})(document, window, React, ReactRouter);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: react-router-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.6
|
4
|
+
version: 0.11.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mario Peixoto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -63,9 +63,12 @@ files:
|
|
63
63
|
- README.md
|
64
64
|
- lib/react/router/rails.rb
|
65
65
|
- lib/react/router/rails/engine.rb
|
66
|
+
- lib/react/router/rails/railtie.rb
|
66
67
|
- lib/react/router/rails/version.rb
|
68
|
+
- lib/react/router/rails/view_helper.rb
|
67
69
|
- vendor/assets/javascripts/react_router.js
|
68
70
|
- vendor/assets/javascripts/react_router.min.js
|
71
|
+
- vendor/assets/javascripts/react_router_ujs.js
|
69
72
|
homepage: https://github.com/mariopeixoto/react-router-rails
|
70
73
|
licenses:
|
71
74
|
- MIT
|