hyper-kitten-tables 0.1.1.alpha1.01 → 0.1.1.alpha1.02

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: 14f5fafc4af8d2ba9f6325074437b5a41be99265e9dc81648bcdead30fb5bb20
4
- data.tar.gz: ceada638dd65433be15f5b1cd01204e4dbb943ca2970c85cdc78e8b027aea09e
3
+ metadata.gz: 5a7cc7e1640ed688e557f128a119a29b3b0c3fa23e7d72c780e25c0a0fb0d475
4
+ data.tar.gz: b73418d323c3b21fff12db386cdaf0a92acc004f4f312efe295bd4d02b4648bb
5
5
  SHA512:
6
- metadata.gz: 5bc66f97dc018904ab0a1c768e9b75cc0f55586f778b476ff956f0fdf71d3bc2a02036a3f9414d9a85b87576b6e030aeb40edfed47fec26f0aac471faf274c72
7
- data.tar.gz: 0e7f575043f5d2065bb98cd416079db1a94778be026bf5349cb6bf231d29795d066d4adce4f9169909c82563584c3299ec1af8671238ca085a62300646c1fe52
6
+ metadata.gz: 99f943366db9398c96c42e8821994e3a0c700b09910082eda245246115675d61e40be67dac33dcf2aa6b206f591fd6889a536250e363157acc6a5af636d14755
7
+ data.tar.gz: 52be614b4aa8fb97b96cfb5d741b91794d622bf2111fa5812fae6db26fae8083694e9f4f55d2778e0874bce7e3a7a02964fa740f59756dfdeb03f45d9a39fd2d
@@ -11,11 +11,12 @@ module HyperKittenTables
11
11
 
12
12
  def_delegators :@view_context, :content_tag, :capture, :request
13
13
 
14
- const_set :Column, Struct.new(:name, :method_name, :sort_key, :block, :sortable, :options)
14
+ const_set :Column, Struct.new(:name, :method_name, :sort_key, :block, :sortable, :options, :header_options)
15
15
  end
16
16
 
17
- def initialize(collection: [], requested_columns: [], &block)
17
+ def initialize(collection: [], requested_columns: [], sortable_column_default: false, &block)
18
18
  @collection = collection
19
+ @sortable_column_default = sortable_column_default
19
20
  @columns = []
20
21
 
21
22
  @table_options = {}
@@ -28,13 +29,13 @@ module HyperKittenTables
28
29
  yield self if block_given?
29
30
  end
30
31
 
31
- def td(name, method_name: nil, sort_key: nil, sortable: true, **options, &block)
32
+ def td(name, method_name: nil, sort_key: nil, sortable: @sortable_column_default, header_options: {}, **options, &block)
32
33
  if method_name.nil?
33
34
  method_name = name.to_s.parameterize.underscore
34
35
  name = name.to_s.titleize unless block_given?
35
36
  end
36
37
  sort_key = method_name if sort_key.blank?
37
- @columns << self.class::Column.new(name, method_name, sort_key, block, sortable, options)
38
+ @columns << self.class::Column.new(name, method_name, sort_key, block, sortable, options, header_options)
38
39
  end
39
40
 
40
41
  def define_header_sort_url(&block)
@@ -93,12 +94,13 @@ module HyperKittenTables
93
94
  content_tag(:thead, @thead_options) do
94
95
  content_tag(:tr, @tr_options) do
95
96
  visible_columns.map do |column|
97
+ header_options = @th_options.merge(column.header_options)
96
98
  if column.sortable
97
- content_tag(:th, @th_options) do
99
+ content_tag(:th, header_options) do
98
100
  header_sort_url(column, query_params).html_safe
99
101
  end
100
102
  else
101
- content_tag(:th, column.name, @th_options)
103
+ content_tag(:th, column.name, header_options)
102
104
  end
103
105
  end.join.html_safe
104
106
  end
@@ -1,3 +1,3 @@
1
1
  module HyperKittenTables
2
- VERSION = "0.1.1.alpha1.01"
2
+ VERSION = "0.1.1.alpha1.02"
3
3
  end
@@ -26,12 +26,17 @@ RSpec.describe HyperKittenTables::Components::Table do
26
26
  it "with custom column options" do
27
27
  user = User.new("Hyper Kitten")
28
28
  component = described_class.new(collection: [user]) do |table|
29
- table.td(:name, sortable: false, class: "custom-class")
29
+ table.td(:name, sortable: false, class: "custom-class", header_options: { class: "custom-class" })
30
30
  end
31
31
 
32
- render component
32
+ response = render component
33
33
 
34
34
  assert_select "table" do
35
+ assert_select "thead" do
36
+ assert_select "tr" do
37
+ assert_select "th.custom-class", text: "Name"
38
+ end
39
+ end
35
40
  assert_select "tbody" do
36
41
  assert_select "tr" do
37
42
  assert_select "td.custom-class", text: "Hyper Kitten"
@@ -168,6 +173,43 @@ RSpec.describe HyperKittenTables::Components::Table do
168
173
  end
169
174
  end
170
175
 
176
+ it "with global sortable default set to false" do
177
+ component = described_class.new(collection: [], requested_columns: ["Name"], sortable_column_default: false) do |table|
178
+ table.td(:name)
179
+ end
180
+
181
+ html = render component
182
+
183
+ assert_select "table" do
184
+ assert_select "thead" do
185
+ assert_select "tr" do
186
+ assert_select "th", text: "Name"
187
+ end
188
+ end
189
+ end
190
+ end
191
+
192
+ it "with global sortable default set to true" do
193
+ component = described_class.new(collection: [], requested_columns: ["Name"], sortable_column_default: true) do |table|
194
+ table.define_header_sort_url { |c, p| "<a href='example.com'>#{c.name}</a>" }
195
+ table.td(:name)
196
+ end
197
+
198
+ html = render component
199
+
200
+ assert_select "table" do
201
+ assert_select "thead" do
202
+ assert_select "tr" do
203
+ assert_select "th" do
204
+ assert_select "a", text: "Name" do
205
+ assert_select "[href=?]", "example.com"
206
+ end
207
+ end
208
+ end
209
+ end
210
+ end
211
+ end
212
+
171
213
  it "with a footer " do
172
214
  component = described_class.new(collection: []) do |table|
173
215
  table.td(:name, sortable: false)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyper-kitten-tables
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1.alpha1.01
4
+ version: 0.1.1.alpha1.02
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Klina
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-09 00:00:00.000000000 Z
11
+ date: 2023-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview