voidable-hotwire 0.2.1 → 0.3.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: 6081366a4105da1caa8a39cead300414374ed55bb72a1c4c3d4d11ad16df2497
4
- data.tar.gz: '087555747de7f2797e4a3d8a29a0e37b4c10cca9e759fd9e292b41e2c01040c5'
3
+ metadata.gz: e356e8edd84c02632f716e6d7aba2d5c7637abe6987e41023021e11c856052b9
4
+ data.tar.gz: 0bd9352a11771ee9ed281e176139dcaa7fc3ec4d2f6904ee7d5d67ef97787398
5
5
  SHA512:
6
- metadata.gz: 7633e0ce264ebcf3952326e7d0ec9abd8aa27ef8dc54bbb561306b5b2a370bf501154db4b14868aaf423e3e470620f6ca19902238668cdf9691f5921d3538a00
7
- data.tar.gz: be5148917236492d3a9d90ca0f74370d6c91a903511acb4e38736c2d6fe8cc61672b1bcca52d1dc80551d2155fcbe326017d12d758b9790bfbc627afe02f5142
6
+ metadata.gz: e47af3050f9668acb4e266f6ce9dd03378854fa7bfbc3fff702246e767813c280296f9d97a8f4e5a3efc91667811c87f239ac5063a566b82a593f9431eada67b
7
+ data.tar.gz: 25fc9126ad4c4d7cb059754d2d8f3deb8010e481f20719db9065bb0c35848cf9240f20b155c6743eeab3f8c8dd0ad91a46e00ca80566cd34cd9cbd3990bfd8eb
@@ -6,12 +6,15 @@ module Voidable
6
6
 
7
7
  class_option :layout, type: :string, default: "topbar", enum: ["topbar", "sidebar", "switching"],
8
8
  desc: "Application layout style (topbar, sidebar, or switching)"
9
+ class_option :asset_pipeline, type: :string, default: "importmap", enum: ["importmap", "vite"],
10
+ desc: "Asset pipeline (importmap or vite)"
9
11
 
10
12
  def create_initializer
11
13
  template "initializer.rb.tt", "config/initializers/voidable.rb"
12
14
  end
13
15
 
14
16
  def pin_packages
17
+ return if vite?
15
18
  importmap = "config/importmap.rb"
16
19
  return unless File.exist?(importmap)
17
20
  return if File.read(importmap).include?("@voidable/ui")
@@ -41,26 +44,41 @@ module Voidable
41
44
  end
42
45
 
43
46
  def create_layout_assets
44
- copy_file "voidable-layout.js", "app/assets/javascripts/voidable-layout.js"
45
- copy_file "voidable-devise.css", "app/assets/stylesheets/voidable-devise.css"
46
-
47
- assets_init = "config/initializers/assets.rb"
48
- if File.exist?(assets_init) && !File.read(assets_init).include?("javascripts")
49
- append_to_file assets_init, <<~RUBY
50
-
51
- # Voidable layout scripts
52
- Rails.application.config.assets.paths << Rails.root.join("app/assets/javascripts")
53
- RUBY
54
- end
55
-
56
- case options[:layout]
57
- when "sidebar"
58
- copy_file "voidable-layout-sidebar.css", "app/assets/stylesheets/voidable-layout.css", force: true
59
- when "switching"
60
- copy_file "voidable-layout-topbar.css", "app/assets/stylesheets/voidable-layout-topbar.css"
61
- copy_file "voidable-layout-sidebar.css", "app/assets/stylesheets/voidable-layout-sidebar.css"
47
+ if vite?
48
+ copy_file "voidable-layout.js", "app/javascript/voidable-layout.js"
49
+ copy_file "voidable-devise.css", "app/javascript/voidable-devise.css"
50
+
51
+ case options[:layout]
52
+ when "sidebar"
53
+ copy_file "voidable-layout-sidebar.css", "app/javascript/voidable-layout.css", force: true
54
+ when "switching"
55
+ copy_file "voidable-layout-topbar.css", "app/javascript/voidable-layout-topbar.css"
56
+ copy_file "voidable-layout-sidebar.css", "app/javascript/voidable-layout-sidebar.css"
57
+ else
58
+ copy_file "voidable-layout-topbar.css", "app/javascript/voidable-layout.css", force: true
59
+ end
62
60
  else
