tailwindcss-rails 0.4.2 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f354ae7802c5744ba28ece4ee53ca032f49b0b38fa97376f6ab910a3ba33744
4
- data.tar.gz: e69831fa1b30f18c1eb11758966dbe52c057e745e8d47b82c890afe62f628535
3
+ metadata.gz: 19280c4f676908c3a3819db3bcdb348b1d89e9dd68f564e86c99919d9ca89bb1
4
+ data.tar.gz: 2d75756def5ae852f39aa0c4a071e4f2ff8ba13551eec23061e47a18ccdd9767
5
5
  SHA512:
6
- metadata.gz: 33fdc4ca096f78935fc9ba17a884971fbf51e3e45ff439dfd09eb50c2c8b78e49a39fb55aae1d1fe7124817ce69f1fd9651b458616ddc08bda3a1ac12e8aec62
7
- data.tar.gz: a2052365bc20ef8fae2017cce0f9a4c6fa7ab94b95ca087e62b8d7051cee3632d51815e8db71fac0a2f9278130f72d3fbc8e6cf8b3ba2c75224eb1b758d02451
6
+ metadata.gz: 3d1a3120bff3b14c7542afd84cab974c78b3b001080ff32c283c15c6cb587815e5c4b300a2fb444bee2842811f98d02974baa5f5de88848e1f8fbe5b39798198
7
+ data.tar.gz: c1b35bc72938e1e344566b7f89af998fdb1dd7df74e9f911888ce87b0fcaec79ffb5ce39a2e423d9000ef3599f272a6ff027e49015bb8aafefede11bdf9a95fd
data/README.md CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  [Tailwind CSS](https://tailwindcss.com) is a utility-first CSS framework packed with classes like flex, pt-4, text-center and rotate-90 that can be composed to build any design, directly in your markup.
4
4
 
5
- This gem gives access to the standard Tailwind CSS framework configured for dark mode, forms, aspect-ratio, typography, and the Inter font via the asset pipeline using Sprockets. If you need to customize Tailwind, you will need to install it the traditional way using [Webpacker](https://github.com/rails/webpacker) instead or use webpacker port of this gem [tailwindcss-rails-webpacker](https://github.com/WizardComputer/tailwindcss-rails-webpacker).
5
+ This gem gives access to the standard Tailwind CSS framework configured for dark mode, forms, aspect-ratio, typography, and the Inter font via the asset pipeline using Sprockets (and soon [Propshaft](https://github.com/rails/propshaft)).
6
+
7
+ If you need to customize Tailwind, you will need to install it under a full JavaScript bundling setup, such as [cssbundling-rails](https://github.com/rails/cssbundling-rails). This gem was specifically designed not to require a Node.js environment. If you're already using such an environment, you won't need this gem.
6
8
 
7
9
  Production-mode purging of unused css class names is provided by a Sprockets compressor built into this gem. This compressor ensures that only the css classes used by files in `app/views` and `app/helpers` are included. In development mode, the full 7mb+ Tailwind stylesheet is loaded.
8
10
 
@@ -53,7 +55,7 @@ The Tailwind CSS main file that's being used before purging consists of these ve
53
55
  * @tailwindcss/forms 0.3.3
54
56
  * @tailwindcss/typography 0.4.1
55
57
  * autoprefixer 10.3.1
56
- * tailwindcss 2.2.7
58
+ * tailwindcss 2.2.15
57
59
 
58
60
 
59
61
  ## License
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v2.2.7 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v2.2.19 | MIT License | https://tailwindcss.com */
2
2
 
3
3
  /*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
4
4
 
@@ -475,6 +475,18 @@ button,
475
475
  cursor: pointer;
476
476
  }
477
477
 
478
+ /**
479
+ * Override legacy focus reset from Normalize with modern Firefox focus styles.
480
+ *
481
+ * This is actually an improvement over the new defaults in Firefox in our testing,
482
+ * as it triggers the better focus styles even for links, which still use a dotted
483
+ * outline in Firefox by default.
484
+ */
485
+
486
+ :-moz-focusring {
487
+ outline: auto;
488
+ }
489
+
478
490
  table {
479
491
  border-collapse: collapse;
480
492
  }
@@ -0,0 +1,9 @@
1
+ require "rails/generators/erb/controller/controller_generator"
2
+
3
+ module Tailwindcss
4
+ module Generators
5
+ class ControllerGenerator < Erb::Generators::ControllerGenerator
6
+ source_root File.expand_path("../templates", __FILE__)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,4 @@
1
+ <div>
2
+ <h1 class="text-lg font-bold text-4xl"><%= class_name %>#<%= @action %></h1>
3
+ <p>Find me in <%= @path %></p>
4
+ </div>
@@ -0,0 +1,9 @@
1
+ require "rails/generators/erb/mailer/mailer_generator"
2
+
3
+ module Tailwindcss
4
+ module Generators
5
+ class MailerGenerator < Erb::Generators::MailerGenerator
6
+ source_root File.expand_path("../templates", __FILE__)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ <h1><%= class_name %>#<%= @action %></h1>
2
+
3
+ <p>
4
+ <%%= @greeting %>, find me in <%= @path %>
5
+ </p>
@@ -0,0 +1,3 @@
1
+ <%= class_name %>#<%= @action %>
2
+
3
+ <%%= @greeting %>, find me in <%= @path %>
@@ -0,0 +1,34 @@
1
+ require 'rails/generators/erb/scaffold/scaffold_generator'
2
+ require "rails/generators/resource_helpers"
3
+
4
+ module Tailwindcss
5
+ module Generators
6
+ class ScaffoldGenerator < Erb::Generators::ScaffoldGenerator
7
+ include Rails::Generators::ResourceHelpers
8
+
9
+ source_root File.expand_path("../templates", __FILE__)
10
+
11
+ argument :attributes, type: :array, default: [], banner: "field:type field:type"
12
+
13
+ def create_root_folder
14
+ empty_directory File.join("app/views", controller_file_path)
15
+ end
16
+
17
+ def copy_view_files
18
+ available_views.each do |view|
19
+ formats.each do |format|
20
+ filename = filename_with_extensions(view, format)
21
+ template filename, File.join("app/views", controller_file_path, filename)
22
+ end
23
+ end
24
+
25
+ template "partial.html.erb", File.join("app/views", controller_file_path, "_#{singular_table_name}.html.erb")
26
+ end
27
+
28
+ private
29
+ def available_views
30
+ %w(index edit show new _form)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,43 @@
1
+ <%%= form_with(model: <%= model_resource_name %>, class: "contents") do |form| %>
2
+ <%% if <%= singular_table_name %>.errors.any? %>
3
+ <div id="error_explanation" class="bg-red-50 text-red-500 px-3 py-2 font-medium rounded-lg mt-3">
4
+ <h2><%%= pluralize(<%= singular_table_name %>.errors.count, "error") %> prohibited this <%= singular_table_name %> from being saved:</h2>
5
+
6
+ <ul>
7
+ <%% <%= singular_table_name %>.errors.each do |error| %>
8
+ <li><%%= error.full_message %></li>
9
+ <%% end %>
10
+ </ul>
11
+ </div>
12
+ <%% end %>
13
+
14
+ <% attributes.each do |attribute| -%>
15
+ <div class="my-5">
16
+ <% if attribute.password_digest? -%>
17
+ <%%= form.label :password %>
18
+ <%%= form.password_field :password %>
19
+ </div>
20
+
21
+ <div class="my-5">
22
+ <%%= form.label :password_confirmation %>
23
+ <%%= form.password_field :password_confirmation, class: "block shadow rounded-md border border-gray-200 outline-none px-3 py-2 mt-2 w-full" %>
24
+ <% elsif attribute.attachments? -%>
25
+ <%%= form.label :<%= attribute.column_name %> %>
26
+ <%%= form.<%= attribute.field_type %> :<%= attribute.column_name %>, multiple: true, class: "block shadow rounded-md border border-gray-200 outline-none px-3 py-2 mt-2 w-full" %>
27
+ <% else -%>
28
+ <%%= form.label :<%= attribute.column_name %> %>
29
+ <% if attribute.field_type == :text_area -%>
30
+ <%%= form.<%= attribute.field_type %> :<%= attribute.column_name %>, rows: 4, class: "block shadow rounded-md border border-gray-200 outline-none px-3 py-2 mt-2 w-full" %>
31
+ <% elsif attribute.field_type == :check_box -%>
32
+ <%%= form.<%= attribute.field_type %> :<%= attribute.column_name %>, class: "block mt-2 h-5 w-5" %>
33
+ <% else -%>
34
+ <%%= form.<%= attribute.field_type %> :<%= attribute.column_name %>, class: "block shadow rounded-md border border-gray-200 outline-none px-3 py-2 mt-2 w-full" %>
35
+ <% end -%>
36
+ <% end -%>
37
+ </div>
38
+
39
+ <% end -%>
40
+ <div class="inline">
41
+ <%%= form.submit class: "rounded-lg py-3 px-5 bg-blue-600 text-white inline-block font-medium cursor-pointer" %>
42
+ </div>
43
+ <%% end %>
@@ -0,0 +1,8 @@
1
+ <div class="mx-auto md:w-2/3 w-full">
2
+ <h1 class="font-bold text-4xl">Editing <%= human_name.downcase %></h1>
3
+
4
+ <%%= render "form", <%= singular_table_name %>: @<%= singular_table_name %> %>
5
+
6
+ <%%= link_to "Show this <%= human_name.downcase %>", @<%= singular_table_name %>, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
7
+ <%%= link_to "Back to <%= human_name.pluralize.downcase %>", <%= index_helper %>_path, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
8
+ </div>
@@ -0,0 +1,14 @@
1
+ <div class="w-full">
2
+ <%% if notice.present? %>
3
+ <p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-lg inline-block" id="notice"><%%= notice %></p>
4
+ <%% end %>
5
+
6
+ <div class="flex justify-between items-center">
7
+ <h1 class="text-lg font-bold text-4xl"><%= human_name.pluralize %></h1>
8
+ <%%= link_to 'New <%= human_name.downcase %>', new_<%= singular_route_name %>_path, class: "rounded-lg py-3 px-5 bg-blue-600 text-white block font-medium" %>
9
+ </div>
10
+
11
+ <div id="<%= plural_table_name %>" class="min-w-full">
12
+ <%%= render @<%= plural_table_name %> %>
13
+ </div>
14
+ </div>
@@ -0,0 +1,7 @@
1
+ <div class="mx-auto md:w-2/3 w-full">
2
+ <h1 class="text-lg font-bold text-4xl">New <%= human_name.downcase %></h1>
3
+
4
+ <%%= render "form", <%= singular_table_name %>: @<%= singular_table_name %> %>
5
+
6
+ <%%= link_to 'Back to <%= human_name.pluralize.downcase %>', <%= index_helper %>_path, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
7
+ </div>
@@ -0,0 +1,22 @@
1
+ <div id="<%%= dom_id <%= singular_table_name %> %>">
2
+ <% attributes.reject(&:password_digest?).each do |attribute| -%>
3
+ <p class="my-5">
4
+ <strong class="block font-medium mb-1"><%= attribute.human_name %>:</strong>
5
+ <% if attribute.attachment? -%>
6
+ <%%= link_to <%= singular_table_name %>.<%= attribute.column_name %>.filename, <%= singular_table_name %>.<%= attribute.column_name %> if <%= singular_table_name %>.<%= attribute.column_name %>.attached? %>
7
+ <% elsif attribute.attachments? -%>
8
+ <%% <%= singular_table_name %>.<%= attribute.column_name %>.each do |<%= attribute.singular_name %>| %>
9
+ <div><%%= link_to <%= attribute.singular_name %>.filename, <%= attribute.singular_name %> %></div>
10
+ <%% end %>
11
+ <% else -%>
12
+ <%%= <%= singular_table_name %>.<%= attribute.column_name %> %>
13
+ <% end -%>
14
+ </p>
15
+
16
+ <% end -%>
17
+ <%% if action_name != "show" %>
18
+ <%%= link_to "Show this <%= human_name.downcase %>", <%= singular_table_name %>, class: "rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
19
+ <%%= link_to 'Edit this <%= human_name.downcase %>', edit_<%= singular_table_name %>_path(<%= singular_table_name %>), class: "rounded-lg py-3 ml-2 px-5 bg-gray-100 inline-block font-medium" %>
20
+ <hr class="mt-6">
21
+ <%% end %>
22
+ </div>
@@ -0,0 +1,15 @@
1
+ <div class="mx-auto md:w-2/3 w-full flex">
2
+ <div class="mx-auto">
3
+ <%% if notice.present? %>
4
+ <p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-lg inline-block" id="notice"><%%= notice %></p>
5
+ <%% end %>
6
+
7
+ <%%= render @<%= singular_table_name %> %>
8
+
9
+ <%%= link_to 'Edit this <%= singular_table_name %>', edit_<%= singular_table_name %>_path(@<%= singular_table_name %>), class: "mt-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
10
+ <div class="inline-block ml-2">
11
+ <%%= button_to 'Delete this <%= singular_table_name %>', <%= singular_table_name %>_path(@<%= singular_table_name %>), method: :delete, data: { confirm: "Are you sure you want to delete this <%= singular_table_name %>?" }, class: "mt-2 rounded-lg py-3 px-5 bg-gray-100 font-medium" %>
12
+ </div>
13
+ <%%= link_to 'Back to <%= plural_table_name %>', <%= index_helper %>_path, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
14
+ </div>
15
+ </div>
@@ -1,15 +1,22 @@
1
1
  APPLICATION_LAYOUT_PATH = Rails.root.join("app/views/layouts/application.html.erb")
2
2
 
3
3
  if APPLICATION_LAYOUT_PATH.exist?
4
- say "Add Tailwindcss include tags in application layout"
5
- insert_into_file Rails.root.join("app/views/layouts/application.html.erb").to_s, %(\n <%= stylesheet_link_tag "inter-font" %>\n <%= stylesheet_link_tag "tailwind" %>), before: /^\s*<%= stylesheet_link_tag/
4
+ say "Add Tailwindcss include tags and container element in application layout"
5
+ insert_into_file APPLICATION_LAYOUT_PATH.to_s, <<~ERB.indent(4), before: /^\s*<%= stylesheet_link_tag/
6
+ <%= stylesheet_link_tag "inter-font", "data-turbo-track": "reload" %>
7
+ <%= stylesheet_link_tag "tailwind", "data-turbo-track": "reload" %>
8
+ ERB
9
+ insert_into_file APPLICATION_LAYOUT_PATH.to_s, %( <main class="container mx-auto mt-28 px-5 flex">\n ), before: /^\s*<%= yield/
10
+ insert_into_file APPLICATION_LAYOUT_PATH.to_s, %(\n </main>), after: /^\s*<%= yield %>/
6
11
  else
7
12
  say "Default application.html.erb is missing!", :red
8
- say %( Add <%= stylesheet_link_tag "inter-font" %> and <%= stylesheet_link_tag "tailwind" %> within the <head> tag in your custom layout.)
13
+ say %( Add <%= stylesheet_link_tag "inter-font", "data-turbo-track": "reload" %> and <%= stylesheet_link_tag "tailwind", "data-turbo-track": "reload" %> within the <head> tag in your custom layout.)
9
14
  end
10
15
 
11
- say "Removing scaffold styles"
12
- remove_file Rails.root.join("app/assets/stylesheets/scaffolds.scss")
16
+ # No longer included by default in Rails 7, but for earlier versions of Rails
17
+ if (scaffolds_css_path = Rails.root.join("app/assets/stylesheets/scaffolds.scss")).exist?
18
+ remove_file scaffolds_css_path
19
+ end
13
20
 
14
21
  say "Turn on purging of unused css classes in production"
15
22
  gsub_file Rails.root.join("config/environments/production.rb"), /^\s+#?\s+config.assets.css_compressor =.*$/, %( config.assets.css_compressor = :purger)
@@ -10,8 +10,8 @@ class Tailwindcss::Compressor
10
10
  end
11
11
 
12
12
  def initialize(options = {})
13
- @options = {
14
- files_with_class_names: Rails.root.glob("app/views/**/*.*") + Rails.root.glob("app/helpers/**/*.rb"),
13
+ @options = {
14
+ files_with_class_names: files_with_class_names,
15
15
  only_purge: %w[ tailwind ]
16
16
  }.merge(options).freeze
17
17
  end
@@ -23,4 +23,11 @@ class Tailwindcss::Compressor
23
23
  input[:data]
24
24
  end
25
25
  end
26
+
27
+ private
28
+ def files_with_class_names
29
+ Rails.root.glob("app/views/**/*.*") +
30
+ Rails.root.glob("app/helpers/**/*.rb") +
31
+ Rails.root.glob("app/javascript/**/*.js")
32
+ end
26
33
  end
@@ -19,5 +19,9 @@ module Tailwindcss
19
19
  env.cache = ActiveSupport::Cache.lookup_store(:null_store)
20
20
  end if Rails.env.production?
21
21
  end
22
+
23
+ config.app_generators do |g|
24
+ g.template_engine :tailwindcss
25
+ end
22
26
  end
23
27
  end
@@ -1,3 +1,3 @@
1
1
  module Tailwindcss
2
- VERSION = "0.4.2"
2
+ VERSION = "0.5.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tailwindcss-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-23 00:00:00.000000000 Z
11
+ date: 2021-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -51,6 +51,18 @@ files:
51
51
  - app/assets/fonts/Inter-roman.vietnamese.var.woff2
52
52
  - app/assets/stylesheets/inter-font.css.erb
53
53
  - app/assets/stylesheets/tailwind.css
54
+ - lib/generators/tailwindcss/controller/controller_generator.rb
55
+ - lib/generators/tailwindcss/controller/templates/view.html.erb.tt
56
+ - lib/generators/tailwindcss/mailer/mailer_generator.rb
57
+ - lib/generators/tailwindcss/mailer/templates/view.html.erb.tt
58
+ - lib/generators/tailwindcss/mailer/templates/view.text.erb.tt
59
+ - lib/generators/tailwindcss/scaffold/scaffold_generator.rb
60
+ - lib/generators/tailwindcss/scaffold/templates/_form.html.erb.tt
61
+ - lib/generators/tailwindcss/scaffold/templates/edit.html.erb.tt
62
+ - lib/generators/tailwindcss/scaffold/templates/index.html.erb.tt
63
+ - lib/generators/tailwindcss/scaffold/templates/new.html.erb.tt
64
+ - lib/generators/tailwindcss/scaffold/templates/partial.html.erb.tt
65
+ - lib/generators/tailwindcss/scaffold/templates/show.html.erb.tt
54
66
  - lib/install/tailwindcss.rb
55
67
  - lib/tailwindcss-rails.rb
56
68
  - lib/tailwindcss/compressor.rb
@@ -78,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
90
  - !ruby/object:Gem::Version
79
91
  version: '0'
80
92
  requirements: []
81
- rubygems_version: 3.1.4
93
+ rubygems_version: 3.2.22
82
94
  signing_key:
83
95
  specification_version: 4
84
96
  summary: Integrate Tailwind CSS with the asset pipeline in Rails.