clearwater-virtual_list 0.1.2 → 0.1.3
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/clearwater/virtual_list/version.rb +1 -1
- data/opal/clearwater/virtual_list.rb +35 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 181c657da5f2cc21642c209c65fbb9adef3c59f1d9aa3efee0c1feb0944812af
|
4
|
+
data.tar.gz: b7052b02283c239c3b1d935a8f44b849ba0e67fbcaa86fe1d199152bf65f855d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1c8e04b1b4f9e7980ddaafc15abbba16dafa006b1a16e2463ebbe7ebe0e76b3f86df427697e7dea1da73f5f448e3c05a9384a0523a3a83a4a61b33f1ef3b0c8
|
7
|
+
data.tar.gz: 7d07b6bc44ffb048e2fdf1cc7712acc38ccb2fdfc609648c7089f35d21e1c50bd3c97f120aeb313e1652ba34a5f61ababac15c153e69c86a576f95988b10f870
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'clearwater/virtual_dom'
|
2
1
|
require 'clearwater/black_box_node'
|
3
2
|
require 'bowser'
|
4
3
|
|
@@ -28,9 +27,10 @@ module Clearwater
|
|
28
27
|
class Component
|
29
28
|
include Clearwater::BlackBoxNode
|
30
29
|
|
31
|
-
attr_reader :items, :height
|
30
|
+
attr_reader :items, :height
|
32
31
|
attr_reader :onscroll, :onresize
|
33
|
-
attr_reader :
|
32
|
+
attr_reader :app
|
33
|
+
attr_accessor :first, :last
|
34
34
|
|
35
35
|
def initialize(items, item_height:)
|
36
36
|
@items = items
|
@@ -38,7 +38,11 @@ module Clearwater
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def mount element
|
41
|
-
@
|
41
|
+
@app = Clearwater::Application.new(
|
42
|
+
component: Container.new(self),
|
43
|
+
router: NullRouter.new,
|
44
|
+
element: element,
|
45
|
+
)
|
42
46
|
@onscroll = Bowser.window.on(:scroll) { render_content element }
|
43
47
|
@onresize = Bowser.window.on(:resize) { render_content element }
|
44
48
|
|
@@ -46,7 +50,8 @@ module Clearwater
|
|
46
50
|
end
|
47
51
|
|
48
52
|
def update previous, element
|
49
|
-
@
|
53
|
+
@app = previous.app
|
54
|
+
@app.component.list = self
|
50
55
|
@onscroll = previous.onscroll
|
51
56
|
@onresize = previous.onresize
|
52
57
|
|
@@ -63,8 +68,9 @@ module Clearwater
|
|
63
68
|
end
|
64
69
|
|
65
70
|
def render_content(element)
|
66
|
-
|
67
|
-
|
71
|
+
app.component.list.first, app.component.list.last = app.component.list.visible_item_bounds(element)
|
72
|
+
|
73
|
+
app.perform_render
|
68
74
|
end
|
69
75
|
|
70
76
|
def visible_item_bounds(element)
|
@@ -96,6 +102,28 @@ module Clearwater
|
|
96
102
|
def total_height
|
97
103
|
height * items.count
|
98
104
|
end
|
105
|
+
|
106
|
+
class Container
|
107
|
+
include Clearwater::Component
|
108
|
+
|
109
|
+
attr_accessor :list
|
110
|
+
|
111
|
+
def initialize list
|
112
|
+
@list = list
|
113
|
+
end
|
114
|
+
|
115
|
+
def render
|
116
|
+
list.content
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
class NullRouter
|
121
|
+
def application= _
|
122
|
+
end
|
123
|
+
|
124
|
+
def set_outlets
|
125
|
+
end
|
126
|
+
end
|
99
127
|
end
|
100
128
|
end
|
101
129
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clearwater-virtual_list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Gaskins
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|