63
- copy_file "voidable-layout-topbar.css", "app/assets/stylesheets/voidable-layout.css", force: true
61
+ copy_file "voidable-layout.js", "app/assets/javascripts/voidable-layout.js"
62
+ copy_file "voidable-devise.css", "app/assets/stylesheets/voidable-devise.css"
63
+
64
+ assets_init = "config/initializers/assets.rb"
65
+ if File.exist?(assets_init) && !File.read(assets_init).include?("javascripts")
66
+ append_to_file assets_init, <<~RUBY
67
+
68
+ # Voidable layout scripts
69
+ Rails.application.config.assets.paths << Rails.root.join("app/assets/javascripts")
70
+ RUBY
71
+ end
72
+
73
+ case options[:layout]
74
+ when "sidebar"
75
+ copy_file "voidable-layout-sidebar.css", "app/assets/stylesheets/voidable-layout.css", force: true
76
+ when "switching"
77
+ copy_file "voidable-layout-topbar.css", "app/assets/stylesheets/voidable-layout-topbar.css"
78
+ copy_file "voidable-layout-sidebar.css", "app/assets/stylesheets/voidable-layout-sidebar.css"
79
+ else
80
+ copy_file "voidable-layout-topbar.css", "app/assets/stylesheets/voidable-layout.css", force: true
81
+ end
64
82
  end
65
83
  say "Created Voidable layout assets", :green
66
84
  end
@@ -91,15 +109,34 @@ module Voidable
91
109
  return unless File.exist?(js_entrypoint)
92
110
  return if File.read(js_entrypoint).include?("@voidable/ui")
93
111
  prepend_to_file js_entrypoint, "import \"@voidable/ui\";\nimport \"@voidable/ui-hotwire\";\n\n"
112
+ if vite?
113
+ append_to_file js_entrypoint, <<~JS
114
+
115
+ import "@voidable/theme";
116
+ import "./voidable-layout.css";
117
+ import "./voidable-devise.css";
118
+ import "./voidable-layout.js";
119
+ JS
120
+ end
94
121
  say "Added Voidable imports to application.js", :green
95
122
  end
96
123
 
124
+ def create_vite_helper
125
+ return unless vite?
126
+ template "vite_helper.rb.tt", "app/helpers/vite_helper.rb"
127
+ say "Created ViteHelper for asset path resolution", :green
128
+ end
129
+
97
130
  private
98
131
 
99
132
  def app_name
100
133
  Rails.application.class.module_parent_name.underscore
101
134
  end
102
135
 
136
+ def vite?
137
+ options[:asset_pipeline] == "vite"
138
+ end
139
+
103
140
  public
104
141
 
105
142
  def install_devise_views
@@ -7,12 +7,18 @@
7
7
  <%%= csrf_meta_tags %>
8
8
  <%%= csp_meta_tag %>
9
9
  <%%= yield :head %>
10
+ <% if vite? %>
11
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@3.44.0/dist/tabler-icons.min.css">
12
+ <link rel="stylesheet" href="<%%= vite_asset_path('application.css') %>" data-turbo-track="reload">
13
+ <script type="module" src="<%%= vite_asset_path('application.js') %>" data-turbo-track="reload"></script>
14
+ <% else %>
10
15
  <%%= stylesheet_link_tag :app, "data-turbo-track": "reload" %>
11
16
  <%%= stylesheet_link_tag "voidable-theme", "data-turbo-track": "reload" %>
12
17
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@3.44.0/dist/tabler-icons.min.css">
13
18
  <%%= stylesheet_link_tag "voidable-layout", "data-turbo-track": "reload" %>
14
19
  <%%= stylesheet_link_tag "voidable-devise", "data-turbo-track": "reload" %>
15
20
  <%%= javascript_importmap_tags %>
21
+ <% end %>
16
22
  </head>
17
23
 
18
24
  <body>
@@ -81,6 +87,8 @@
81
87
  </main>
82
88
  </div>
83
89
 
90
+ <% unless vite? %>
84
91
  <%%= javascript_include_tag "voidable-layout", "data-turbo-track": "reload" %>
92
+ <% end %>
85
93
  </body>
86
94
  </html>
@@ -7,12 +7,18 @@
7
7
  <%%= csrf_meta_tags %>
8
8
  <%%= csp_meta_tag %>
9
9
  <%%= yield :head %>
10
+ <% if vite? %>
11
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@3.44.0/dist/tabler-icons.min.css">
12
+ <link rel="stylesheet" href="<%%= vite_asset_path('application.css') %>" data-turbo-track="reload">
13
+ <script type="module" src="<%%= vite_asset_path('application.js') %>" data-turbo-track="reload"></script>
14
+ <% else %>
10
15
  <%%= stylesheet_link_tag :app, "data-turbo-track": "reload" %>
11
16
  <%%= stylesheet_link_tag "voidable-theme", "data-turbo-track": "reload" %>
12
17
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@3.44.0/dist/tabler-icons.min.css">
13
18
  <%%= stylesheet_link_tag "voidable-layout", "data-turbo-track": "reload" %>
14
19
  <%%= stylesheet_link_tag "voidable-devise", "data-turbo-track": "reload" %>
