has_dom_attrs 0.1.0 → 0.2.0

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: 803cfad840b103564000efceae798dc50b5cbbf444e2ae63e84a09a1c311a4eb
4
- data.tar.gz: '0093ccd0bebf0f0bd4c584304327bf5c67cec5bf76cdc89c41daaa915e2000c1'
3
+ metadata.gz: 3b032dc497dd42642b1d7c421d320a00c8b0fb3c3001bf3a89a24729a3fcf24f
4
+ data.tar.gz: fa78eb0aaf54e8e6c6ae9d2f29dcb1b047c03521bdbad17245860b28d2ea3e82
5
5
  SHA512:
6
- metadata.gz: d23685a4f676cd252678c90be4e972f9a6235d87f52f8ff1b48551c24407a2975a483c97802df3e201e8a569dd70c23d9083ee2467d815695c539829748b199b
7
- data.tar.gz: 896d9e5bd69c15ee1dee4986539bebe6e1ef4e512bd8828d47a715ce653abb3622669b8883c80ad3283bb356e1b246a716fdb35b1ce919ccc8a82c0b5c1f896e
6
+ metadata.gz: 864d0080a6c147167eb701d97dd62007b06146d9c4f227696a7b9a61d808ff06bd5ba236d3eea9cb13323adda7ab039b77a7f7df0caa8c765347a6272cbd0ef8
7
+ data.tar.gz: f9ac611544b7a26fdb2fa32d771fab288fc5c44a7ab2a66f45724c490b0bda784f891e007c5d3ad9d0e1cefc3b3ba3084ea0a8aa42494248f4e0f1ef5c9c1303
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.1.2
1
+ 3.3.4
data/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # CHANGELOG
2
+
3
+ 0.2.0
4
+ * bump to Ruby 3.3.4
5
+ * add `has_dom_style`
6
+
7
+ 0.1.0
8
+ * initial version
data/README.md CHANGED
@@ -54,7 +54,7 @@ component.dom_attrs
54
54
  # => { open: "true" }
55
55
  ```
56
56
 
57
- Likewise you can set classes, data, and aria attributes:
57
+ Likewise you can set classes, data, style, and aria attributes:
58
58
 
59
59
  ```ruby
60
60
  class ModalComponent
@@ -62,8 +62,9 @@ class ModalComponent
62
62
 
63
63
  has_dom_attr :open
64
64
  has_dom_class -> { "modal--width_#{width}" }
65
- has_dom_aria :aria_modal, if: :open
65
+ has_dom_aria :modal, if: :open
66
66
  has_dom_data :width
67
+ has_dom_style :font_size, -> { "12px" }
67
68
 
68
69
  attr_reader :open
69
70
 
@@ -77,7 +78,7 @@ end
77
78
  ```ruby
78
79
  component = ModalComponent.new(open: true, width: :l)
79
80
  component.dom_attrs
80
- # => { open: "true", class: "modal--width_l", aria: { modal: true }, data: { width: "l" } }
81
+ # => { open: "true", aria: { modal: true }, class: "modal--width_l", data: { width: "l" }, style: "font-size: 12px; }
81
82
  ```
82
83
 
83
84
  ## Development
@@ -88,4 +89,4 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
88
89
 
89
90
  ## Contributing
90
91
 
91
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/has_dom_attrs.
92
+ Bug reports and pull requests are welcome on GitHub at https://github.com/tomasc/has_dom_attrs.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HasDomAttrs
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/has_dom_attrs.rb CHANGED
@@ -55,6 +55,10 @@ module HasDomAttrs
55
55
  )
56
56
  end
57
57
 
58
+ def has_dom_style(name, value = nil, **options)
59
+ prepend___has_dom___method(:dom_style, name, value, **options)
60
+ end
61
+
58
62
  private
59
63
  def prepend___has_dom___method(method_name, name, value = nil, **options)
60
64
  prepend(
@@ -92,7 +96,7 @@ module HasDomAttrs
92
96
  aria: dom_aria,
93
97
  class: dom_classes,
94
98
  data: dom_data,
95
- style: dom_style
99
+ style: dom_style.to_s
96
100
  }.reject { |_, v| v.nil? || v.empty? }
97
101
  .deep_stringify_keys
98
102
  .deep_transform_keys(&:dasherize)
@@ -111,6 +115,14 @@ module HasDomAttrs
111
115
  end
112
116
 
113
117
  def dom_style
114
- nil
118
+ DomStyle.new({})
119
+ end
120
+
121
+ class DomStyle < SimpleDelegator
122
+ def to_s
123
+ __getobj__.reject { |_, value| value.nil? }
124
+ .map { |key, value| "#{key.to_s.dasherize}: #{value};" }
125
+ .join(" ")
126
+ end
115
127
  end
116
128
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_dom_attrs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Celizna
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2023-03-11 00:00:00.000000000 Z
12
+ date: 2024-07-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -105,6 +105,7 @@ extra_rdoc_files: []
105
105
  files:
106
106
  - ".rubocop.yml"
107
107
  - ".ruby-version"
108
+ - CHANGELOG.md
108
109
  - Gemfile
109
110
  - LICENSE
110
111
  - README.md
@@ -135,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
136
  - !ruby/object:Gem::Version
136
137
  version: '0'
137
138
  requirements: []
138
- rubygems_version: 3.3.7
139
+ rubygems_version: 3.5.11
139
140
  signing_key:
140
141
  specification_version: 4
141
142
  summary: Helper methods for dealing with html element attributes.