hyper-react 1.0.0.lap23 → 1.0.0.lap24
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/react/api.rb +5 -1
- data/lib/react/callbacks.rb +1 -1
- data/lib/react/object.rb +15 -0
- data/lib/reactive-ruby/version.rb +1 -1
- data/spec/react/opal_jquery_extensions_spec.rb +20 -17
- data/spec/react/to_key_spec.rb +53 -0
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f835a40b1580dca8202104593f6d2c8f68cbe342236850bab449d24e56691859
|
4
|
+
data.tar.gz: 85432b5f788b3860b518df213ff6f19744a431cbc7943d46713882ac0440c3aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb068dad9c84503247339c1205012f81385bc5460feb060bca396fa2886b2df5ab449a918c3dc70ee784b5d3b470c1c5bbe989e7f0fdffdf41481a1e91272529
|
7
|
+
data.tar.gz: 04f88e4453a78556bbdc8c2c66f0a3ffd490d08932c5279c6dd6373071847a122522eb2e445d2e37800b88613affb83fbdce3d7c1b1b1af425e8e9e3a1a04df9
|
data/lib/react/api.rb
CHANGED
@@ -71,7 +71,7 @@ module React
|
|
71
71
|
this.__opalInstanceSyncSetState = true;
|
72
72
|
this.__opalInstance.$component_will_mount();
|
73
73
|
this.__opalInstanceSyncSetState = false;
|
74
|
-
}
|
74
|
+
}
|
75
75
|
}
|
76
76
|
componentDidMount() {
|
77
77
|
this.__opalInstance.is_mounted = true
|
@@ -171,6 +171,10 @@ module React
|
|
171
171
|
props["className"] = value
|
172
172
|
elsif ["style", "dangerously_set_inner_HTML"].include? key
|
173
173
|
props[lower_camelize(key)] = value.to_n
|
174
|
+
|
175
|
+
elsif key == "key"
|
176
|
+
props["key"] = value.to_key
|
177
|
+
|
174
178
|
elsif key == 'ref' && value.is_a?(Proc)
|
175
179
|
props[key] = %x{
|
176
180
|
function(dom_node){
|
data/lib/react/callbacks.rb
CHANGED
data/lib/react/object.rb
CHANGED
@@ -12,4 +12,19 @@ class Object
|
|
12
12
|
React::Component::Tags.html_tag_class_for(const_name) || raise(e)
|
13
13
|
end
|
14
14
|
end
|
15
|
+
|
16
|
+
def to_key
|
17
|
+
object_id
|
18
|
+
end
|
19
|
+
end
|
20
|
+
class Number
|
21
|
+
def to_key
|
22
|
+
self
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class Boolean
|
27
|
+
def to_key
|
28
|
+
self
|
29
|
+
end
|
15
30
|
end
|
@@ -2,26 +2,29 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe 'opal-jquery extensions', js: true do
|
4
4
|
describe 'Element' do
|
5
|
-
xit 'will reuse the wrapper
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
def component_will_unmount
|
5
|
+
xit 'will reuse the wrapper component class for the same Element' do
|
6
|
+
evaluate_ruby do
|
7
|
+
class Foo < React::Component::Base
|
8
|
+
param :name
|
9
|
+
def render
|
10
|
+
"hello #{params.name}"
|
11
|
+
end
|
15
12
|
|
13
|
+
def self.rec_cnt
|
14
|
+
@@rec_cnt ||= 0
|
15
|
+
end
|
16
|
+
before_unmount do
|
17
|
+
@@rec_cnt ||= 0
|
18
|
+
@@rec_cnt += 1
|
19
|
+
end
|
16
20
|
end
|
17
21
|
end
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
expect(Element[test_div].find('span').html).to eq('hello freddy')
|
22
|
+
expect_evaluate_ruby do
|
23
|
+
test_div = Element.new(:div)
|
24
|
+
test_div.render { Foo(name: 'fred') }
|
25
|
+
test_div.render { Foo(name: 'freddy') }
|
26
|
+
[ Element[test_div].find('span').html, Foo.rec_cnt]
|
27
|
+
end.to eq(['hello freddy', 0])
|
25
28
|
end
|
26
29
|
|
27
30
|
it 'renders a top level component using render with a block' do
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'to_key helper', js: true do
|
4
|
+
it "has added 'to_key' method to Object and each key is different" do
|
5
|
+
expect_evaluate_ruby do
|
6
|
+
Object.new.to_key != Object.new.to_key
|
7
|
+
end.to be_truthy
|
8
|
+
end
|
9
|
+
|
10
|
+
it "to_key return 'self' for String objects" do
|
11
|
+
expect_evaluate_ruby do
|
12
|
+
debugger
|
13
|
+
"hello".to_key == "hello"
|
14
|
+
end.to be_truthy
|
15
|
+
end
|
16
|
+
|
17
|
+
it "to_key return 'self' for Number objects" do
|
18
|
+
expect_evaluate_ruby do
|
19
|
+
12.to_key == 12
|
20
|
+
end.to be_truthy
|
21
|
+
end
|
22
|
+
|
23
|
+
it "to_key return 'self' for Boolean objects" do
|
24
|
+
expect_evaluate_ruby do
|
25
|
+
true.to_key == true && false.to_key == false
|
26
|
+
end.to be_truthy
|
27
|
+
end
|
28
|
+
|
29
|
+
it "will use the use the to_key method to get the react key" do
|
30
|
+
mount "TestComponent" do
|
31
|
+
class MyTestClass
|
32
|
+
attr_reader :to_key_called
|
33
|
+
def to_key
|
34
|
+
@to_key_called = true
|
35
|
+
super
|
36
|
+
end
|
37
|
+
end
|
38
|
+
class TestComponent < Hyperloop::Component
|
39
|
+
before_mount { @test_object = MyTestClass.new }
|
40
|
+
render do
|
41
|
+
DIV(key: @test_object) { TestComponent2(test_object: @test_object) }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
class TestComponent2 < Hyperloop::Component
|
45
|
+
param :test_object
|
46
|
+
render do
|
47
|
+
"to key was called!" if params.test_object.to_key_called
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
expect(page).to have_content('to key was called!')
|
52
|
+
end
|
53
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyper-react
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.lap24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Chang
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2018-02-
|
14
|
+
date: 2018-02-28 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: hyper-store
|
@@ -19,14 +19,14 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.0.0.
|
22
|
+
version: 1.0.0.lap24
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.0.0.
|
29
|
+
version: 1.0.0.lap24
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: opal
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,14 +81,14 @@ dependencies:
|
|
81
81
|
requirements:
|
82
82
|
- - '='
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: 1.0.0.
|
84
|
+
version: 1.0.0.lap24
|
85
85
|
type: :development
|
86
86
|
prerelease: false
|
87
87
|
version_requirements: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
89
|
- - '='
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: 1.0.0.
|
91
|
+
version: 1.0.0.lap24
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: jquery-rails
|
94
94
|
requirement: !ruby/object:Gem::Requirement
|
@@ -430,6 +430,7 @@ files:
|
|
430
430
|
- spec/react/test/rspec_spec.rb
|
431
431
|
- spec/react/test/session_spec.rb
|
432
432
|
- spec/react/test/utils_spec.rb
|
433
|
+
- spec/react/to_key_spec.rb
|
433
434
|
- spec/react/top_level_component_spec.rb
|
434
435
|
- spec/react/tutorial/tutorial_spec.rb
|
435
436
|
- spec/react/validator_spec.rb
|
@@ -555,6 +556,7 @@ test_files:
|
|
555
556
|
- spec/react/test/rspec_spec.rb
|
556
557
|
- spec/react/test/session_spec.rb
|
557
558
|
- spec/react/test/utils_spec.rb
|
559
|
+
- spec/react/to_key_spec.rb
|
558
560
|
- spec/react/top_level_component_spec.rb
|
559
561
|
- spec/react/tutorial/tutorial_spec.rb
|
560
562
|
- spec/react/validator_spec.rb
|