15
20
  <%%= javascript_importmap_tags %>
21
+ <% end %>
16
22
  </head>
17
23
 
18
24
  <body>
@@ -64,6 +70,8 @@
64
70
  </div>
65
71
  </main>
66
72
 
73
+ <% unless vite? %>
67
74
  <%%= javascript_include_tag "voidable-layout", "data-turbo-track": "reload" %>
75
+ <% end %>
68
76
  </body>
69
77
  </html>
@@ -7,12 +7,18 @@
7
7
  <%%= csrf_meta_tags %>
8
8
  <%%= csp_meta_tag %>
9
9
  <%%= yield :head %>
10
+ <% if vite? %>
11
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@3.44.0/dist/tabler-icons.min.css">
12
+ <link rel="stylesheet" href="<%%= vite_asset_path('application.css') %>" data-turbo-track="reload">
13
+ <script type="module" src="<%%= vite_asset_path('application.js') %>" data-turbo-track="reload"></script>
14
+ <% else %>
10
15
  <%%= stylesheet_link_tag :app, "data-turbo-track": "reload" %>
11
16
  <%%= stylesheet_link_tag "voidable-theme", "data-turbo-track": "reload" %>
12
17
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@3.44.0/dist/tabler-icons.min.css">
13
18
  <%%= stylesheet_link_tag "voidable-layout-sidebar", "data-turbo-track": "reload" %>
14
19
  <%%= stylesheet_link_tag "voidable-devise", "data-turbo-track": "reload" %>
15
20
  <%%= javascript_importmap_tags %>
21
+ <% end %>
16
22
  </head>
17
23
 
18
24
  <body>
@@ -81,6 +87,8 @@
81
87
  </main>
82
88
  </div>
83
89
 
90
+ <% unless vite? %>
84
91
  <%%= javascript_include_tag "voidable-layout", "data-turbo-track": "reload" %>
92
+ <% end %>
85
93
  </body>
86
94
  </html>
@@ -7,12 +7,18 @@
7
7
  <%%= csrf_meta_tags %>
8
8
  <%%= csp_meta_tag %>
9
9
  <%%= yield :head %>
10
+ <% if vite? %>
11
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@3.44.0/dist/tabler-icons.min.css">
12
+ <link rel="stylesheet" href="<%%= vite_asset_path('application.css') %>" data-turbo-track="reload">
13
+ <script type="module" src="<%%= vite_asset_path('application.js') %>" data-turbo-track="reload"></script>
14
+ <% else %>
10
15
  <%%= stylesheet_link_tag :app, "data-turbo-track": "reload" %>
11
16
  <%%= stylesheet_link_tag "voidable-theme", "data-turbo-track": "reload" %>
12
17
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@3.44.0/dist/tabler-icons.min.css">
13
18
  <%%= stylesheet_link_tag "voidable-layout-topbar", "data-turbo-track": "reload" %>
14
19
  <%%= stylesheet_link_tag "voidable-devise", "data-turbo-track": "reload" %>
15
20
  <%%= javascript_importmap_tags %>
21
+ <% end %>
16
22
  </head>
17
23
 
18
24
  <body>
@@ -64,6 +70,8 @@
64
70
  </div>
65
71
  </main>
66
72
 
73
+ <% unless vite? %>
67
74
  <%%= javascript_include_tag "voidable-layout", "data-turbo-track": "reload" %>
75
+ <% end %>
68
76
  </body>
69
77
  </html>
@@ -0,0 +1,11 @@
1
+ module ViteHelper
2
+ def vite_asset_path(name)
3
+ if Rails.env.production? && File.exist?(Rails.root.join("public/assets/.vite/manifest.json"))
4
+ manifest = JSON.parse(File.read(Rails.root.join("public/assets/.vite/manifest.json")))
5
+ entry = manifest[name]
6
+ "/assets/#{entry['file']}" if entry
7
+ else
8
+ "/assets/#{name}"
9
+ end
10
+ end
11
+ end
@@ -1,5 +1,5 @@
1
1
  module Voidable
2
2
  module Hotwire
3
- VERSION = "0.2.1"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voidable-hotwire
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kaz Walker
@@ -52,6 +52,7 @@ files:
52
52
  - lib/generators/voidable/install/templates/settings_controller.rb.tt
53
53
  - lib/generators/voidable/install/templates/sidebar.html.erb.tt
54
54
  - lib/generators/voidable/install/templates/topbar.html.erb.tt
55
+ - lib/generators/voidable/install/templates/vite_helper.rb.tt
55
56
  - lib/generators/voidable/install/templates/voidable-devise.css
56
57
  - lib/generators/voidable/install/templates/voidable-layout-sidebar.css
57
58
  - lib/generators/voidable/install/templates/voidable-layout-topbar.css