bootstrap_form 4.4.0 → 5.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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +48 -0
- data/.gitignore +28 -3
- data/.rubocop.yml +19 -15
- data/CHANGELOG.md +82 -1
- data/CONTRIBUTING.md +73 -12
- data/Dangerfile +5 -7
- data/Dockerfile +21 -0
- data/Gemfile +8 -11
- data/README.md +829 -82
- data/RELEASING.md +5 -10
- data/UPGRADE-4.0.md +1 -1
- data/UPGRADE-5.0.md +25 -0
- data/bootstrap_form.gemspec +8 -5
- data/demo/.ruby-version +1 -0
- data/demo/Gemfile +80 -0
- data/demo/Gemfile.lock +261 -0
- data/demo/Procfile.dev +2 -0
- data/demo/app/assets/builds/.keep +0 -0
- data/demo/app/assets/builds/application.js.LICENSE.txt +9 -0
- data/demo/app/assets/config/manifest.js +2 -2
- data/demo/app/assets/stylesheets/actiontext.css +31 -0
- data/demo/app/assets/stylesheets/application.scss +1 -1
- data/demo/app/controllers/bootstrap_controller.rb +17 -2
- data/demo/app/controllers/users_controller.rb +9 -0
- data/demo/app/helpers/bootstrap_helper.rb +5 -5
- data/demo/app/javascript/application.js +3 -0
- data/demo/app/models/skill.rb +15 -0
- data/demo/app/models/user.rb +14 -0
- data/demo/app/views/active_storage/blobs/_blob.html.erb +1 -1
- data/demo/app/views/bootstrap/form.html.erb +13 -0
- data/demo/app/views/layouts/action_text/contents/_content.html.erb +3 -0
- data/demo/app/views/layouts/application.html.erb +28 -20
- data/demo/bin/dev +9 -0
- data/demo/config/environments/development.rb +3 -3
- data/demo/config/puma.rb +2 -2
- data/demo/config/routes.rb +1 -0
- data/demo/db/schema.rb +31 -16
- data/demo/doc/screenshots/bootstrap/index/00_horizontal_form.png +0 -0
- data/demo/doc/screenshots/bootstrap/index/01_with_validation_error.png +0 -0
- data/demo/doc/screenshots/bootstrap/index/02_inline_form.png +0 -0
- data/demo/doc/screenshots/bootstrap/index/03_simple_action_text_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/index/04_floating_labels.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/00_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/01_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/02_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/03_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/04_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/05_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/06_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/07_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/08_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/09_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/10_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/11_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/12_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/13_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/14_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/15_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/16_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/17_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/18_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/19_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/20_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/21_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/22_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/23_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/24_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/25_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/26_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/27_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/28_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/29_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/30_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/31_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/32_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/33_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/34_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/35_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/36_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/37_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/38_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/39_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/40_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/41_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/42_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/43_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/44_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/45_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/46_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/47_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/48_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/49_example.png +0 -0
- data/demo/doc/screenshots/bootstrap/readme/50_example.png +0 -0
- data/demo/package.json +10 -6
- data/demo/test/application_system_test_case.rb +8 -0
- data/demo/test/controllers/bootstrap_controller_test.rb +8 -0
- data/demo/test/controllers/users_controller_test.rb +13 -0
- data/demo/test/fixtures/users.yml +2 -0
- data/demo/test/system/bootstrap_test.rb +84 -0
- data/demo/test/test_helper.rb +10 -0
- data/demo/webpack.config.js +20 -0
- data/demo/yarn.lock +4063 -3144
- data/docker-compose.yml +49 -0
- data/gemfiles/5.2.gemfile +2 -15
- data/gemfiles/6.0.gemfile +2 -17
- data/gemfiles/6.1.gemfile +4 -0
- data/gemfiles/7.0.gemfile +6 -0
- data/gemfiles/edge.gemfile +2 -17
- data/lib/bootstrap_form/action_view_extensions/form_helper.rb +1 -1
- data/lib/bootstrap_form/components/hints.rb +13 -4
- data/lib/bootstrap_form/components/labels.rb +2 -2
- data/lib/bootstrap_form/components/validation.rb +1 -1
- data/lib/bootstrap_form/configuration.rb +22 -0
- data/lib/bootstrap_form/form_builder.rb +10 -12
- data/lib/bootstrap_form/form_group.rb +26 -11
- data/lib/bootstrap_form/form_group_builder.rb +6 -8
- data/lib/bootstrap_form/helpers/bootstrap.rb +17 -12
- data/lib/bootstrap_form/inputs/base.rb +5 -5
- data/lib/bootstrap_form/inputs/check_box.rb +11 -23
- data/lib/bootstrap_form/inputs/collection_check_boxes.rb +5 -1
- data/lib/bootstrap_form/inputs/collection_select.rb +2 -1
- data/lib/bootstrap_form/inputs/file_field.rb +3 -15
- data/lib/bootstrap_form/inputs/grouped_collection_select.rb +2 -1
- data/lib/bootstrap_form/inputs/radio_button.rb +17 -30
- data/lib/bootstrap_form/inputs/select.rb +1 -0
- data/lib/bootstrap_form/inputs/time_zone_select.rb +1 -0
- data/lib/bootstrap_form/version.rb +1 -1
- data/lib/bootstrap_form.rb +17 -7
- metadata +94 -16
- data/.travis.yml +0 -42
- data/demo/config/initializers/assets.rb +0 -14
- data/gemfiles/5.0.gemfile +0 -18
- data/gemfiles/5.1.gemfile +0 -17
data/RELEASING.md
CHANGED
|
@@ -6,20 +6,15 @@ Follow these steps to release a new version of bootstrap_form to rubygems.org.
|
|
|
6
6
|
|
|
7
7
|
* You must have commit rights to the bootstrap_form repository.
|
|
8
8
|
* You must have push rights for the bootstrap_form gem on rubygems.org.
|
|
9
|
-
* You must be using Ruby
|
|
10
|
-
* Your GitHub credentials must be available to Chandler via `~/.netrc` or an environment variable, [as explained here](https://github.com/mattbrictson/chandler#2-configure-credentials).
|
|
9
|
+
* You must be using a Ruby version that is not end-of-life.
|
|
11
10
|
|
|
12
11
|
## How to release
|
|
13
12
|
|
|
14
|
-
1. Run `bundle
|
|
15
|
-
2. **Ensure the tests are passing by running `bundle
|
|
13
|
+
1. Run `BUNDLE_GEMFILE=gemfiles/7.0.gemfile bundle update` to make sure that you have all the gems necessary for testing and releasing.
|
|
14
|
+
2. **Ensure the tests are passing by running `BUNDLE_GEMFILE=gemfiles/7.0.gemfile bundle update`.** (Currently this step shows a lot of warnings about method redefinitions, but otherwise everything must be green before release.)
|
|
16
15
|
3. Determine which would be the correct next version number according to [semver](http://semver.org/).
|
|
17
16
|
4. Update the version in `./lib/bootstrap_form/version.rb`.
|
|
18
|
-
5. Update the `CHANGELOG.md` (
|
|
19
|
-
* Rename the Pending Release section to `[version][] (date)` with appropriate values `version` and `date`
|
|
20
|
-
* Remove the "Your contribution here!" bullets from the release notes
|
|
21
|
-
* Add a new Pending Release section at the top of the file with a template for contributors to fill in, including "Your contribution here!" bullets
|
|
22
|
-
* Add the appropriate GitHub diff links to the footer of the document
|
|
17
|
+
5. Update the GitHub diff links at the beginning of `CHANGELOG.md` (The pattern should be obvious when you look at them).
|
|
23
18
|
6. Update the installation instructions in `README.md` to use the new version.
|
|
24
19
|
7. Commit the CHANGELOG and version changes in a single commit; the message should be "Preparing vX.Y.Z" where `X.Y.Z` is the version being released.
|
|
25
|
-
8. Run `bundle exec rake release`; this will tag, push to GitHub, publish to rubygems.org
|
|
20
|
+
8. Run `bundle exec rake release`; this will tag, push to GitHub, and publish to rubygems.org.
|
data/UPGRADE-4.0.md
CHANGED
|
@@ -33,7 +33,7 @@ One way to make the above behave the same in `bootstrap_form` v4.0 is to write i
|
|
|
33
33
|
<%= bootstrap_form_for(@user) do |f| %>
|
|
34
34
|
<%= f.form_group(:email) do %>
|
|
35
35
|
<p class="form-control-plaintext">Bar</p>
|
|
36
|
-
<%=
|
|
36
|
+
<%= tag.div(@user.errors[:email].join(", "), class: "invalid-feedback", style: "display: block;") unless @user.errors[:email].empty? %>
|
|
37
37
|
<%= end %>
|
|
38
38
|
<%= end %>
|
|
39
39
|
```
|
data/UPGRADE-5.0.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Upgrading to `bootstrap_form` 5.0
|
|
2
|
+
|
|
3
|
+
We made every effort to make the upgrade from `bootstrap_form` v4 (Bootstrap 4) to `bootstrap_form` 5.0 (Bootstrap 5) as easy as possible. However, Bootstrap 5 is fundamentally different from Bootstrap 4, so some changes may be necessary in your code.
|
|
4
|
+
|
|
5
|
+
## Bootstrap 5 Changes
|
|
6
|
+
|
|
7
|
+
Upgrading `bootstrap_form` to version 5 means you must upgrade your whole application to Bootstrap 5. Read the [Bootstrap 5 migration guide](https://v5.getbootstrap.com/docs/5.0/migration/) to see what changes you have to make to your views. This will also help you understand changes you might have to make to your `bootstrap_form` code.
|
|
8
|
+
|
|
9
|
+
## `bootstrap_form` Version 5 Changes
|
|
10
|
+
|
|
11
|
+
## No `role="form"` Attribute
|
|
12
|
+
|
|
13
|
+
As explained in #560, the `role="form"` attribute generated by `bootstrap_4` caused the W3C validator to output a warning. The `role="form"` attribute was deprecated in the 4.5.0 and is being remove completely in 5.0.0. This has no impact on `bootstrap_form` code itself, but may affect your application if it depended on a form having this attribute set. (Issue #569)
|
|
14
|
+
|
|
15
|
+
## Different behavior for `errors_on` helper
|
|
16
|
+
|
|
17
|
+
The `errors_on` helper now wraps the error message in a CSS class `invalid-feedback`, instead of `alert` and `alert-danger`, as before.
|
|
18
|
+
|
|
19
|
+
This will display the error as any other [Bootstrap inline form error](https://getbootstrap.com/docs/5.0/forms/validation/#server-side), instead of displaying it as an [Bootstrap alert](https://getbootstrap.com/docs/5.0/components/alerts/).
|
|
20
|
+
|
|
21
|
+
You can use the `custom_class` options for this helper with `alert alert-danger` to restore the old behaviour:
|
|
22
|
+
|
|
23
|
+
```erb
|
|
24
|
+
<%= f.errors_on :tasks, custom_class: 'alert alert-danger' %>
|
|
25
|
+
```
|
data/bootstrap_form.gemspec
CHANGED
|
@@ -3,6 +3,8 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
|
3
3
|
|
|
4
4
|
require "bootstrap_form/version"
|
|
5
5
|
|
|
6
|
+
REQUIRED_RAILS_VERSION = ">= 5.2".freeze
|
|
7
|
+
|
|
6
8
|
Gem::Specification.new do |s|
|
|
7
9
|
s.name = "bootstrap_form"
|
|
8
10
|
s.version = BootstrapForm::VERSION
|
|
@@ -10,10 +12,11 @@ Gem::Specification.new do |s|
|
|
|
10
12
|
s.email = ["potenza@gmail.com", "carlos.el.lopes@gmail.com"]
|
|
11
13
|
s.homepage = "https://github.com/bootstrap-ruby/bootstrap_form"
|
|
12
14
|
s.summary = "Rails form builder that makes it easy to style forms using "\
|
|
13
|
-
"Bootstrap
|
|
15
|
+
"Bootstrap 5"
|
|
14
16
|
s.description = "bootstrap_form is a rails form builder that makes it super "\
|
|
15
|
-
"easy to create beautiful-looking forms using Bootstrap
|
|
17
|
+
"easy to create beautiful-looking forms using Bootstrap 5"
|
|
16
18
|
s.license = "MIT"
|
|
19
|
+
s.metadata = { "rubygems_mfa_required" => "true" }
|
|
17
20
|
|
|
18
21
|
s.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
19
22
|
f.match(%r{^(test)/})
|
|
@@ -22,8 +25,8 @@ Gem::Specification.new do |s|
|
|
|
22
25
|
s.bindir = "exe"
|
|
23
26
|
s.require_paths = ["lib"]
|
|
24
27
|
|
|
25
|
-
s.required_ruby_version = ">= 2.
|
|
28
|
+
s.required_ruby_version = ">= 2.7"
|
|
26
29
|
|
|
27
|
-
s.add_dependency("actionpack",
|
|
28
|
-
s.add_dependency("activemodel",
|
|
30
|
+
s.add_dependency("actionpack", REQUIRED_RAILS_VERSION)
|
|
31
|
+
s.add_dependency("activemodel", REQUIRED_RAILS_VERSION)
|
|
29
32
|
end
|
data/demo/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ruby-2.7.6
|
data/demo/Gemfile
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
source "https://rubygems.org"
|
|
2
|
+
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
3
|
+
|
|
4
|
+
ruby File.read("#{__dir__}/.ruby-version").delete_prefix("ruby-").chomp
|
|
5
|
+
|
|
6
|
+
# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
|
|
7
|
+
gem "rails", "~> 7.0.0"
|
|
8
|
+
|
|
9
|
+
# The original asset pipeline for Rails [https://github.com/rails/sprockets-rails]
|
|
10
|
+
gem "sprockets-rails"
|
|
11
|
+
|
|
12
|
+
# Use sqlite3 as the database for Active Record
|
|
13
|
+
gem "sqlite3", "~> 1.4"
|
|
14
|
+
|
|
15
|
+
# Use the Puma web server [https://github.com/puma/puma]
|
|
16
|
+
gem "puma", "~> 5.0"
|
|
17
|
+
|
|
18
|
+
# Bundle and transpile JavaScript [https://github.com/rails/jsbundling-rails]
|
|
19
|
+
gem "jsbundling-rails"
|
|
20
|
+
|
|
21
|
+
# Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev]
|
|
22
|
+
gem "turbo-rails"
|
|
23
|
+
|
|
24
|
+
# Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev]
|
|
25
|
+
gem "stimulus-rails"
|
|
26
|
+
|
|
27
|
+
# Bundle and process CSS [https://github.com/rails/cssbundling-rails]
|
|
28
|
+
gem "cssbundling-rails"
|
|
29
|
+
|
|
30
|
+
# Build JSON APIs with ease [https://github.com/rails/jbuilder]
|
|
31
|
+
gem "jbuilder"
|
|
32
|
+
|
|
33
|
+
# Use Redis adapter to run Action Cable in production
|
|
34
|
+
# gem "redis", "~> 4.0"
|
|
35
|
+
|
|
36
|
+
# Use Kredis to get higher-level data types in Redis [https://github.com/rails/kredis]
|
|
37
|
+
# gem "kredis"
|
|
38
|
+
|
|
39
|
+
# Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword]
|
|
40
|
+
# gem "bcrypt", "~> 3.1.7"
|
|
41
|
+
|
|
42
|
+
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
|
43
|
+
gem "tzinfo-data", platforms: %i[mingw mswin x64_mingw jruby]
|
|
44
|
+
|
|
45
|
+
# Reduces boot times through caching; required in config/boot.rb
|
|
46
|
+
gem "bootsnap", require: false
|
|
47
|
+
|
|
48
|
+
gem "bootstrap_form", "~> 5.0"
|
|
49
|
+
|
|
50
|
+
# Needed for our demo app but not the gem itself
|
|
51
|
+
gem "htmlbeautifier"
|
|
52
|
+
|
|
53
|
+
# Use Sass to process CSS
|
|
54
|
+
gem "sassc-rails"
|
|
55
|
+
|
|
56
|
+
# Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images]
|
|
57
|
+
# gem "image_processing", "~> 1.2"
|
|
58
|
+
|
|
59
|
+
group :development, :test do
|
|
60
|
+
# See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
|
|
61
|
+
gem "debug", platforms: %i[mri mingw x64_mingw]
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
group :development do
|
|
65
|
+
# Use console on exceptions pages [https://github.com/rails/web-console]
|
|
66
|
+
gem "web-console"
|
|
67
|
+
|
|
68
|
+
# Add speed badges [https://github.com/MiniProfiler/rack-mini-profiler]
|
|
69
|
+
# gem "rack-mini-profiler"
|
|
70
|
+
|
|
71
|
+
# Speed up commands on slow machines / big apps [https://github.com/rails/spring]
|
|
72
|
+
# gem "spring"
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
group :test do
|
|
76
|
+
# Use system testing [https://guides.rubyonrails.org/testing.html#system-testing]
|
|
77
|
+
gem "capybara-screenshot-diff"
|
|
78
|
+
gem "selenium-webdriver"
|
|
79
|
+
gem "webdrivers"
|
|
80
|
+
end
|
data/demo/Gemfile.lock
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
GEM
|
|
2
|
+
remote: https://rubygems.org/
|
|
3
|
+
specs:
|
|
4
|
+
actioncable (7.0.2.4)
|
|
5
|
+
actionpack (= 7.0.2.4)
|
|
6
|
+
activesupport (= 7.0.2.4)
|
|
7
|
+
nio4r (~> 2.0)
|
|
8
|
+
websocket-driver (>= 0.6.1)
|
|
9
|
+
actionmailbox (7.0.2.4)
|
|
10
|
+
actionpack (= 7.0.2.4)
|
|
11
|
+
activejob (= 7.0.2.4)
|
|
12
|
+
activerecord (= 7.0.2.4)
|
|
13
|
+
activestorage (= 7.0.2.4)
|
|
14
|
+
activesupport (= 7.0.2.4)
|
|
15
|
+
mail (>= 2.7.1)
|
|
16
|
+
net-imap
|
|
17
|
+
net-pop
|
|
18
|
+
net-smtp
|
|
19
|
+
actionmailer (7.0.2.4)
|
|
20
|
+
actionpack (= 7.0.2.4)
|
|
21
|
+
actionview (= 7.0.2.4)
|
|
22
|
+
activejob (= 7.0.2.4)
|
|
23
|
+
activesupport (= 7.0.2.4)
|
|
24
|
+
mail (~> 2.5, >= 2.5.4)
|
|
25
|
+
net-imap
|
|
26
|
+
net-pop
|
|
27
|
+
net-smtp
|
|
28
|
+
rails-dom-testing (~> 2.0)
|
|
29
|
+
actionpack (7.0.2.4)
|
|
30
|
+
actionview (= 7.0.2.4)
|
|
31
|
+
activesupport (= 7.0.2.4)
|
|
32
|
+
rack (~> 2.0, >= 2.2.0)
|
|
33
|
+
rack-test (>= 0.6.3)
|
|
34
|
+
rails-dom-testing (~> 2.0)
|
|
35
|
+
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
|
36
|
+
actiontext (7.0.2.4)
|
|
37
|
+
actionpack (= 7.0.2.4)
|
|
38
|
+
activerecord (= 7.0.2.4)
|
|
39
|
+
activestorage (= 7.0.2.4)
|
|
40
|
+
activesupport (= 7.0.2.4)
|
|
41
|
+
globalid (>= 0.6.0)
|
|
42
|
+
nokogiri (>= 1.8.5)
|
|
43
|
+
actionview (7.0.2.4)
|
|
44
|
+
activesupport (= 7.0.2.4)
|
|
45
|
+
builder (~> 3.1)
|
|
46
|
+
erubi (~> 1.4)
|
|
47
|
+
rails-dom-testing (~> 2.0)
|
|
48
|
+
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
|
49
|
+
activejob (7.0.2.4)
|
|
50
|
+
activesupport (= 7.0.2.4)
|
|
51
|
+
globalid (>= 0.3.6)
|
|
52
|
+
activemodel (7.0.2.4)
|
|
53
|
+
activesupport (= 7.0.2.4)
|
|
54
|
+
activerecord (7.0.2.4)
|
|
55
|
+
activemodel (= 7.0.2.4)
|
|
56
|
+
activesupport (= 7.0.2.4)
|
|
57
|
+
activestorage (7.0.2.4)
|
|
58
|
+
actionpack (= 7.0.2.4)
|
|
59
|
+
activejob (= 7.0.2.4)
|
|
60
|
+
activerecord (= 7.0.2.4)
|
|
61
|
+
activesupport (= 7.0.2.4)
|
|
62
|
+
marcel (~> 1.0)
|
|
63
|
+
mini_mime (>= 1.1.0)
|
|
64
|
+
activesupport (7.0.2.4)
|
|
65
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
66
|
+
i18n (>= 1.6, < 2)
|
|
67
|
+
minitest (>= 5.1)
|
|
68
|
+
tzinfo (~> 2.0)
|
|
69
|
+
addressable (2.8.0)
|
|
70
|
+
public_suffix (>= 2.0.2, < 5.0)
|
|
71
|
+
bindex (0.8.1)
|
|
72
|
+
bootsnap (1.11.1)
|
|
73
|
+
msgpack (~> 1.2)
|
|
74
|
+
bootstrap_form (5.0.0)
|
|
75
|
+
actionpack (>= 5.2)
|
|
76
|
+
activemodel (>= 5.2)
|
|
77
|
+
builder (3.2.4)
|
|
78
|
+
capybara (3.36.0)
|
|
79
|
+
addressable
|
|
80
|
+
matrix
|
|
81
|
+
mini_mime (>= 0.1.3)
|
|
82
|
+
nokogiri (~> 1.8)
|
|
83
|
+
rack (>= 1.6.0)
|
|
84
|
+
rack-test (>= 0.6.3)
|
|
85
|
+
regexp_parser (>= 1.5, < 3.0)
|
|
86
|
+
xpath (~> 3.2)
|
|
87
|
+
capybara-screenshot-diff (1.6.1)
|
|
88
|
+
actionpack (>= 4.2, < 8)
|
|
89
|
+
capybara (>= 2, < 4)
|
|
90
|
+
chunky_png (~> 1.3)
|
|
91
|
+
childprocess (4.1.0)
|
|
92
|
+
chunky_png (1.4.0)
|
|
93
|
+
concurrent-ruby (1.1.10)
|
|
94
|
+
crass (1.0.6)
|
|
95
|
+
cssbundling-rails (1.1.0)
|
|
96
|
+
railties (>= 6.0.0)
|
|
97
|
+
debug (1.5.0)
|
|
98
|
+
irb (>= 1.3.6)
|
|
99
|
+
reline (>= 0.2.7)
|
|
100
|
+
digest (3.1.0)
|
|
101
|
+
erubi (1.10.0)
|
|
102
|
+
ffi (1.15.5)
|
|
103
|
+
globalid (1.0.0)
|
|
104
|
+
activesupport (>= 5.0)
|
|
105
|
+
htmlbeautifier (1.4.2)
|
|
106
|
+
i18n (1.10.0)
|
|
107
|
+
concurrent-ruby (~> 1.0)
|
|
108
|
+
io-console (0.5.11)
|
|
109
|
+
irb (1.4.1)
|
|
110
|
+
reline (>= 0.3.0)
|
|
111
|
+
jbuilder (2.11.5)
|
|
112
|
+
actionview (>= 5.0.0)
|
|
113
|
+
activesupport (>= 5.0.0)
|
|
114
|
+
jsbundling-rails (1.0.2)
|
|
115
|
+
railties (>= 6.0.0)
|
|
116
|
+
loofah (2.16.0)
|
|
117
|
+
crass (~> 1.0.2)
|
|
118
|
+
nokogiri (>= 1.5.9)
|
|
119
|
+
mail (2.7.1)
|
|
120
|
+
mini_mime (>= 0.1.1)
|
|
121
|
+
marcel (1.0.2)
|
|
122
|
+
matrix (0.4.2)
|
|
123
|
+
method_source (1.0.0)
|
|
124
|
+
mini_mime (1.1.2)
|
|
125
|
+
minitest (5.15.0)
|
|
126
|
+
msgpack (1.5.1)
|
|
127
|
+
net-imap (0.2.3)
|
|
128
|
+
digest
|
|
129
|
+
net-protocol
|
|
130
|
+
strscan
|
|
131
|
+
net-pop (0.1.1)
|
|
132
|
+
digest
|
|
133
|
+
net-protocol
|
|
134
|
+
timeout
|
|
135
|
+
net-protocol (0.1.3)
|
|
136
|
+
timeout
|
|
137
|
+
net-smtp (0.3.1)
|
|
138
|
+
digest
|
|
139
|
+
net-protocol
|
|
140
|
+
timeout
|
|
141
|
+
nio4r (2.5.8)
|
|
142
|
+
nokogiri (1.13.4-x86_64-darwin)
|
|
143
|
+
racc (~> 1.4)
|
|
144
|
+
nokogiri (1.13.4-x86_64-linux)
|
|
145
|
+
racc (~> 1.4)
|
|
146
|
+
public_suffix (4.0.7)
|
|
147
|
+
puma (5.6.4)
|
|
148
|
+
nio4r (~> 2.0)
|
|
149
|
+
racc (1.6.0)
|
|
150
|
+
rack (2.2.3)
|
|
151
|
+
rack-test (1.1.0)
|
|
152
|
+
rack (>= 1.0, < 3)
|
|
153
|
+
rails (7.0.2.4)
|
|
154
|
+
actioncable (= 7.0.2.4)
|
|
155
|
+
actionmailbox (= 7.0.2.4)
|
|
156
|
+
actionmailer (= 7.0.2.4)
|
|
157
|
+
actionpack (= 7.0.2.4)
|
|
158
|
+
actiontext (= 7.0.2.4)
|
|
159
|
+
actionview (= 7.0.2.4)
|
|
160
|
+
activejob (= 7.0.2.4)
|
|
161
|
+
activemodel (= 7.0.2.4)
|
|
162
|
+
activerecord (= 7.0.2.4)
|
|
163
|
+
activestorage (= 7.0.2.4)
|
|
164
|
+
activesupport (= 7.0.2.4)
|
|
165
|
+
bundler (>= 1.15.0)
|
|
166
|
+
railties (= 7.0.2.4)
|
|
167
|
+
rails-dom-testing (2.0.3)
|
|
168
|
+
activesupport (>= 4.2.0)
|
|
169
|
+
nokogiri (>= 1.6)
|
|
170
|
+
rails-html-sanitizer (1.4.2)
|
|
171
|
+
loofah (~> 2.3)
|
|
172
|
+
railties (7.0.2.4)
|
|
173
|
+
actionpack (= 7.0.2.4)
|
|
174
|
+
activesupport (= 7.0.2.4)
|
|
175
|
+
method_source
|
|
176
|
+
rake (>= 12.2)
|
|
177
|
+
thor (~> 1.0)
|
|
178
|
+
zeitwerk (~> 2.5)
|
|
179
|
+
rake (13.0.6)
|
|
180
|
+
regexp_parser (2.3.1)
|
|
181
|
+
reline (0.3.1)
|
|
182
|
+
io-console (~> 0.5)
|
|
183
|
+
rexml (3.2.5)
|
|
184
|
+
rubyzip (2.3.2)
|
|
185
|
+
sassc (2.4.0)
|
|
186
|
+
ffi (~> 1.9)
|
|
187
|
+
sassc-rails (2.1.2)
|
|
188
|
+
railties (>= 4.0.0)
|
|
189
|
+
sassc (>= 2.0)
|
|
190
|
+
sprockets (> 3.0)
|
|
191
|
+
sprockets-rails
|
|
192
|
+
tilt
|
|
193
|
+
selenium-webdriver (4.1.0)
|
|
194
|
+
childprocess (>= 0.5, < 5.0)
|
|
195
|
+
rexml (~> 3.2, >= 3.2.5)
|
|
196
|
+
rubyzip (>= 1.2.2)
|
|
197
|
+
sprockets (4.0.3)
|
|
198
|
+
concurrent-ruby (~> 1.0)
|
|
199
|
+
rack (> 1, < 3)
|
|
200
|
+
sprockets-rails (3.4.2)
|
|
201
|
+
actionpack (>= 5.2)
|
|
202
|
+
activesupport (>= 5.2)
|
|
203
|
+
sprockets (>= 3.0.0)
|
|
204
|
+
sqlite3 (1.4.2)
|
|
205
|
+
stimulus-rails (1.0.4)
|
|
206
|
+
railties (>= 6.0.0)
|
|
207
|
+
strscan (3.0.1)
|
|
208
|
+
thor (1.2.1)
|
|
209
|
+
tilt (2.0.10)
|
|
210
|
+
timeout (0.2.0)
|
|
211
|
+
turbo-rails (1.0.1)
|
|
212
|
+
actionpack (>= 6.0.0)
|
|
213
|
+
railties (>= 6.0.0)
|
|
214
|
+
tzinfo (2.0.4)
|
|
215
|
+
concurrent-ruby (~> 1.0)
|
|
216
|
+
web-console (4.2.0)
|
|
217
|
+
actionview (>= 6.0.0)
|
|
218
|
+
activemodel (>= 6.0.0)
|
|
219
|
+
bindex (>= 0.4.0)
|
|
220
|
+
railties (>= 6.0.0)
|
|
221
|
+
webdrivers (5.0.0)
|
|
222
|
+
nokogiri (~> 1.6)
|
|
223
|
+
rubyzip (>= 1.3.0)
|
|
224
|
+
selenium-webdriver (~> 4.0)
|
|
225
|
+
websocket-driver (0.7.5)
|
|
226
|
+
websocket-extensions (>= 0.1.0)
|
|
227
|
+
websocket-extensions (0.1.5)
|
|
228
|
+
xpath (3.2.0)
|
|
229
|
+
nokogiri (~> 1.8)
|
|
230
|
+
zeitwerk (2.5.4)
|
|
231
|
+
|
|
232
|
+
PLATFORMS
|
|
233
|
+
x86_64-darwin-21
|
|
234
|
+
x86_64-linux
|
|
235
|
+
|
|
236
|
+
DEPENDENCIES
|
|
237
|
+
bootsnap
|
|
238
|
+
bootstrap_form (~> 5.0)
|
|
239
|
+
capybara-screenshot-diff
|
|
240
|
+
cssbundling-rails
|
|
241
|
+
debug
|
|
242
|
+
htmlbeautifier
|
|
243
|
+
jbuilder
|
|
244
|
+
jsbundling-rails
|
|
245
|
+
puma (~> 5.0)
|
|
246
|
+
rails (~> 7.0.0)
|
|
247
|
+
sassc-rails
|
|
248
|
+
selenium-webdriver
|
|
249
|
+
sprockets-rails
|
|
250
|
+
sqlite3 (~> 1.4)
|
|
251
|
+
stimulus-rails
|
|
252
|
+
turbo-rails
|
|
253
|
+
tzinfo-data
|
|
254
|
+
web-console
|
|
255
|
+
webdrivers
|
|
256
|
+
|
|
257
|
+
RUBY VERSION
|
|
258
|
+
ruby 2.7.6p219
|
|
259
|
+
|
|
260
|
+
BUNDLED WITH
|
|
261
|
+
2.3.12
|
data/demo/Procfile.dev
ADDED
|
File without changes
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
|
|
4
|
+
* This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
|
5
|
+
* The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
|
6
|
+
* The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
|
7
|
+
* Code distributed by Google as part of the polymer project is also
|
|
8
|
+
* subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
|
9
|
+
*/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
//=
|
|
2
|
-
//=
|
|
1
|
+
//= link application.css
|
|
2
|
+
//= link_tree ../builds
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Provides a drop-in pointer for the default Trix stylesheet that will format the toolbar and
|
|
3
|
+
* the trix-editor content (whether displayed or under editing). Feel free to incorporate this
|
|
4
|
+
* inclusion directly in any other asset bundle and remove this file.
|
|
5
|
+
*
|
|
6
|
+
*= require trix
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/*
|
|
10
|
+
* We need to override trix.css’s image gallery styles to accommodate the
|
|
11
|
+
* <action-text-attachment> element we wrap around attachments. Otherwise,
|
|
12
|
+
* images in galleries will be squished by the max-width: 33%; rule.
|
|
13
|
+
*/
|
|
14
|
+
.trix-content .attachment-gallery > action-text-attachment,
|
|
15
|
+
.trix-content .attachment-gallery > .attachment {
|
|
16
|
+
flex: 1 0 33%;
|
|
17
|
+
padding: 0 0.5em;
|
|
18
|
+
max-width: 33%;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.trix-content .attachment-gallery.attachment-gallery--2 > action-text-attachment,
|
|
22
|
+
.trix-content .attachment-gallery.attachment-gallery--2 > .attachment, .trix-content .attachment-gallery.attachment-gallery--4 > action-text-attachment,
|
|
23
|
+
.trix-content .attachment-gallery.attachment-gallery--4 > .attachment {
|
|
24
|
+
flex-basis: 50%;
|
|
25
|
+
max-width: 50%;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.trix-content action-text-attachment .attachment {
|
|
29
|
+
padding: 0 !important;
|
|
30
|
+
max-width: 100% !important;
|
|
31
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@import "actiontext";
|
|
1
|
+
// @import "actiontext";
|
|
@@ -1,13 +1,28 @@
|
|
|
1
1
|
class BootstrapController < ApplicationController
|
|
2
2
|
def form
|
|
3
|
+
load_models
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
def fragment
|
|
7
|
+
@erb = params[:erb]
|
|
8
|
+
|
|
9
|
+
@erb.prepend '<div class="p-3 border">'
|
|
10
|
+
@erb << "</div>"
|
|
11
|
+
load_models
|
|
12
|
+
render inline: @erb, layout: "application" # rubocop: disable Rails/RenderInline
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def load_models
|
|
3
18
|
@collection = [
|
|
4
19
|
Address.new(id: 1, street: "Foo"),
|
|
5
20
|
Address.new(id: 2, street: "Bar")
|
|
6
21
|
]
|
|
7
22
|
|
|
8
|
-
@user = User.new
|
|
23
|
+
@user = User.new email: "steve@example.com"
|
|
9
24
|
|
|
10
|
-
@user_with_error = User.new
|
|
25
|
+
@user_with_error = User.new email: "steve.example.com"
|
|
11
26
|
@user_with_error.errors.add(:email)
|
|
12
27
|
@user_with_error.errors.add(:misc)
|
|
13
28
|
end
|
|
@@ -2,7 +2,7 @@ module BootstrapHelper
|
|
|
2
2
|
def form_with_source(&block)
|
|
3
3
|
form_html = capture(&block)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
tag.div(class: "example") do
|
|
6
6
|
concat(form_html)
|
|
7
7
|
concat(toggle)
|
|
8
8
|
concat(codemirror(form_html))
|
|
@@ -12,16 +12,16 @@ module BootstrapHelper
|
|
|
12
12
|
private
|
|
13
13
|
|
|
14
14
|
def codemirror(form_html)
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
tag.div(class: "code", style: "display: none") do
|
|
16
|
+
tag.textarea(class: "codemirror") do
|
|
17
17
|
HtmlBeautifier.beautify(form_html.strip.gsub(">", ">\n").gsub("<", "\n<"))
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def toggle
|
|
23
|
-
|
|
24
|
-
"
|
|
23
|
+
tag.button(class: "toggle btn btn-sm btn-info") do
|
|
24
|
+
"Toggle Source Code"
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
end
|
data/demo/app/models/user.rb
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
class User < ApplicationRecord
|
|
2
|
+
attr_accessor :remember_me
|
|
3
|
+
|
|
2
4
|
serialize :preferences
|
|
3
5
|
|
|
4
6
|
validates :email, presence: true, length: { minimum: 5 }
|
|
@@ -8,4 +10,16 @@ class User < ApplicationRecord
|
|
|
8
10
|
accepts_nested_attributes_for :address
|
|
9
11
|
|
|
10
12
|
has_rich_text(:life_story) if Rails::VERSION::STRING > "6"
|
|
13
|
+
|
|
14
|
+
def age
|
|
15
|
+
42
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def feet
|
|
19
|
+
5
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def inches
|
|
23
|
+
7
|
|
24
|
+
end
|
|
11
25
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<figure class="attachment attachment--<%= blob.representable? ? "preview" : "file" %> attachment--<%= blob.filename.extension %>">
|
|
2
2
|
<% if blob.representable? %>
|
|
3
|
-
<%= image_tag blob.representation(
|
|
3
|
+
<%= image_tag blob.representation(resize_to_limit: local_assigns[:in_gallery] ? [ 800, 600 ] : [ 1024, 768 ]) %>
|
|
4
4
|
<% end %>
|
|
5
5
|
|
|
6
6
|
<figcaption class="attachment__caption">
|
|
@@ -52,3 +52,16 @@
|
|
|
52
52
|
<%= form.submit %>
|
|
53
53
|
<% end %>
|
|
54
54
|
<% end %>
|
|
55
|
+
|
|
56
|
+
<h3>Floating Labels</h3>
|
|
57
|
+
|
|
58
|
+
<%= form_with_source do %>
|
|
59
|
+
<%= bootstrap_form_for @user do |form| %>
|
|
60
|
+
<%= form.email_field :email, placeholder: "Enter Email", label: "Email address", help: "We'll never share your email with anyone else", floating: true %>
|
|
61
|
+
<%= form.password_field :password, placeholder: "Password", floating: true %>
|
|
62
|
+
<%= form.text_field :misc, floating: true %>
|
|
63
|
+
<%= form.text_area :comments, floating: true %>
|
|
64
|
+
<%= form.select :status, [["Active", 1], ["Inactive", 2]], include_blank: "Select a value", floating: true %>
|
|
65
|
+
<%= form.submit %>
|
|
66
|
+
<% end %>
|
|
67
|
+
<% end %>
|