glimmer-dsl-web 0.10.0 → 0.10.2
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 +9 -0
- data/README.md +1 -1
- data/VERSION +1 -1
- data/glimmer-dsl-web.gemspec +2 -2
- data/lib/glimmer/web/component.rb +1 -0
- data/lib/glimmer/web/element_proxy.rb +10 -1
- data/lib/glimmer-dsl-web/samples/hello/hello_form.rb +1 -2
- data/lib/glimmer-dsl-web/samples/hello/hello_input_date_time.rb +6 -18
- data/lib/glimmer-dsl-web/samples/regular/todo_mvc/views/todo_list_item.rb +13 -5
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: aad28a356df583d4a4784a532111d9e4d4f3743f8855998deb69ff03521a0107
|
|
4
|
+
data.tar.gz: 79c3a03baea98bd0774d95e4dbd049e30ddde606402b17770b037cffcbdb63ce
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 427e0f03396027917230ad86fbfbfc258253b31044cadb32718caab75de8230edf22c5dc628a561db08c9b1bb82729e9e8347eef097ccb67d5e823fbcf90686f
|
|
7
|
+
data.tar.gz: e6f98162f1ab9a278547bf21d73cd861606b7595dc8ddd86cddf6901cc3b4f0d2e24af477bcbaf3bbaf870898abaa0901696e526ff040682bcede3cd595d3e07
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 0.10.2
|
|
4
|
+
|
|
5
|
+
- Support `ElementProxy#append {}`/`Glimmer::Web::Component#append {}` as an alias for `content {}` to enable appending elements to the content of a parent element
|
|
6
|
+
|
|
7
|
+
## 0.10.1
|
|
8
|
+
|
|
9
|
+
- Support auto-converting HTML element value when set via HTML attributes (kwargs)
|
|
10
|
+
- Simplify Hello, Input Date/Time Data-Binding! sample by setting value via HTML attributes (kwargs) instead of properties (nested method call)
|
|
11
|
+
|
|
3
12
|
## 0.10.0
|
|
4
13
|
|
|
5
14
|
- Ensure auto-formatting date/time/datetime/week/month values from date/time/datetime objects even without data-binding
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for Web 0.10.
|
|
1
|
+
# [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for Web 0.10.2 (Beta)
|
|
2
2
|
## Ruby-in-the-Browser Web Frontend Framework
|
|
3
3
|
### The "Rails" of Frontend Frameworks!!! ([Fukuoka Award Winning](https://andymaleh.blogspot.com/2025/01/glimmer-dsl-for-web-wins-in-fukuoka.html))
|
|
4
4
|
#### Finally, Ruby Developer Productivity, Happiness, and Fun in the Frontend!!!
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.10.
|
|
1
|
+
0.10.2
|
data/glimmer-dsl-web.gemspec
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
|
5
|
-
# stub: glimmer-dsl-web 0.10.
|
|
5
|
+
# stub: glimmer-dsl-web 0.10.2 ruby lib
|
|
6
6
|
|
|
7
7
|
Gem::Specification.new do |s|
|
|
8
8
|
s.name = "glimmer-dsl-web".freeze
|
|
9
|
-
s.version = "0.10.
|
|
9
|
+
s.version = "0.10.2".freeze
|
|
10
10
|
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
|
12
12
|
s.require_paths = ["lib".freeze]
|
|
@@ -192,7 +192,7 @@ module Glimmer
|
|
|
192
192
|
# @ancestor_component is the one tied to this component-internal element as an ancestor
|
|
193
193
|
@ancestor_component = Component.interpretation_stack.last
|
|
194
194
|
end
|
|
195
|
-
|
|
195
|
+
extract_options_from_args(args) # sets @options
|
|
196
196
|
if parent.nil?
|
|
197
197
|
options[:parent] ||= Component.interpretation_stack.last&.options&.[](:parent)
|
|
198
198
|
options[:render] ||= Component.interpretation_stack.last&.options&.[](:render)
|
|
@@ -552,6 +552,7 @@ module Glimmer
|
|
|
552
552
|
options[:bulk_render] = original_bulk_render if rendered?
|
|
553
553
|
return_value
|
|
554
554
|
end
|
|
555
|
+
alias append content
|
|
555
556
|
|
|
556
557
|
# Subclasses must override with their own mappings
|
|
557
558
|
def observation_request_to_event_mapping
|
|
@@ -1115,6 +1116,14 @@ module Glimmer
|
|
|
1115
1116
|
|
|
1116
1117
|
private
|
|
1117
1118
|
|
|
1119
|
+
def extract_options_from_args(args)
|
|
1120
|
+
@options = args.last.is_a?(Hash) ? args.last.symbolize_keys : {}
|
|
1121
|
+
if @options.has_key?(:value)
|
|
1122
|
+
@options[:value] = value # ensures setting the converted value instead of the raw value
|
|
1123
|
+
end
|
|
1124
|
+
@options
|
|
1125
|
+
end
|
|
1126
|
+
|
|
1118
1127
|
def base_css_classes
|
|
1119
1128
|
framework_css_classes = @parent.nil? ? ["#{CSS_CLASS_GLIMMER}-root"] : []
|
|
1120
1129
|
framework_css_classes += [element_id]
|
|
@@ -24,8 +24,7 @@ Document.ready? do
|
|
|
24
24
|
onclick do |event|
|
|
25
25
|
if ([@name_input, @email_input].all? {|input| input.check_validity })
|
|
26
26
|
event.prevent_default
|
|
27
|
-
|
|
28
|
-
@table.content {
|
|
27
|
+
@table.append {
|
|
29
28
|
tr {
|
|
30
29
|
td { @name_input.value }
|
|
31
30
|
td { @email_input.value }
|
|
@@ -55,50 +55,38 @@ unless Object.const_defined?(:HelloInputDateTime) # this is only needed in sampl
|
|
|
55
55
|
div {
|
|
56
56
|
div(style: 'display: grid; grid-auto-columns: 130px 260px;') { |container_div|
|
|
57
57
|
label('Date Time: ', for: 'date-time-field')
|
|
58
|
-
@date_time_field = input(id: 'date-time-field', type: 'datetime-local') {
|
|
59
|
-
value @time_presenter.date_time
|
|
60
|
-
|
|
58
|
+
@date_time_field = input(id: 'date-time-field', type: 'datetime-local', value: @time_presenter.date_time) {
|
|
61
59
|
oninput do |event|
|
|
62
60
|
@time_presenter.date_time = @date_time_field.value
|
|
63
61
|
end
|
|
64
62
|
}
|
|
65
63
|
|
|
66
64
|
label('Date: ', for: 'date-field')
|
|
67
|
-
@date_field = input(id: 'date-field', type: 'date') {
|
|
68
|
-
value @time_presenter.date_time
|
|
69
|
-
|
|
65
|
+
@date_field = input(id: 'date-field', type: 'date', value: @time_presenter.date_time) {
|
|
70
66
|
oninput do |event|
|
|
71
67
|
@time_presenter.date_time = @date_field.value
|
|
72
68
|
end
|
|
73
69
|
}
|
|
74
70
|
|
|
75
71
|
label('Time: ', for: 'time-field')
|
|
76
|
-
@time_field = input(id: 'time-field', type: 'time') {
|
|
77
|
-
value @time_presenter.date_time
|
|
78
|
-
|
|
72
|
+
@time_field = input(id: 'time-field', type: 'time', value: @time_presenter.date_time) {
|
|
79
73
|
oninput do |event|
|
|
80
74
|
@time_presenter.date_time = @time_field.value
|
|
81
75
|
end
|
|
82
76
|
}
|
|
83
77
|
|
|
84
78
|
label('Month: ', for: 'month-field')
|
|
85
|
-
@month_field = input(id: 'month-field', type: 'month') {
|
|
86
|
-
value @time_presenter.date_time
|
|
87
|
-
|
|
79
|
+
@month_field = input(id: 'month-field', type: 'month', value: @time_presenter.date_time) {
|
|
88
80
|
oninput do |event|
|
|
89
81
|
@time_presenter.date_time = @month_field.value
|
|
90
82
|
end
|
|
91
83
|
}
|
|
92
84
|
|
|
93
85
|
label('Week: ', for: 'week-field')
|
|
94
|
-
@week_field = input(id: 'week-field', type: 'week', disabled: true)
|
|
95
|
-
value @time_presenter.week_string
|
|
96
|
-
}
|
|
86
|
+
@week_field = input(id: 'week-field', type: 'week', disabled: true, value: @time_presenter.week_string)
|
|
97
87
|
|
|
98
88
|
label('Time String: ', for: 'time-string-field')
|
|
99
|
-
@time_string_field = input(id: 'time-string-field', type: 'text') {
|
|
100
|
-
value @time_presenter.date_time_string
|
|
101
|
-
|
|
89
|
+
@time_string_field = input(id: 'time-string-field', type: 'text', value: @time_presenter.date_time_string) {
|
|
102
90
|
oninput do |event|
|
|
103
91
|
@time_presenter.date_time_string = @time_string_field.value
|
|
104
92
|
end
|
|
@@ -21,11 +21,7 @@ class TodoListItem
|
|
|
21
21
|
inner_html <= [todo, :task]
|
|
22
22
|
|
|
23
23
|
ondblclick do |event|
|
|
24
|
-
|
|
25
|
-
markup_root.content {
|
|
26
|
-
edit_todo_input(presenter:, todo:)
|
|
27
|
-
}
|
|
28
|
-
end
|
|
24
|
+
add_edit_form_on_first_edit
|
|
29
25
|
todo.start_editing
|
|
30
26
|
end
|
|
31
27
|
}
|
|
@@ -139,5 +135,17 @@ class TodoListItem
|
|
|
139
135
|
}
|
|
140
136
|
}
|
|
141
137
|
}
|
|
138
|
+
|
|
139
|
+
private
|
|
140
|
+
|
|
141
|
+
def add_edit_form_on_first_edit
|
|
142
|
+
unless markup_root.children.last.keyword == 'input'
|
|
143
|
+
# Adding edit form dynamically prevents rendering extra elements
|
|
144
|
+
# until they become needed to ensure faster performance
|
|
145
|
+
markup_root.append {
|
|
146
|
+
edit_todo_input(presenter:, todo:)
|
|
147
|
+
}
|
|
148
|
+
end
|
|
149
|
+
end
|
|
142
150
|
end
|
|
143
151
|
|