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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 86768c3348a431a1b97b43fddcced051f69aa697270ddc39baa5ebf249f4d0d6
4
- data.tar.gz: 32a0527f8adef0613cf12b8eacbc805e832207fd2bc05cbc92d918aa41c3b97b
3
+ metadata.gz: f835a40b1580dca8202104593f6d2c8f68cbe342236850bab449d24e56691859
4
+ data.tar.gz: 85432b5f788b3860b518df213ff6f19744a431cbc7943d46713882ac0440c3aa
5
5
  SHA512:
6
- metadata.gz: bcb9c31c77e0efae816a0a67a91c0fbc02f63ab06ea2e014e31f943aff6c15ccc8500d1eb5f1ccff30158d232a90f87ab089492395f76c93858fdb4127eb2f57
7
- data.tar.gz: f53942a3396b92b43ddd7194e171ba759b5005d3fc31266714fa10d72af34fed92276ec1bcf4f69b870fae69c0b3101f080e2b3aab06c02b0190bdacd22e4fdf
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){
@@ -1,5 +1,5 @@
1
1
  require 'hyperloop-config'
2
- Hyperloop::Context
2
+
3
3
  module React
4
4
  module Callbacks
5
5
  def self.included(base)
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
@@ -1,3 +1,3 @@
1
1
  module React
2
- VERSION = '1.0.0.lap23'
2
+ VERSION = '1.0.0.lap24'
3
3
  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 componet class for the same Element' do
6
- # TODO how come a def component_will_unmount will not be received
7
- stub_const 'Foo', Class.new(React::Component::Base)
8
- Foo.class_eval do
9
- param :name
10
- def render
11
- "hello #{params.name}"
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
- expect_any_instance_of(Foo).to_not receive(:component_will_unmount)
20
-
21
- test_div = Element.new(:div)
22
- test_div.render { Foo(name: 'fred') }
23
- test_div.render { Foo(name: 'freddy') }
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.lap23
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-18 00:00:00.000000000 Z
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.lap23
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.lap23
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.lap23
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.lap23
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