glimmer-dsl-web 0.4.2 → 0.4.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/CHANGELOG.md +7 -0
- data/README.md +283 -56
- data/VERSION +1 -1
- data/glimmer-dsl-web.gemspec +3 -2
- data/lib/glimmer/data_binding/element_binding.rb +10 -4
- data/lib/glimmer/dsl/web/class_name_inclusion_data_binding.rb +21 -0
- data/lib/glimmer/dsl/web/dsl.rb +2 -0
- data/lib/glimmer/web/component.rb +8 -2
- data/lib/glimmer/web/element_proxy.rb +29 -2
- data/lib/glimmer-dsl-web/samples/hello/hello_style.rb +24 -25
- data/lib/glimmer-dsl-web/samples/regular/todo_mvc/views/edit_todo_input.rb +19 -10
- data/lib/glimmer-dsl-web/samples/regular/todo_mvc/views/new_todo_form.rb +8 -8
- data/lib/glimmer-dsl-web/samples/regular/todo_mvc/views/new_todo_input.rb +8 -5
- data/lib/glimmer-dsl-web/samples/regular/todo_mvc/views/todo_filters.rb +64 -51
- data/lib/glimmer-dsl-web/samples/regular/todo_mvc/views/todo_input.rb +14 -14
- data/lib/glimmer-dsl-web/samples/regular/todo_mvc/views/todo_list.rb +33 -37
- data/lib/glimmer-dsl-web/samples/regular/todo_mvc/views/todo_list_item.rb +62 -59
- data/lib/glimmer-dsl-web/samples/regular/todo_mvc/views/todo_mvc_footer.rb +9 -9
- data/lib/glimmer-dsl-web/samples/regular/todo_mvc.rb +20 -20
- metadata +2 -1
@@ -15,19 +15,30 @@ class TodoListItem
|
|
15
15
|
|
16
16
|
markup {
|
17
17
|
li {
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
18
|
+
# Data-bind inclusion of `li` `class` `completed` unidirectionally to todo completed attribute,
|
19
|
+
# meaning inclusion of completed class is determined by todo completed boolean attribute.
|
20
|
+
class_name(:completed) <= [todo, :completed]
|
21
|
+
|
22
|
+
# Data-bind inclusion of `li` `class` `active` unidirectionally to todo completed attribute, negated,
|
23
|
+
# meaning inclusion of active class is determined by todo completed boolean attribute, negated.
|
24
|
+
class_name(:active) <= [todo, :completed, on_read: :!]
|
25
|
+
|
26
|
+
# Data-bind inclusion of `li` `class` `editing` unidirectionally to todo editing attribute,
|
27
|
+
# meaning inclusion of editing class is determined by todo editing boolean attribute.
|
28
|
+
class_name(:editing) <= [todo, :editing]
|
24
29
|
|
25
30
|
div(class: 'view') {
|
26
31
|
input(class: 'toggle', type: 'checkbox') {
|
32
|
+
# Data-bind `input` `checked` property bidirectionally to `todo` `completed` attribute
|
33
|
+
# meaning make any changes to the `todo` `completed` attribute value automatically update the `input` `checked` property
|
34
|
+
# and any changes to the `input` `checked` property by the user automatically update the `todo` `completed` attribute value.
|
35
|
+
# `after_write` hook is invoked after writing a new value to the model attribute (`todo` `completed` attribute)
|
27
36
|
checked <=> [todo, :completed]
|
28
37
|
}
|
29
38
|
|
30
39
|
label {
|
40
|
+
# Data-bind `label` inner HTML unidirectionally to `todo.task` (`String` value),
|
41
|
+
# meaning make changes to `todo` `task` attribute automatically update `label` inner HTML.
|
31
42
|
inner_html <= [todo, :task]
|
32
43
|
|
33
44
|
ondblclick do |event|
|
@@ -50,111 +61,103 @@ class TodoListItem
|
|
50
61
|
}
|
51
62
|
}
|
52
63
|
|
53
|
-
def li_class_name(todo)
|
54
|
-
classes = []
|
55
|
-
classes << 'completed' if todo.completed?
|
56
|
-
classes << 'active' if !todo.completed?
|
57
|
-
classes << 'editing' if todo.editing?
|
58
|
-
classes.join(' ')
|
59
|
-
end
|
60
|
-
|
61
64
|
style {
|
62
|
-
|
65
|
+
r('.todo-list li.completed label') {
|
63
66
|
color '#949494'
|
64
67
|
text_decoration 'line-through'
|
65
68
|
}
|
66
69
|
|
67
|
-
|
70
|
+
r('.todo-list li') {
|
68
71
|
border_bottom '1px solid #ededed'
|
69
|
-
font_size
|
70
|
-
position
|
72
|
+
font_size 24
|
73
|
+
position :relative
|
71
74
|
}
|
72
75
|
|
73
|
-
|
74
|
-
_webkit_appearance
|
75
|
-
appearance
|
76
|
-
border
|
77
|
-
bottom
|
78
|
-
height
|
76
|
+
r('.todo-list li .toggle') {
|
77
|
+
_webkit_appearance :none
|
78
|
+
appearance :none
|
79
|
+
border :none
|
80
|
+
bottom 0
|
81
|
+
height :auto
|
79
82
|
margin 'auto 0'
|
80
|
-
opacity
|
81
|
-
position
|
82
|
-
text_align
|
83
|
-
top
|
84
|
-
width
|
83
|
+
opacity 0
|
84
|
+
position :absolute
|
85
|
+
text_align :center
|
86
|
+
top 0
|
87
|
+
width 40
|
85
88
|
}
|
86
89
|
|
87
|
-
|
90
|
+
r('.todo-list li label') {
|
88
91
|
color '#484848'
|
89
|
-
display
|
92
|
+
display :block
|
90
93
|
font_weight '400'
|
91
94
|
line_height '1.2'
|
92
|
-
min_height
|
95
|
+
min_height 40
|
93
96
|
padding '15px 15px 15px 60px'
|
94
97
|
transition 'color .4s'
|
95
98
|
word_break 'break-all'
|
96
99
|
}
|
97
100
|
|
98
|
-
|
101
|
+
r('.todo-list li .toggle+label') {
|
99
102
|
background_image 'url(data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23949494%22%20stroke-width%3D%223%22/%3E%3C/svg%3E)'
|
100
|
-
background_position
|
103
|
+
background_position 0
|
101
104
|
background_repeat 'no-repeat'
|
102
105
|
}
|
103
106
|
|
104
|
-
|
107
|
+
r('.todo-list li.completed label') {
|
105
108
|
color '#949494'
|
106
109
|
text_decoration 'line-through'
|
107
110
|
}
|
108
111
|
|
109
|
-
|
112
|
+
r('.todo-list li .toggle:checked+label') {
|
110
113
|
background_image 'url(data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%2359A193%22%20stroke-width%3D%223%22%2F%3E%3Cpath%20fill%3D%22%233EA390%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22%2F%3E%3C%2Fsvg%3E)'
|
111
114
|
}
|
112
115
|
|
113
|
-
|
114
|
-
border_bottom
|
115
|
-
padding
|
116
|
+
r('.todo-list li.editing') {
|
117
|
+
border_bottom :none
|
118
|
+
padding 0
|
116
119
|
}
|
117
120
|
|
118
|
-
|
119
|
-
opacity
|
121
|
+
r('.todo-list li.editing input[type=checkbox], .todo-list li.editing label') {
|
122
|
+
opacity 0
|
120
123
|
}
|
121
124
|
|
122
|
-
|
123
|
-
bottom
|
125
|
+
r('.todo-list li .destroy') {
|
126
|
+
bottom 0
|
124
127
|
color '#949494'
|
125
|
-
display
|
126
|
-
font_size
|
127
|
-
height
|
128
|
+
display :none
|
129
|
+
font_size 30
|
130
|
+
height 40
|
128
131
|
margin 'auto 0'
|
129
|
-
position
|
130
|
-
right
|
131
|
-
top
|
132
|
+
position :absolute
|
133
|
+
right 10
|
134
|
+
top 0
|
132
135
|
transition 'color .2s ease-out'
|
133
|
-
width
|
136
|
+
width 40
|
134
137
|
}
|
135
138
|
|
136
|
-
|
137
|
-
display
|
139
|
+
r('.todo-list li:focus .destroy, .todo-list li:hover .destroy') {
|
140
|
+
display :block
|
138
141
|
}
|
139
142
|
|
140
|
-
|
143
|
+
r('.todo-list li .destroy:focus, .todo-list li .destroy:hover') {
|
141
144
|
color '#c18585'
|
142
145
|
}
|
143
146
|
|
144
|
-
|
147
|
+
r('.todo-list li .destroy:after') {
|
145
148
|
content '"×"'
|
146
|
-
display
|
149
|
+
display :block
|
147
150
|
height '100%'
|
148
151
|
line_height '1.1'
|
149
152
|
}
|
150
153
|
|
151
154
|
media ('screen and (-webkit-min-device-pixel-ratio: 0)') {
|
152
|
-
|
153
|
-
background
|
155
|
+
r('.todo-list li .toggle, .toggle-all') {
|
156
|
+
background :none
|
154
157
|
}
|
155
158
|
|
156
|
-
|
157
|
-
height
|
159
|
+
r('.todo-list li .toggle') {
|
160
|
+
height 40
|
158
161
|
}
|
159
162
|
}
|
160
163
|
}
|
@@ -16,26 +16,26 @@ class TodoMvcFooter
|
|
16
16
|
}
|
17
17
|
|
18
18
|
style {
|
19
|
-
|
19
|
+
r('footer.info') {
|
20
20
|
margin '65px auto 0'
|
21
21
|
color '#4d4d4d'
|
22
|
-
font_size
|
22
|
+
font_size 11
|
23
23
|
text_shadow '0 1px 0 rgba(255, 255, 255, 0.5)'
|
24
|
-
text_align
|
24
|
+
text_align :center
|
25
25
|
}
|
26
26
|
|
27
|
-
|
27
|
+
r('footer.info p') {
|
28
28
|
line_height '1'
|
29
29
|
}
|
30
30
|
|
31
|
-
|
32
|
-
color
|
33
|
-
text_decoration
|
31
|
+
r('footer.info a') {
|
32
|
+
color :inherit
|
33
|
+
text_decoration :none
|
34
34
|
font_weight '400'
|
35
35
|
}
|
36
36
|
|
37
|
-
|
38
|
-
text_decoration
|
37
|
+
r('footer.info a:hover') {
|
38
|
+
text_decoration :underline
|
39
39
|
}
|
40
40
|
}
|
41
41
|
end
|
@@ -37,41 +37,41 @@ class TodoMvc
|
|
37
37
|
}
|
38
38
|
|
39
39
|
style {
|
40
|
-
|
41
|
-
margin
|
42
|
-
padding
|
40
|
+
r('body, button, html') {
|
41
|
+
margin 0
|
42
|
+
padding 0
|
43
43
|
}
|
44
44
|
|
45
|
-
|
46
|
-
_webkit_font_smoothing
|
47
|
-
_webkit_appearance
|
48
|
-
appearance
|
49
|
-
background
|
50
|
-
border
|
51
|
-
color
|
52
|
-
font_family
|
45
|
+
r('button') {
|
46
|
+
_webkit_font_smoothing :antialiased
|
47
|
+
_webkit_appearance :none
|
48
|
+
appearance :none
|
49
|
+
background :none
|
50
|
+
border 0
|
51
|
+
color :inherit
|
52
|
+
font_family :inherit
|
53
53
|
font_size '100%'
|
54
|
-
font_weight
|
55
|
-
vertical_align
|
54
|
+
font_weight :inherit
|
55
|
+
vertical_align :baseline
|
56
56
|
}
|
57
57
|
|
58
|
-
|
58
|
+
r('.todoapp') {
|
59
59
|
background '#fff'
|
60
60
|
margin '130px 0 40px 0'
|
61
|
-
position
|
61
|
+
position :relative
|
62
62
|
box_shadow '0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1)'
|
63
63
|
}
|
64
64
|
|
65
65
|
media('screen and (-webkit-min-device-pixel-ratio:0)') {
|
66
|
-
|
66
|
+
r('body') {
|
67
67
|
font "14px 'Helvetica Neue', Helvetica, Arial, sans-serif"
|
68
|
-
line_height
|
68
|
+
line_height 1.4.em
|
69
69
|
background '#f5f5f5'
|
70
70
|
color '#111111'
|
71
|
-
min_width
|
72
|
-
max_width
|
71
|
+
min_width 230
|
72
|
+
max_width 550
|
73
73
|
margin '0 auto'
|
74
|
-
_webkit_font_smoothing
|
74
|
+
_webkit_font_smoothing :antialiased
|
75
75
|
font_weight '300'
|
76
76
|
}
|
77
77
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer-dsl-web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Maleh
|
@@ -299,6 +299,7 @@ files:
|
|
299
299
|
- lib/glimmer/data_binding/element_binding.rb
|
300
300
|
- lib/glimmer/dsl/web/a_expression.rb
|
301
301
|
- lib/glimmer/dsl/web/bind_expression.rb
|
302
|
+
- lib/glimmer/dsl/web/class_name_inclusion_data_binding.rb
|
302
303
|
- lib/glimmer/dsl/web/component_expression.rb
|
303
304
|
- lib/glimmer/dsl/web/content_data_binding_expression.rb
|
304
305
|
- lib/glimmer/dsl/web/data_binding_expression.rb
|