katalyst-tables 2.1.0 → 2.1.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: 2a572503d453b3b8b98a82942a48c5e2772cec4023417e8db71ed2cd8299331a
4
- data.tar.gz: 4761c4fa4b21aa8c91f70c2118e27bd68dfd700ffc419ed6f7eae299b582710f
3
+ metadata.gz: ddd6b87989959fe3bea80d3d061984ace8fbaa918033ae6d40f1fb41fa752a4f
4
+ data.tar.gz: c1fcff810e0c6e76ae8ae8df7a92f26d0badd1601b6fd091748249eaeebdc262
5
5
  SHA512:
6
- metadata.gz: aa9c1dc28479dc744c18804999d5f34ea9937e1500dbe8c01a1f2c183439077dfdd7047dbb8ce2ea0f93ef43bcfcea15eee6d08b2606f3682a00747e590cbc3b
7
- data.tar.gz: 45c36c312e7f6efa8b11409d4822d135c961eba6ade51055b4671371b3b1a6e25a01c9fd1e059c0a89fa5da6bea3e7fe56fda267a1b3d7bfdf51e515b7b8a696
6
+ metadata.gz: 39a50df893890ed53a0d54acc7ab5d23a0292c9e98ec82b4e6286325713e115d718cfcdaf8caf6c0b2ce211ec20ea514eb53b5dc275dfe04bf253ee00d094aa5
7
+ data.tar.gz: 919db4197193d5c4d2be8ea6c15642ff309819757c32ae6cb99266412029e0d250156220584442d048b97a40bcc9c5cce7660d141ac9fb157d12d8468b6fd268
data/README.md CHANGED
@@ -281,8 +281,8 @@ def index
281
281
  table = Katalyst::Turbo::TableComponent.new(collection:, id: "people")
282
282
 
283
283
  respond_to do |format|
284
+ format.turbo_stream { render table } if self_referred?
284
285
  format.html { render locals: { table: table } }
285
- format.turbo_stream { render table }
286
286
  end
287
287
  end
288
288
  ```
@@ -47,10 +47,10 @@ module Katalyst
47
47
  component_class.alias_method(:vc_render_template_for, :render_template_for)
48
48
  component_class.class_eval <<-RUBY, __FILE__, __LINE__ + 1
49
49
  def render_template_for(variant = nil)
50
- return vc_render_template_for(variant) unless turbo?
51
- controller.respond_to do |format|
52
- format.html { vc_render_template_for(variant) }
53
- format.turbo_stream { turbo_stream.replace(id, vc_render_template_for(variant)) }
50
+ if turbo? && response.media_type.eql?("text/vnd.turbo-stream.html")
51
+ turbo_stream.replace(id, vc_render_template_for(variant))
52
+ else
53
+ vc_render_template_for(variant)
54
54
  end
55
55
  end
56
56
  RUBY
@@ -3,7 +3,9 @@
3
3
  module Katalyst
4
4
  module Tables
5
5
  class PagyNavComponent < ViewComponent::Base # :nodoc:
6
- include Pagy::Frontend
6
+ # Pagy is not a required gem unless you're using pagination
7
+ # Expect to see NoMethodError failures if pagy is not available
8
+ "Pagy::Frontend".safe_constantize&.tap { |pagy| include(pagy) }
7
9
 
8
10
  attr_reader :pagy_options
9
11
 
@@ -11,13 +11,9 @@ module Katalyst
11
11
  include ActiveModel::Dirty
12
12
  include ActiveSupport::Configurable
13
13
 
14
- included do
15
- class_attribute :reducers, default: ActionDispatch::MiddlewareStack.new
16
-
17
- class << self
18
- delegate :use, :before, to: :reducers
19
- end
14
+ include Reducers
20
15
 
16
+ included do
21
17
  attr_accessor :items
22
18
 
23
19
  delegate :model, :to_model, :each, :count, :empty?, to: :items, allow_nil: true
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "pagy/backend"
4
-
5
3
  module Katalyst
6
4
  module Tables
7
5
  module Collection
@@ -41,7 +39,9 @@ module Katalyst
41
39
  end
42
40
 
43
41
  class Paginate # :nodoc:
44
- include Pagy::Backend
42
+ # Pagy is not a required gem unless you're using pagination
43
+ # Expect to see NoMethodError failures if pagy is not available
44
+ "Pagy::Backend".safe_constantize&.tap { |pagy| include(pagy) }
45
45
 
46
46
  def initialize(app)
47
47
  @app = app
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Katalyst
4
+ module Tables
5
+ module Collection
6
+ # Adds stackable reducers to a collection.
7
+ # Inspired by ActiveDispatch::MiddlewareStack which unfortunately can't
8
+ # be used due to monkey patches from gems such as NewRelic which assume
9
+ # it is only used for Rack middleware.
10
+ module Reducers
11
+ extend ActiveSupport::Concern
12
+
13
+ included do
14
+ class_attribute :reducers, default: Stack.new
15
+ end
16
+
17
+ class_methods do
18
+ delegate :use, :insert, to: :reducers
19
+ end
20
+
21
+ class Stack # :nodoc:
22
+ def initialize
23
+ @stack = []
24
+ end
25
+
26
+ def use(klass)
27
+ @stack << Reducer.new(klass) unless index(klass)
28
+ end
29
+
30
+ def insert(other, klass)
31
+ @stack.insert(index(other), Reducer.new(klass))
32
+ end
33
+
34
+ def index(klass)
35
+ @stack.index(Reducer.new(klass))
36
+ end
37
+
38
+ def build(&block)
39
+ @stack.freeze.reduce(block) do |app, reducer|
40
+ reducer.build(app)
41
+ end
42
+ end
43
+ end
44
+
45
+ class Reducer # :nodoc:
46
+ attr_reader :klass
47
+
48
+ def initialize(klass)
49
+ @klass = klass
50
+ end
51
+
52
+ def build(app)
53
+ klass.new(app)
54
+ end
55
+
56
+ def ==(other)
57
+ klass.name == other.klass.name
58
+ end
59
+
60
+ def inspect
61
+ "#<#{self.class.name} #{klass.name}>"
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "pagy/backend"
4
-
5
3
  module Katalyst
6
4
  module Tables
7
5
  module Collection
@@ -24,8 +24,8 @@ module Katalyst
24
24
  include Pagination
25
25
  include Sorting
26
26
 
27
- use(Pagination::Paginate)
28
27
  use(Sorting::Sort)
28
+ use(Pagination::Paginate)
29
29
  end
30
30
  end
31
31
  end
@@ -27,6 +27,11 @@ module Katalyst
27
27
  .apply(collection)
28
28
  end
29
29
 
30
+ def self_referred?
31
+ request.referer.present? && URI.parse(request.referer).path == request.path
32
+ end
33
+ alias self_refered? self_referred?
34
+
30
35
  included do
31
36
  class_attribute :_default_table_component, instance_accessor: false
32
37
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Katalyst
4
4
  module Tables
5
- VERSION = "2.1.0"
5
+ VERSION = "2.1.2"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: katalyst-tables
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katalyst Interactive
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-26 00:00:00.000000000 Z
11
+ date: 2023-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: html-attributes-utils
@@ -68,6 +68,7 @@ files:
68
68
  - app/components/katalyst/turbo/table_component.rb
69
69
  - app/models/concerns/katalyst/tables/collection/core.rb
70
70
  - app/models/concerns/katalyst/tables/collection/pagination.rb
71
+ - app/models/concerns/katalyst/tables/collection/reducers.rb
71
72
  - app/models/concerns/katalyst/tables/collection/sorting.rb
72
73
  - app/models/katalyst/tables/collection.rb
73
74
  - config/importmap.rb