rails-htmx 0.1.2 → 0.1.3

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: baf1ba0777f644cc1577a23b47865f1d1f8b1481914f6a61b8c3f53931aa6cfd
4
- data.tar.gz: 73221159830c691fa47b2d2c7fd34a732b9c5ad34aaac627b75c44a750a2f761
3
+ metadata.gz: 7295c9a2742bf97af36ef648262f112f14f65b2e43a4c9ab72249a40976bd601
4
+ data.tar.gz: 7f88f12f68cb993fdfb49dbf851ec7e1033a04e7c54b79e68cc051928d2e8111
5
5
  SHA512:
6
- metadata.gz: 19e4ed44df5466faf76b2c414f4ec51842843b305556ff6dc0589c55edf989e7730d10168969c8210d50f0ca789eac38485b0f7270cfc6cb5970cdb0f38ebfe3
7
- data.tar.gz: ec76045f03acf587dae8efe26889f2149eef3c31aa9c64e3ce1bdd883a3fc2cb2b3189a6cb72821dc16c158c5ab6859205b61247bdeba0134f7e3e4245162a33
6
+ metadata.gz: e8e76850f31a4a81784b626fb4d13fb0ac31d6a76bed0d2dc0c3e23e7dec654c25bab677b4fa1e39279e067db9aa2c8da3c9e973127c15bbc9b704cd0240cfed
7
+ data.tar.gz: 69181e0aea3ee8232480780d05d4688f82f08669794f57f361bc8c2f4eabcfeb9f4827ad78e904e1901a0b90d1a6a7d81f4ea60fd080bc250eb98a5b9264684c
@@ -0,0 +1,53 @@
1
+ module Rails
2
+ module Htmx
3
+ class Error < StandardError; end
4
+
5
+ class Unsupported < Error; end
6
+
7
+ module Controller
8
+ extend ActiveSupport::Concern
9
+
10
+ included do
11
+ layout proc { |c| htmx_request? ? htmx_layout : nil }
12
+ helper_method :htmx_request?
13
+
14
+ rescue_from Rails::Htmx::Unsupported, with: :htmx_unsupported
15
+ end
16
+
17
+ # The templates for new generated Rails 7.0+ apps use 303 for redirects:
18
+ # https://github.com/rails/rails/commit/5ed37b35d666b833a
19
+ # https://github.com/rails/rails/commit/d6715c72c50255ccc
20
+ #
21
+ # We might be able to remove this method in the future.
22
+ def redirect_to(url_options = {}, response_status = {})
23
+ return_value = super
24
+
25
+ # Return 303 to make sure a GET request will be used to display the redirect.
26
+ # Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/303
27
+ self.status = 303 if htmx_request? && !request.get? && !request.post?
28
+
29
+ return_value
30
+ end
31
+
32
+ protected
33
+
34
+ def htmx_request?
35
+ request.env["HTTP_HX_REQUEST"].present?
36
+ end
37
+
38
+ def htmx_layout
39
+ false
40
+ end
41
+
42
+ def htmx_unsupported
43
+ response.headers["HX-Redirect"] = request.url
44
+
45
+ head :no_content
46
+ end
47
+
48
+ def prevent_htmx!
49
+ raise Rails::Htmx::Unsupported if htmx_request?
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,38 +1,12 @@
1
1
  module Rails
2
2
  module Htmx
3
- class Error < StandardError; end
4
-
5
- class Unsupported < Error; end
6
-
7
3
  module Helpers
8
- extend ActiveSupport::Concern
9
-
10
- included do
11
- layout proc { |c| htmx_request? ? htmx_layout : nil }
12
- helper_method :htmx_request?
13
-
14
- rescue_from Rails::Htmx::Unsupported, with: :htmx_unsupported
15
- end
16
-
17
- protected
18
-
19
- def htmx_request?
20
- request.env["HTTP_HX_REQUEST"].present?
21
- end
22
-
23
- def htmx_layout
24
- false
25
- end
26
-
27
- def htmx_unsupported
28
- response.headers["HX-Redirect"] = request.url
29
-
30
- head :no_content
31
- end
32
-
33
- def prevent_htmx!
34
- raise Rails::Htmx::Unsupported if htmx_request?
4
+ def htmx_attributes(attributes = {})
5
+ return attributes if attributes.blank?
6
+ attributes.transform_keys! { |key| "hx-#{key}" }
7
+ attributes
35
8
  end
9
+ alias_method :hx, :htmx_attributes
36
10
  end
37
11
  end
38
12
  end
data/lib/rails-htmx.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "rails-htmx/controller"
1
2
  require "rails-htmx/helpers"
2
3
 
3
4
  module Rails
@@ -5,7 +6,13 @@ module Rails
5
6
  class Engine < ::Rails::Engine
6
7
  initializer "rails-htmx.add_controller" do
7
8
  ActiveSupport.on_load :action_controller do
8
- ActionController::Base.send :include, Rails::Htmx::Helpers
9
+ ActionController::Base.send :include, Rails::Htmx::Controller
10
+ end
11
+ end
12
+
13
+ initializer "rails-htmx.add_helpers" do
14
+ ActiveSupport.on_load :action_view do
15
+ ActionView::Base.send :include, Rails::Htmx::Helpers
9
16
  end
10
17
  end
11
18
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-htmx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guillermo Iguaran
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-22 00:00:00.000000000 Z
11
+ date: 2023-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -87,6 +87,7 @@ extensions: []
87
87
  extra_rdoc_files: []
88
88
  files:
89
89
  - lib/rails-htmx.rb
90
+ - lib/rails-htmx/controller.rb
90
91
  - lib/rails-htmx/helpers.rb
91
92
  homepage: https://github.com/guilleiguaran/rails-htmx
92
93
  licenses: