swage 0.1.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.
@@ -0,0 +1,41 @@
1
+ module Views
2
+ module <%= controller_class_name %>
3
+ class Form < Components::Form
4
+ def view_template
5
+ <% attributes.each do |attribute| -%>
6
+ <% if attribute.password_digest? -%>
7
+ FormField do
8
+ FormFieldLabel { "Password" }
9
+ Field(:password).password
10
+ FormFieldError { model.errors[:password].map { "Password #{it}" }.join("\n") }
11
+ end
12
+ FormField do
13
+ FormFieldLabel { "Password Confirmation" }
14
+ Field(:password_confirmation).password
15
+ <% elsif attribute.attachments? -%>
16
+ FormField do
17
+ FormFieldLabel { "<%= attribute.column_name %>" }
18
+ Field(:<%= attribute.column_name %>).file
19
+ FormFieldError { model.errors[:<%= attribute.column_name %>].map{ "<%= attribute.human_name %> #{it}" }.join("\n") }
20
+ end
21
+ <% else -%>
22
+ FormField do
23
+ FormFieldLabel { "<%= attribute.column_name %>" }
24
+ <% if attribute.field_type == :textarea || attribute.field_type == :text_area -%>
25
+ Field(:<%= attribute.column_name %>).textarea
26
+ <% elsif attribute.field_type == :checkbox || attribute.field_type == :check_box -%>
27
+ Field(:<%= attribute.column_name %>).checkbox
28
+ <% else -%>
29
+ Field(:<%= attribute.column_name %>).input(type: :<%= attribute.field_type %>)
30
+ <% end -%>
31
+ <% end -%>
32
+ FormFieldError { model.errors[:<%= attribute.password_digest? ? "password_confirmation" : attribute.column_name %>].map { "<%= attribute.human_name %> #{it}" }.join("\n") }
33
+ end
34
+ <% end -%>
35
+ div(class: "inline") do
36
+ submit
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,39 @@
1
+ module Views
2
+ module <%= controller_class_name %>
3
+ class Index < Views::Base
4
+ include Phlexible::Rails::AutoLayout
5
+ include Phlex::Rails::Helpers::Notice
6
+
7
+ def initialize(<%= plural_table_name %>: nil)
8
+ @<%= plural_table_name %> = <%= plural_table_name %>
9
+ end
10
+
11
+ controller_variable :<%= plural_table_name %>
12
+
13
+ def view_template
14
+ div(class: "w-full px-8") do
15
+ if notice.present?
16
+ Text(id: "notice") { notice }
17
+ end
18
+
19
+ div(class: "flex justify-between items-center mb-10") do
20
+ Heading(level: 1) { "<%= human_name.pluralize %>" }
21
+ Link(href: new_<%= singular_table_name %>_path) { "New <%= human_name.downcase %>" }
22
+ end
23
+
24
+ div(id: "<%= plural_table_name %>", class: "min-w-full divide-y divide-gray-200") do
25
+ @<%= plural_table_name %>.each do |<%= singular_table_name %>|
26
+ div do
27
+ render Partial.new(<%= singular_table_name %>: <%= singular_table_name %>)
28
+ div(class: "flex gap-4") do
29
+ Link(href: <%= singular_table_name %>_path(<%= singular_table_name %>)) { "View" }
30
+ Link(href: edit_<%= singular_table_name %>_path(<%= singular_table_name %>)) { "Edit" }
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,23 @@
1
+ module Views
2
+ module <%= controller_class_name %>
3
+ class New < Views::Base
4
+ include Phlexible::Rails::AutoLayout
5
+
6
+ def initialize(<%= singular_table_name %>: nil)
7
+ @<%= singular_table_name %> = <%= singular_table_name %>
8
+ end
9
+
10
+ controller_variable :<%= singular_table_name %>
11
+
12
+ def view_template
13
+ div(class: "mx-auto md:w-2/3 w-full px-8") do
14
+ Heading(level: 1) { "New <%= human_name.downcase %>" }
15
+
16
+ render Form.new(@<%= singular_table_name %>)
17
+
18
+ Link(href: <%= plural_table_name %>_path) { "Back to <%= human_name.pluralize.downcase %>" }
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,24 @@
1
+ module Views
2
+ module <%= controller_class_name %>
3
+ class Partial < Views::Base
4
+ include Phlex::Rails::Helpers::DOMID
5
+
6
+ def initialize(<%= singular_table_name %>: nil)
7
+ @<%= singular_table_name %> = <%= singular_table_name %>
8
+ end
9
+
10
+ def view_template
11
+ div(id: dom_id(@<%= singular_table_name %>), class: "py-6 flex justify-between items-center") do
12
+ div do
13
+ <% attributes.delete_if{ it.name == "password" }.each do |attribute| -%>
14
+ div(class: "mb-2") do
15
+ Text(as: "strong", size: "4", wight: "bold") { "<%= attribute.human_name %>" }
16
+ Text(size: "4", weight: "semibold") { @<%= singular_table_name %>.<%= attribute.name %>.to_s }
17
+ end
18
+ <% end -%>
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,36 @@
1
+ module Views
2
+ module <%= controller_class_name %>
3
+ class Show < Views::Base
4
+ include Phlexible::Rails::AutoLayout
5
+ include Phlex::Rails::Helpers::Notice
6
+
7
+ def initialize(<%= singular_table_name %>: nil)
8
+ @<%= singular_table_name %> = <%= singular_table_name %>
9
+ end
10
+
11
+ controller_variable :<%= singular_table_name %>
12
+
13
+ def view_template
14
+ div(class: "mx-auto md:w-2/3 w-full px-8") do
15
+ if notice.present?
16
+ Text(id: "notice") { notice }
17
+ end
18
+
19
+ render Partial.new(<%= singular_table_name %>: @<%= singular_table_name %>)
20
+
21
+ div(class: "mt-8 flex gap-4 border-t pt-6") do
22
+ Link(href: edit_<%= singular_table_name %>_path(@<%= singular_table_name %>)) { "Edit this <%= human_name.downcase %>" }
23
+ Link(href: <%= plural_table_name %>_path) { "Back to <%= human_name.pluralize.downcase %>" }
24
+
25
+ render Phlexible::Rails::ButtonTo.new(
26
+ <%= singular_table_name %>_path(@<%= singular_table_name %>),
27
+ method: :delete,
28
+ form_attributes: { class: "inline" },
29
+ variant: :destructive
30
+ ) { "Destroy" }
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
data/lib/swage.rb ADDED
@@ -0,0 +1,3 @@
1
+ module Swage
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,150 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: swage
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ian Wobschall
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: phlex
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: phlex-rails
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: phlexible
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: tailwindcss-rails
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: superform
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: ruby_ui
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ description: A UI library gluing together RubyUI, Phlex, and Tailwind with editable
97
+ generators
98
+ email:
99
+ - ian.wobschall@gmail.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - LICENSE.txt
105
+ - README.md
106
+ - lib/generators/swage/USAGE
107
+ - lib/generators/swage/base_generator.rb
108
+ - lib/generators/swage/generators/generators_generator.rb
109
+ - lib/generators/swage/install/install_generator.rb
110
+ - lib/generators/swage/install/templates/application_controller.rb.tt
111
+ - lib/generators/swage/install/templates/application_view.rb.tt
112
+ - lib/generators/swage/install/templates/base_component.rb.tt
113
+ - lib/generators/swage/install/templates/base_view.rb.tt
114
+ - lib/generators/swage/install/templates/engine.rb.tt
115
+ - lib/generators/swage/install/templates/form.rb.tt
116
+ - lib/generators/swage/install/templates/swage.rb.tt
117
+ - lib/generators/swage/install/templates/tw-animate-css.js.tt
118
+ - lib/generators/swage/scaffold/scaffold_generator.rb
119
+ - lib/generators/swage/scaffold/templates/controller.rb.tt
120
+ - lib/generators/swage/scaffold/templates/edit.rb.tt
121
+ - lib/generators/swage/scaffold/templates/form.rb.tt
122
+ - lib/generators/swage/scaffold/templates/index.rb.tt
123
+ - lib/generators/swage/scaffold/templates/new.rb.tt
124
+ - lib/generators/swage/scaffold/templates/partial.rb.tt
125
+ - lib/generators/swage/scaffold/templates/show.rb.tt
126
+ - lib/swage.rb
127
+ homepage: https://github.com/wobschalli/swage
128
+ licenses:
129
+ - MIT
130
+ metadata:
131
+ homepage_uri: https://github.com/wobschalli/swage
132
+ source_code_uri: https://github.com/wobschalli/swage
133
+ rdoc_options: []
134
+ require_paths:
135
+ - lib
136
+ required_ruby_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '4.0'
141
+ required_rubygems_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ requirements: []
147
+ rubygems_version: 4.0.3
148
+ specification_version: 4
149
+ summary: A Phlex UI library for Rails
150
+ test_files: []