hyper-react 1.0.0.lap23 → 1.0.0.lap24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|