katalyst-tables 2.1.0 → 2.1.1

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: 4c5cc96bc55db7f0cf4c3a22659e6054607640e6d33af939805d4be6ca8f25c1
4
+ data.tar.gz: 1661c91c498d7c994afca1cb4a0bfcb69b6e2076a419ae71b138c5ae086e4a0d
5
5
  SHA512:
6
- metadata.gz: aa9c1dc28479dc744c18804999d5f34ea9937e1500dbe8c01a1f2c183439077dfdd7047dbb8ce2ea0f93ef43bcfcea15eee6d08b2606f3682a00747e590cbc3b
7
- data.tar.gz: 45c36c312e7f6efa8b11409d4822d135c961eba6ade51055b4671371b3b1a6e25a01c9fd1e059c0a89fa5da6bea3e7fe56fda267a1b3d7bfdf51e515b7b8a696
6
+ metadata.gz: e6f94b4a381ec3f9e952d594e1525b61b97d17d2d8c42fcc230fa81328303768d174f2778eb3918f681f28d38227cf9f3c83af340e0ea5ecc78857c6dad7c44d
7
+ data.tar.gz: 01a7fcf97aea5435986ab2b0357249bfd03bb60bc98fb22769aef88c154520753e9b340fe981edcf74f6bf4d32eafbd45bd318158cf92926fe3162f459928ff7
@@ -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
@@ -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
@@ -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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Katalyst
4
4
  module Tables
5
- VERSION = "2.1.0"
5
+ VERSION = "2.1.1"
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.1
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