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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2f64cd1a4155afc8688d37c70266a28288ae80473332c9dc2bb0dbf01d81b590
4
- data.tar.gz: 51ff57301add3f920f5a0425bb4817659bdcddf77882591313f76693906a6116
3
+ metadata.gz: aad28a356df583d4a4784a532111d9e4d4f3743f8855998deb69ff03521a0107
4
+ data.tar.gz: 79c3a03baea98bd0774d95e4dbd049e30ddde606402b17770b037cffcbdb63ce
5
5
  SHA512:
6
- metadata.gz: 90d5df27de10596eccf5c052863b7dbf8552400c1e4f7d31870c2ba7f8b762faa082ef0566555cd920d7b5bb20640e85462cfb70373f6d7f77ee4605a8cf8dbe
7
- data.tar.gz: 309cd017bc28c4934fa72d1b9ba13e3f692740b147f40834bf6cc8740bf20a4136eca39388f58cfffc2c8efbe930c8424dd1122b68ae011181cad9a3ab161b76
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.0 (Beta)
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.0
1
+ 0.10.2
@@ -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.0 ruby lib
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.0".freeze
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]
@@ -510,6 +510,7 @@ module Glimmer
510
510
  end
511
511
  end
512
512
  end
513
+ alias append content
513
514
 
514
515
  def remove_all_listeners
515
516
  data_bindings.each do |option_binding, model_binding|
@@ -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
- @options = args.last.is_a?(Hash) ? args.last.symbolize_keys : {}
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
- # re-open table content and add row
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
- unless markup_root.children.last.keyword == 'input'
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
 
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.10.0
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh