plutonium 0.9.0 → 0.9.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 +4 -4
- data/README.md +3 -2
- data/Rakefile +10 -0
- data/app/assets/build/plutonium.js +5122 -0
- data/app/assets/javascripts/controllers/index.js +34 -0
- data/app/assets/javascripts/plutonium-app.js +7 -0
- data/app/assets/javascripts/plutonium.js +1 -0
- data/css.manifest +3 -0
- data/esbuild.config.js +44 -0
- data/lib/generators/pu/gen/component/component_generator.rb +13 -4
- data/lib/generators/pu/lib/plutonium_generators/concerns/actions.rb +86 -72
- data/lib/generators/pu/lib/plutonium_generators/model_generator.rb +1 -1
- data/lib/generators/pu/rodauth/install_generator.rb +1 -2
- data/lib/plutonium/core/fields/renderers/factory.rb +0 -1
- data/lib/plutonium/pkg/base.rb +0 -4
- data/lib/plutonium/railtie.rb +10 -2
- data/lib/plutonium/version.rb +1 -1
- data/lib/plutonium.rb +17 -14
- data/package-lock.json +0 -7
- data/package.json +5 -5
- data/postcss.config.js +1 -1
- data/public/plutonium-assets/plutonium-app-36KN5FVJ.js +6 -0
- data/public/plutonium-assets/plutonium-app-36KN5FVJ.js.map +7 -0
- data/public/plutonium-assets/plutonium.50232e35b5495f5ad90d.css +3415 -0
- data/tailwind.config.js +11 -12
- data/templates/base.rb +1 -1
- metadata +19 -22
- data/app/assets/js/controllers/application.js +0 -7
- data/app/assets/js/controllers/index.js +0 -30
- data/app/assets/js/plutonium.js +0 -2
- data/build.js +0 -12
- data/lib/generators/pu/gem/pagy/pagy_generator.rb +0 -25
- data/lib/generators/pu/gem/pagy/templates/config/initializers/pagy.rb +0 -4
- data/lib/generators/pu/gem/rabl/rabl_generator.rb +0 -25
- data/lib/generators/pu/gem/rabl/templates/.keep +0 -0
- data/lib/generators/pu/gem/rabl/templates/config/initializers/rabl.rb +0 -60
- data/lib/generators/pu/gem/simple_form/simple_form_generator.rb +0 -25
- data/lib/generators/pu/gem/simple_form/templates/.keep +0 -0
- data/lib/plutonium/core/fields/renderers/map_renderer.rb +0 -19
- /data/{lib/generators/pu/gem/pagy/templates → app/assets/build}/.keep +0 -0
- /data/app/assets/{js → javascripts}/controllers/resource_dismiss_controller.js +0 -0
- /data/app/assets/{js → javascripts}/controllers/resource_drop_down_controller.js +0 -0
- /data/app/assets/{js → javascripts}/turbo/index.js +0 -0
- /data/app/assets/{js → javascripts}/turbo/turbo_actions.js +0 -0
- /data/app/assets/{js → javascripts}/turbo/turbo_debug.js +0 -0
- /data/app/assets/{js → javascripts}/turbo/turbo_frame_monkey_patch.js +0 -0
- /data/app/assets/{css → stylesheets}/plutonium.css +0 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
// Import controllers here
|
2
|
+
import NestedResourceFormFieldsController from "../../../views/components/nested_resource_form_fields/nested_resource_form_fields_controller.js"
|
3
|
+
import TabBarController from "../../../views/components/tab_bar/tab_bar_controller.js"
|
4
|
+
import ToolbarController from "../../../views/components/toolbar/toolbar_controller.js"
|
5
|
+
import TableSearchInputController from "../../../views/components/table_search_input/table_search_input_controller.js"
|
6
|
+
import TableToolbarController from "../../../views/components/table_toolbar/table_toolbar_controller.js"
|
7
|
+
import TableController from "../../../views/components/table/table_controller.js"
|
8
|
+
import FormController from "../../../views/components/form/form_controller.js"
|
9
|
+
import ResourceDropDownController from "./resource_drop_down_controller.js"
|
10
|
+
import ResourceDismissController from "./resource_dismiss_controller.js"
|
11
|
+
|
12
|
+
export function registerControllers(application) {
|
13
|
+
// Register controllers here
|
14
|
+
application.register("nested-resource-form-fields", NestedResourceFormFieldsController)
|
15
|
+
application.register("tab-bar", TabBarController)
|
16
|
+
application.register("toolbar", ToolbarController)
|
17
|
+
application.register("table-search-input", TableSearchInputController)
|
18
|
+
application.register("table-toolbar", TableToolbarController)
|
19
|
+
application.register("table", TableController)
|
20
|
+
application.register("form", FormController)
|
21
|
+
application.register("resource-drop-down", ResourceDropDownController)
|
22
|
+
application.register("resource-dismiss", ResourceDismissController)
|
23
|
+
}
|
24
|
+
|
25
|
+
// Export controllers here
|
26
|
+
export { NestedResourceFormFieldsController };
|
27
|
+
export { TabBarController };
|
28
|
+
export { ToolbarController };
|
29
|
+
export { TableSearchInputController };
|
30
|
+
export { TableToolbarController };
|
31
|
+
export { TableController };
|
32
|
+
export { FormController };
|
33
|
+
export { ResourceDropDownController };
|
34
|
+
export { ResourceDismissController };
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from "./controllers"
|
data/css.manifest
ADDED
data/esbuild.config.js
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
const esbuild = require('esbuild');
|
2
|
+
const manifestPlugin = require('esbuild-plugin-manifest')
|
3
|
+
|
4
|
+
|
5
|
+
if (process.argv.includes("--prod")) {
|
6
|
+
esbuild.build({
|
7
|
+
outdir: "public/plutonium-assets",
|
8
|
+
entryPoints: [
|
9
|
+
"app/assets/javascripts/plutonium-app.js"
|
10
|
+
],
|
11
|
+
plugins: [
|
12
|
+
manifestPlugin({
|
13
|
+
filename: `${__dirname}/js.manifest`,
|
14
|
+
shortNames: true,
|
15
|
+
})
|
16
|
+
],
|
17
|
+
minify: true,
|
18
|
+
sourcemap: true,
|
19
|
+
bundle: true,
|
20
|
+
})
|
21
|
+
|
22
|
+
esbuild.build({
|
23
|
+
outdir: "app/assets/build",
|
24
|
+
entryPoints: [
|
25
|
+
"app/assets/javascripts/plutonium.js"
|
26
|
+
],
|
27
|
+
bundle: true,
|
28
|
+
})
|
29
|
+
}
|
30
|
+
else {
|
31
|
+
esbuild.context({
|
32
|
+
outdir: "public/plutonium-assets/build",
|
33
|
+
entryPoints: [
|
34
|
+
"app/assets/javascripts/plutonium-app.js"
|
35
|
+
],
|
36
|
+
plugins: [
|
37
|
+
manifestPlugin({
|
38
|
+
filename: `${__dirname}/js.dev.manifest`,
|
39
|
+
shortNames: true,
|
40
|
+
})
|
41
|
+
],
|
42
|
+
bundle: true,
|
43
|
+
}).then((context) => context.watch().catch((e) => console.error(e.message)))
|
44
|
+
}
|
@@ -20,8 +20,10 @@ module Pu
|
|
20
20
|
template "component.html.erb", "#{component_path}.html.erb"
|
21
21
|
template "controller.js", controller_path
|
22
22
|
|
23
|
-
|
24
|
-
insert_into_file
|
23
|
+
controllers_index_file = File.join __dir__, "../../../../../app/assets/javascripts/controllers/index.js"
|
24
|
+
insert_into_file controllers_index_file, controller_import, after: /.*Import controllers here*\n/
|
25
|
+
insert_into_file controllers_index_file, controller_registration, after: /.*Register controllers here*\n/
|
26
|
+
insert_into_file controllers_index_file, controller_export, after: /.*Export controllers here*\n/
|
25
27
|
end
|
26
28
|
|
27
29
|
protected
|
@@ -78,9 +80,16 @@ module Pu
|
|
78
80
|
[component_module, "#{component_name}Controller"].compact.join("::").gsub("::", "_")
|
79
81
|
end
|
80
82
|
|
83
|
+
def controller_import
|
84
|
+
"import #{controller_reference} from \"../../../../#{controller_path}\"\n"
|
85
|
+
end
|
86
|
+
|
81
87
|
def controller_registration
|
82
|
-
|
83
|
-
|
88
|
+
" application.register(\"#{controller_identifier}\", #{controller_reference})\n"
|
89
|
+
end
|
90
|
+
|
91
|
+
def controller_export
|
92
|
+
"export { #{controller_reference} }\n"
|
84
93
|
end
|
85
94
|
end
|
86
95
|
end
|
@@ -11,87 +11,89 @@ module PlutoniumGenerators
|
|
11
11
|
protected
|
12
12
|
|
13
13
|
#
|
14
|
-
# Sets the ruby version for the project in .ruby-version and Gemfile to `
|
14
|
+
# Sets the ruby version for the project in .ruby-version and Gemfile to `version`
|
15
15
|
#
|
16
|
-
# @
|
17
|
-
#
|
18
|
-
def set_ruby_version!
|
19
|
-
log :set_ruby_version!, PlutoniumGenerators::RUBY_VERSION
|
20
|
-
|
21
|
-
in_root do
|
22
|
-
create_file ".ruby-version", PlutoniumGenerators::RUBY_VERSION, force: true, verbose: false
|
23
|
-
gsub_file "Gemfile", /^ruby ["'].*["']/, "ruby '~> #{PlutoniumGenerators::RUBY_VERSION}'", verbose: false
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
#
|
28
|
-
# Adds a new gem into the Gemfile
|
29
|
-
# Existing directives are updated if they do not match
|
30
|
-
# When `:group` is specified, the gem is inserted into the approriate gem group.
|
31
|
-
#
|
32
|
-
# @param [String] name the name of the gem
|
33
|
-
# @param [Hash] **kwargs set of options to append see #super
|
16
|
+
# @param [string] version semantic ruby version you want to use e.g. 3.3.0
|
34
17
|
#
|
35
18
|
# @return [void]
|
36
19
|
#
|
37
|
-
def
|
38
|
-
|
20
|
+
def set_ruby_version!(version)
|
21
|
+
log :set_ruby_version!, version
|
39
22
|
|
40
23
|
in_root do
|
41
|
-
|
42
|
-
|
43
|
-
File.rename("Gemfile", "Gemfile.bak")
|
44
|
-
File.write("Gemfile", "")
|
45
|
-
# Generate the directive
|
46
|
-
super
|
47
|
-
# Get the generated directive
|
48
|
-
directive = gemfile.strip
|
49
|
-
ensure
|
50
|
-
# Restore our gemfile
|
51
|
-
File.delete "Gemfile"
|
52
|
-
File.rename "Gemfile.bak", "Gemfile"
|
53
|
-
end
|
54
|
-
|
55
|
-
pattern = /^# gem ['"]#{name}['"].*/
|
56
|
-
if gemfile.match(pattern)
|
57
|
-
# Replace commented out directive
|
58
|
-
gsub_file("Gemfile", pattern, directive)
|
59
|
-
break
|
60
|
-
end
|
61
|
-
|
62
|
-
# Remove existing directive
|
63
|
-
remove_gem name
|
64
|
-
|
65
|
-
# Insert the new directive
|
66
|
-
if groups != []
|
67
|
-
str = groups.sort.map(&:inspect).join(", ")
|
68
|
-
after_sentinel = "group #{str} do\n"
|
69
|
-
|
70
|
-
unless File.read("Gemfile").match?(/^#{after_sentinel}/)
|
71
|
-
inject_into_file "Gemfile", "\n#{after_sentinel}end\n"
|
72
|
-
end
|
73
|
-
else
|
74
|
-
after_sentinel = "# Project gems\n\n"
|
75
|
-
unless File.read("Gemfile").match?(/^#{after_sentinel}/)
|
76
|
-
inject_into_file "Gemfile", "\n#{after_sentinel}", after: /^ruby .*\n/
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
inject_into_file "Gemfile", "#{directive}\n", after: /^#{after_sentinel}/
|
24
|
+
create_file ".ruby-version", version, force: true, verbose: false
|
25
|
+
gsub_file "Gemfile", /^ruby ["'].*["']/, "ruby '~> #{version}'", verbose: false
|
81
26
|
end
|
82
27
|
end
|
83
28
|
|
84
|
-
#
|
85
|
-
#
|
86
|
-
#
|
87
|
-
#
|
88
|
-
#
|
89
|
-
# @
|
90
|
-
#
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
29
|
+
# #
|
30
|
+
# # Adds a new gem into the Gemfile
|
31
|
+
# # Existing directives are updated if they do not match
|
32
|
+
# # When `:group` is specified, the gem is inserted into the approriate gem group.
|
33
|
+
# #
|
34
|
+
# # @param [String] name the name of the gem
|
35
|
+
# # @param [Hash] **kwargs set of options to append see #super
|
36
|
+
# #
|
37
|
+
# # @return [void]
|
38
|
+
# #
|
39
|
+
# def gem(name, **kwargs)
|
40
|
+
# groups = Array(kwargs.delete(:group))
|
41
|
+
|
42
|
+
# in_root do
|
43
|
+
# begin
|
44
|
+
# # Create a temp gemfile
|
45
|
+
# File.rename("Gemfile", "Gemfile.bak")
|
46
|
+
# File.write("Gemfile", "")
|
47
|
+
# # Generate the directive
|
48
|
+
# super
|
49
|
+
# # Get the generated directive
|
50
|
+
# directive = gemfile.strip
|
51
|
+
# ensure
|
52
|
+
# # Restore our gemfile
|
53
|
+
# File.delete "Gemfile"
|
54
|
+
# File.rename "Gemfile.bak", "Gemfile"
|
55
|
+
# end
|
56
|
+
|
57
|
+
# pattern = /^# gem ['"]#{name}['"].*/
|
58
|
+
# if gemfile.match(pattern)
|
59
|
+
# # Replace commented out directive
|
60
|
+
# gsub_file("Gemfile", pattern, directive)
|
61
|
+
# break
|
62
|
+
# end
|
63
|
+
|
64
|
+
# # Remove existing directive
|
65
|
+
# remove_gem name
|
66
|
+
|
67
|
+
# # Insert the new directive
|
68
|
+
# if groups != []
|
69
|
+
# str = groups.sort.map(&:inspect).join(", ")
|
70
|
+
# after_sentinel = "group #{str} do\n"
|
71
|
+
|
72
|
+
# unless File.read("Gemfile").match?(/^#{after_sentinel}/)
|
73
|
+
# inject_into_file "Gemfile", "\n#{after_sentinel}end\n"
|
74
|
+
# end
|
75
|
+
# else
|
76
|
+
# after_sentinel = "# Project gems\n\n"
|
77
|
+
# unless File.read("Gemfile").match?(/^#{after_sentinel}/)
|
78
|
+
# inject_into_file "Gemfile", "\n#{after_sentinel}", after: /^ruby .*\n/
|
79
|
+
# end
|
80
|
+
# end
|
81
|
+
|
82
|
+
# inject_into_file "Gemfile", "#{directive}\n", after: /^#{after_sentinel}/
|
83
|
+
# end
|
84
|
+
# end
|
85
|
+
|
86
|
+
# #
|
87
|
+
# # Removes a gem and any preceeding comments from the Gemfile
|
88
|
+
# #
|
89
|
+
# # @param gem [String] the name of the gem to remove
|
90
|
+
# #
|
91
|
+
# # @return [void]
|
92
|
+
# #
|
93
|
+
# def remove_gem(gem)
|
94
|
+
# log :remove_gem, gem
|
95
|
+
# gsub_file "Gemfile", /(:?^.*#.*\n)*.*gem ['"]#{gem}['"].*\n/, "", verbose: false
|
96
|
+
# end
|
95
97
|
|
96
98
|
#
|
97
99
|
# Evaluates the given template and merges it with the project's docker-compose.yml
|
@@ -348,6 +350,18 @@ module PlutoniumGenerators
|
|
348
350
|
File.read("Gemfile")
|
349
351
|
end
|
350
352
|
end
|
353
|
+
|
354
|
+
def bundle(*gems)
|
355
|
+
Bundler.with_unbundled_env do
|
356
|
+
run "bundle add #{Array(gems).join " "}"
|
357
|
+
end
|
358
|
+
end
|
359
|
+
|
360
|
+
def unbundle(*gems)
|
361
|
+
Bundler.with_unbundled_env do
|
362
|
+
run "bundle remove #{Array(gems).join " "}"
|
363
|
+
end
|
364
|
+
end
|
351
365
|
end
|
352
366
|
end
|
353
367
|
end
|
@@ -7,7 +7,7 @@ module PlutoniumGenerators
|
|
7
7
|
class ModelGenerator < ActiveRecord::Generators::ModelGenerator
|
8
8
|
include PlutoniumGenerators::Generator
|
9
9
|
|
10
|
-
|
10
|
+
remove_hook_for :test_framework
|
11
11
|
remove_task :create_migration_file
|
12
12
|
remove_task :create_model_file
|
13
13
|
remove_task :create_module_file
|
@@ -9,7 +9,6 @@ module Plutonium
|
|
9
9
|
|
10
10
|
map_type :belongs_to, :has_one, :has_many, to: Plutonium::Core::Fields::Renderers::AssociationRenderer
|
11
11
|
map_type :attachment, to: Plutonium::Core::Fields::Renderers::AttachmentRenderer
|
12
|
-
map_type :map, to: Plutonium::Core::Fields::Renderers::MapRenderer
|
13
12
|
|
14
13
|
def self.build(name, type:, **)
|
15
14
|
mapping = mappings[type] || Plutonium::Core::Fields::Renderers::BasicRenderer
|
data/lib/plutonium/pkg/base.rb
CHANGED
data/lib/plutonium/railtie.rb
CHANGED
@@ -2,7 +2,15 @@ require "view_component"
|
|
2
2
|
|
3
3
|
module Plutonium
|
4
4
|
class Railtie < Rails::Railtie
|
5
|
-
|
5
|
+
config.plutonium = ActiveSupport::OrderedOptions.new
|
6
|
+
|
7
|
+
initializer "plutonium.append_assets_path" do |app|
|
8
|
+
config.to_prepare do
|
9
|
+
Rails.application.config.assets.paths << Plutonium.root.join("app/assets/build").to_s
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
initializer "plutonium.asset_server" do
|
6
14
|
# setup a middleware to serve our assets
|
7
15
|
config.app_middleware.insert_before(
|
8
16
|
ActionDispatch::Static,
|
@@ -17,7 +25,7 @@ module Plutonium
|
|
17
25
|
)
|
18
26
|
end
|
19
27
|
|
20
|
-
initializer "plutonium.
|
28
|
+
initializer "plutonium.view_components_capture_compat" do
|
21
29
|
config.view_component.capture_compatibility_patch_enabled = true
|
22
30
|
end
|
23
31
|
end
|
data/lib/plutonium/version.rb
CHANGED
data/lib/plutonium.rb
CHANGED
@@ -21,28 +21,31 @@ module Plutonium
|
|
21
21
|
|
22
22
|
def self.stylesheet_link
|
23
23
|
if Plutonium::Config.development
|
24
|
-
|
25
|
-
"
|
24
|
+
base_dir = "/plutonium-assets/build"
|
25
|
+
manifest = "css.dev.manifest"
|
26
|
+
filename = "plutonium-dev.css"
|
26
27
|
else
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
# "/plutonium-assets/#{file}"
|
31
|
-
# end
|
28
|
+
base_dir = "/plutonium-assets"
|
29
|
+
manifest = "css.manifest"
|
30
|
+
filename = "plutonium.css"
|
32
31
|
end
|
32
|
+
|
33
|
+
file = JSON.parse(File.read(root.join(manifest)))[filename]
|
34
|
+
"#{base_dir}/#{file}"
|
33
35
|
end
|
34
36
|
|
35
37
|
def self.script_link
|
38
|
+
filename = "plutonium-app.js"
|
36
39
|
if Plutonium::Config.development
|
37
|
-
|
38
|
-
"
|
40
|
+
base_dir = "/plutonium-assets/build"
|
41
|
+
manifest = "js.dev.manifest"
|
39
42
|
else
|
40
|
-
|
41
|
-
|
42
|
-
# file = JSON.parse(File.read(root.join("css.manifest")))["plutonium.css"]
|
43
|
-
# "/plutonium-assets/#{file}"
|
44
|
-
# end
|
43
|
+
base_dir = "/plutonium-assets"
|
44
|
+
manifest = "js.manifest"
|
45
45
|
end
|
46
|
+
|
47
|
+
file = JSON.parse(File.read(root.join(manifest)))[filename]
|
48
|
+
"#{base_dir}/#{file}"
|
46
49
|
end
|
47
50
|
end
|
48
51
|
|
data/package-lock.json
CHANGED
@@ -13,7 +13,6 @@
|
|
13
13
|
"esbuild-plugin-manifest": "^1.0.3",
|
14
14
|
"flowbite": "^2.3.0",
|
15
15
|
"lodash.debounce": "^4.0.8",
|
16
|
-
"mapkick": "^0.2.6",
|
17
16
|
"postcss": "^8.4.35",
|
18
17
|
"postcss-cli": "^11.0.0",
|
19
18
|
"postcss-hash": "^3.0.0",
|
@@ -1381,12 +1380,6 @@
|
|
1381
1380
|
"node": "14 || >=16.14"
|
1382
1381
|
}
|
1383
1382
|
},
|
1384
|
-
"node_modules/mapkick": {
|
1385
|
-
"version": "0.2.6",
|
1386
|
-
"resolved": "https://registry.npmjs.org/mapkick/-/mapkick-0.2.6.tgz",
|
1387
|
-
"integrity": "sha512-sDfPCOhTpQrzJc3Yzwg5XOBy5o2TTNEfH2dG2QZM7RUtfQzhY+xErfhQHrQvSOaWbf4zOegPq/dhaWuv2fo4CA==",
|
1388
|
-
"dev": true
|
1389
|
-
},
|
1390
1383
|
"node_modules/merge2": {
|
1391
1384
|
"version": "1.4.1",
|
1392
1385
|
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
data/package.json
CHANGED
@@ -11,12 +11,12 @@
|
|
11
11
|
"postcss": "^8.4.35",
|
12
12
|
"postcss-cli": "^11.0.0",
|
13
13
|
"postcss-hash": "^3.0.0",
|
14
|
-
"tailwindcss": "^3.4.1"
|
15
|
-
"mapkick": "^0.2.6"
|
14
|
+
"tailwindcss": "^3.4.1"
|
16
15
|
},
|
17
16
|
"scripts": {
|
18
|
-
"
|
19
|
-
"
|
20
|
-
"
|
17
|
+
"css:dev": "postcss app/assets/stylesheets/plutonium.css -o public/plutonium-assets/build/plutonium-dev.css --watch",
|
18
|
+
"js:dev": "node esbuild.config.js",
|
19
|
+
"css:prod": "postcss app/assets/stylesheets/plutonium.css -o public/plutonium-assets/plutonium.css --prod",
|
20
|
+
"js:prod": "node esbuild.config.js --prod"
|
21
21
|
}
|
22
22
|
}
|