rails_bootstrap_form 0.8.3 → 0.9.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.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -1
  3. data/Gemfile.lock +1 -1
  4. data/README.md +51 -42
  5. data/demo/app/views/users/_horizontal_form.html.erb +1 -1
  6. data/demo/app/views/users/_inline_form.html.erb +1 -1
  7. data/lib/rails_bootstrap_form/bootstrap_form_builder.rb +2 -2
  8. data/lib/rails_bootstrap_form/bootstrap_form_options.rb +16 -10
  9. data/lib/rails_bootstrap_form/field_wrapper_builder.rb +2 -4
  10. data/lib/rails_bootstrap_form/helpers/buttons.rb +1 -1
  11. data/lib/rails_bootstrap_form/helpers/check_box.rb +1 -1
  12. data/lib/rails_bootstrap_form/helpers/radio_button.rb +1 -1
  13. data/lib/rails_bootstrap_form/inputs/base.rb +9 -3
  14. data/lib/rails_bootstrap_form/inputs/check_box.rb +10 -13
  15. data/lib/rails_bootstrap_form/inputs/collection_check_boxes.rb +5 -2
  16. data/lib/rails_bootstrap_form/inputs/collection_radio_buttons.rb +5 -2
  17. data/lib/rails_bootstrap_form/inputs/collection_select.rb +5 -2
  18. data/lib/rails_bootstrap_form/inputs/color_field.rb +5 -2
  19. data/lib/rails_bootstrap_form/inputs/grouped_collection_select.rb +5 -2
  20. data/lib/rails_bootstrap_form/inputs/radio_button.rb +10 -13
  21. data/lib/rails_bootstrap_form/inputs/range_field.rb +5 -2
  22. data/lib/rails_bootstrap_form/inputs/rich_text_area.rb +4 -1
  23. data/lib/rails_bootstrap_form/inputs/select.rb +5 -2
  24. data/lib/rails_bootstrap_form/inputs/static_field.rb +1 -1
  25. data/lib/rails_bootstrap_form/inputs/time_zone_select.rb +5 -2
  26. data/lib/rails_bootstrap_form/inputs/weekday_select.rb +5 -2
  27. data/lib/rails_bootstrap_form/version.rb +1 -1
  28. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 44eed939f6f6924e6ff02b2330cf0372a6efdbeb2a379b19fc8b3eb740c6dd3b
4
- data.tar.gz: b1600e611eaa19725e924b01136bddf59c385b046a744c4d7d97fb1a44d7123b
3
+ metadata.gz: 15ea5c9f97b548a1fbadb720b875c2a0a784ea6184e77b62af1191865bcef46c
4
+ data.tar.gz: 70f4b371a945958580eb8883868a799deb9b189454a1c8bf97ef263905dd0a39
5
5
  SHA512:
6
- metadata.gz: 6641be855874886a07007ac392040b8cf82b3715315d2e072f20682f372df948fdfa66fe106075a928cb550fdfe7aba678f5d7135ad3993da8785c67642f99e9
7
- data.tar.gz: 303a8dc7b296790fab32aa5079a57f0e782898e1c4c2e53da450bb21020bf424c949a6432a77374fc7cfabf8d2ad43679ce50ad24ecfb2a3091239e4f02659c1
6
+ metadata.gz: 82b6509a781a1acd0ac837b1bd51900a2fa023bc1a55870905c25509fc48d674d1ee164ca309c8cf8446dae4364f815bf639ecab14b4c205c60cca0edd2e0a4b
7
+ data.tar.gz: f2e4dd5bcd9a4f0f4aa5763d22bc9003118b8f8ad3e56f56c16dc30defd86ea95d877d6b0fdeaca54ffc11eeb32358bf3dd5a388c7165e966c4d9f366d709fef
data/CHANGELOG.md CHANGED
@@ -4,11 +4,22 @@ You can find recent releases with docs in GitHub:
4
4
 
5
5
  https://github.com/shivam091/rails_bootstrap_form/releases
6
6
 
7
+ ## [0.9.0](https://github.com/shivam091/rails_bootstrap_form/compare/v0.8.3...v0.9.0) - 2023-05-31
8
+
9
+ ### What's new
10
+
11
+ - Added `disabled` option to allow user to render default Rails form builder element.
12
+
13
+ ### BREAKING CHANGES
14
+
15
+ - Renamed `wrapper_options` option to `wrapper`
16
+ - Renamed `bootstrap_form` option to `bootstrap`
17
+
7
18
  ## [0.8.3](https://github.com/shivam091/rails_bootstrap_form/compare/v0.8.2...v0.8.3) - 2023-05-29
8
19
 
9
20
  ### What's new
10
21
 
11
- - Added support to specify `bootstrap_form` option on `fields_for` helper
22
+ - Added support to specify `bootstrap` option on `fields_for` helper ([#30](https://github.com/shivam091/rails_bootstrap_form/issues/30))
12
23
 
13
24
  ## [0.8.2](https://github.com/shivam091/rails_bootstrap_form/compare/v0.8.1...v0.8.2) - 2023-05-28
14
25
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rails_bootstrap_form (0.8.3)
4
+ rails_bootstrap_form (0.9.0)
5
5
  actionpack (~> 7.0)
6
6
  activemodel (~> 7.0)
7
7
 
data/README.md CHANGED
@@ -150,10 +150,11 @@ This generates the following HTML:
150
150
 
151
151
  ## Bootstrap Configuration Options
152
152
 
153
- Here's a list of all possible options you can pass via `bootstrap_form` option that can be attached to the `bootstrap_form_for` or `bootstrap_form_with` or any field helpers inside of it:
153
+ Here's a list of all possible options you can pass via `bootstrap` option that can be attached to the `bootstrap_form_for` or `bootstrap_form_with` or any field helpers inside of it:
154
154
 
155
155
  | Option | Description | Default value |
156
156
  | ------ | ------------- | ----------- |
157
+ | `disabled` | An option to disable **rails_bootstrap_form** helpers. Default rails form builder element is rendered when set to `true` | `false` |
157
158
  | `layout` | Controls layout of form and field helpers. It can be `vertical` `horizontal`, or `inline`. | `vertical` |
158
159
  | `field_class` | A CSS class that will be applied to all form fields. | `form-control` |
159
160
  | `additional_field_class` | An additional CSS class that will be added along with the existing css classes of field helpers. | `nil` |
@@ -170,7 +171,7 @@ Here's a list of all possible options you can pass via `bootstrap_form` option t
170
171
  | `floating` | An option to control whether the field should have a floating label. | `false` |
171
172
  | `static_field_class` | A CSS class that will be applied to all static fields. | `form-control-plaintext` |
172
173
  | `switch` | An option to control whether the check box should look like Bootstrap switches. | `false` |
173
- | `wrapper_options` | An option to control the HTML attributes and options that will be added to a field wrapper. | `{}` |
174
+ | `wrapper` | An option to control the HTML attributes and options that will be added to a field wrapper. | `{}` |
174
175
  | `size` | An option to control the size of input groups, buttons, labels, and fields. It can be `sm` or `lg`. | `nil` |
175
176
  | `inline` | An option to group checkboxes and radio buttons on the same horizontal row. | `false` |
176
177
  | `label_col_class` | A CSS class that will be applied to all labels when layout is `horizontal`. | `col-form-label` |
@@ -187,7 +188,7 @@ Here's an example of a form where one field uses different layout:
187
188
  <%= bootstrap_form_for @user do |form| %>
188
189
  <%= form.text_field :name %>
189
190
  <%= form.email_field :email %>
190
- <%= form.password_field :password, bootstrap_form: {layout: :horizontal} %>
191
+ <%= form.password_field :password, bootstrap: {layout: :horizontal} %>
191
192
  <%= form.check_box :terms, required: true %>
192
193
  <%= form.primary "Register" %>
193
194
  <% end %>
@@ -221,6 +222,14 @@ This generates the following HTML:
221
222
  </form>
222
223
  ```
223
224
 
225
+ ### Disabling Bootstrap
226
+
227
+ You can completely disable bootstrap and use default form builder by passing `disabled: true` option. For example:
228
+
229
+ ```erb
230
+ <%= form.text_field :username, bootstrap: {disabled: true} %>
231
+ ```
232
+
224
233
  ## Supported Form Helpers
225
234
 
226
235
  This gem wraps most of the form field helpers. Here's the current list:
@@ -284,7 +293,7 @@ Here's an example of how it looks like by default:
284
293
  ![horizontal_layout](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/71493945-31d5-4917-83c2-8cb7b0825371)
285
294
 
286
295
  ```erb
287
- <%= bootstrap_form_for @user, bootstrap_form: {layout: :horizontal} do |form| %>
296
+ <%= bootstrap_form_for @user, bootstrap: {layout: :horizontal} do |form| %>
288
297
  <%= form.email_field :email %>
289
298
  <%= form.password_field :password %>
290
299
  <%= form.primary "Sign in" %>
@@ -315,9 +324,9 @@ The `label_col_wrapper_class` and `field_col_wrapper_class` css classes can also
315
324
  ![horizontal_form_custom_classes](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/ae5492f0-4a10-4f63-ae4d-9675bfb93226)
316
325
 
317
326
  ```erb
318
- <%= bootstrap_form_for @user, bootstrap_form: {layout: :horizontal} do |form| %>
327
+ <%= bootstrap_form_for @user, bootstrap: {layout: :horizontal} do |form| %>
319
328
  <%= form.text_field :name %>
320
- <%= form.email_field :username, bootstrap_form: {label_col_wrapper_class: "col-sm-2", field_col_wrapper_class: "col-sm-6"} %>
329
+ <%= form.email_field :username, bootstrap: {label_col_wrapper_class: "col-sm-2", field_col_wrapper_class: "col-sm-6"} %>
321
330
  <%= form.password_field :password %>
322
331
  <%= form.fields_for :address, include_id: false do |address_form| %>
323
332
  <%= address_form.select :country_id, options_for_select(::Country.pluck(:name, :id), address_form.object.country_id),
@@ -374,7 +383,7 @@ Here's an example of how it looks like:
374
383
  ![inline_layout](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/644a08ec-b249-4e1c-8d61-5350e6649f11)
375
384
 
376
385
  ```erb
377
- <%= bootstrap_form_for @user, bootstrap_form: {layout: :inline} do |form| %>
386
+ <%= bootstrap_form_for @user, bootstrap: {layout: :inline} do |form| %>
378
387
  <%= form.email_field :email %>
379
388
  <%= form.password_field :password %>
380
389
  <%= form.primary "Sign in" %>
@@ -411,7 +420,7 @@ generated by the Rails.
411
420
  ![label_text](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/b6378a06-c8e0-4944-8e0c-940a25964062)
412
421
 
413
422
  ```erb
414
- <%= form.password_field :password, bootstrap_form: {label_text: "New password"} %>
423
+ <%= form.password_field :password, bootstrap: {label_text: "New password"} %>
415
424
  ```
416
425
 
417
426
  This generates the following HTML:
@@ -429,7 +438,7 @@ to those using screen readers.
429
438
  ![hide_label](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/512a16b9-6829-40a2-bf07-f087970c9dac)
430
439
 
431
440
  ```erb
432
- <%= form.password_field :password, bootstrap_form: {hide_label: true} %>
441
+ <%= form.password_field :password, bootstrap: {hide_label: true} %>
433
442
  ```
434
443
 
435
444
  This generates the following HTML:
@@ -446,7 +455,7 @@ To skip a label, you can set `skip_label` option to `true`. This will not render
446
455
  ![skip_label](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/251e28ac-b98b-4e6a-8d55-8c0cb061e65a)
447
456
 
448
457
  ```erb
449
- <%= form.password_field :password, bootstrap_form: {skip_label: true} %>
458
+ <%= form.password_field :password, bootstrap: {skip_label: true} %>
450
459
  ```
451
460
 
452
461
  This generates the following HTML:
@@ -462,7 +471,7 @@ To add additional CSS class to the label, you can use `additional_label_class` o
462
471
  ![additional_label_class](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/b5ab4efe-2512-4ee4-9d35-99d3b7f78171)
463
472
 
464
473
  ```erb
465
- <%= form.password_field :password, bootstrap_form: {additional_label_class: "text-danger"} %>
474
+ <%= form.password_field :password, bootstrap: {additional_label_class: "text-danger"} %>
466
475
  ```
467
476
 
468
477
  This generates the following HTML:
@@ -508,7 +517,7 @@ You can customize the help text using `help_text` option:
508
517
  ![help_text](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/cdfe0e3c-6fcd-45a4-9621-9f0341925a1c)
509
518
 
510
519
  ```erb
511
- <%= form.password_field :password, bootstrap_form: {help_text: "Password should not be disclosed to anyone."} %>
520
+ <%= form.password_field :password, bootstrap: {help_text: "Password should not be disclosed to anyone."} %>
512
521
  ```
513
522
 
514
523
  This generates the following HTML:
@@ -547,7 +556,7 @@ You can use `prepend` and/or `append` options to attach addons to input fields:
547
556
  ![input_group_addon](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/e7fb8f52-558d-458d-a112-2ee3bab366db)
548
557
 
549
558
  ```erb
550
- <%= form.number_field :expected_ctc, bootstrap_form: {prepend: "₹", append: ".00"} %>
559
+ <%= form.number_field :expected_ctc, bootstrap: {prepend: "₹", append: ".00"} %>
551
560
  ```
552
561
 
553
562
  This generates the following HTML:
@@ -568,7 +577,7 @@ If you want to attach multiple addons to the input, pass them as an array:
568
577
  ![input_group_multiple_addons](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/8a6179c2-0def-428a-8429-c97db2c4a567)
569
578
 
570
579
  ```erb
571
- <%= form.number_field :expected_ctc, bootstrap_form: {prepend: ["Gross", "₹"], append: [".00", "per annum"]} %>
580
+ <%= form.number_field :expected_ctc, bootstrap: {prepend: ["Gross", "₹"], append: [".00", "per annum"]} %>
572
581
  ```
573
582
 
574
583
  This generates the following HTML:
@@ -591,7 +600,7 @@ You can also prepend and append buttons. Note that these buttons must contain th
591
600
  ![input_group_button](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/f0d1e22a-ca2b-42da-b99c-f3e7003d8c27)
592
601
 
593
602
  ```erb
594
- <%= form.text_field :search, bootstrap_form: {append: form.secondary("Search")} %>
603
+ <%= form.text_field :search, bootstrap: {append: form.secondary("Search")} %>
595
604
  ```
596
605
 
597
606
  This generates the following HTML:
@@ -611,7 +620,7 @@ To add additional CSS class to the input group wrapper, you can use `additional_
611
620
  ![additional_input_group_class](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/1814ec85-1efe-4ffc-ba87-c171d1b73e2c)
612
621
 
613
622
  ```erb
614
- <%= form.number_field :expected_ctc, bootstrap_form: {prepend: "₹", append: ".00", additional_input_group_class: "custom-class"} %>
623
+ <%= form.number_field :expected_ctc, bootstrap: {prepend: "₹", append: ".00", additional_input_group_class: "custom-class"} %>
615
624
  ```
616
625
 
617
626
  This generates the following HTML:
@@ -632,7 +641,7 @@ You can customize size of the input group using `size` option. Input group suppo
632
641
  ![input_group_size](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/b7236bd6-4dad-4142-b14e-f6325a612958)
633
642
 
634
643
  ```erb
635
- <%= form.number_field :expected_ctc, bootstrap_form: {prepend: "₹", append: ".00", size: :sm} %>
644
+ <%= form.number_field :expected_ctc, bootstrap: {prepend: "₹", append: ".00", size: :sm} %>
636
645
  ```
637
646
 
638
647
  This generates the following HTML:
@@ -651,7 +660,7 @@ This generates the following HTML:
651
660
  ## Form Helpers
652
661
 
653
662
  Our form helpers accept the same arguments as the default Rails form helpers.
654
- In order to apply addition options of `rails_bootstrap_form`, `bootstrap_form` object is passed in `options` argument of the helper.
663
+ In order to apply addition options of `rails_bootstrap_form`, `bootstrap` object is passed in `options` argument of the helper.
655
664
  Here's an example of how you pass the arguments for each form helper:
656
665
 
657
666
  ### check_box
@@ -680,7 +689,7 @@ You can set `switch` option to `true` if you want check box to look like switche
680
689
  ![check_box_switch](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/20c493ce-7f2c-4ac9-a854-e1520cae6a54)
681
690
 
682
691
  ```erb
683
- <%= form.check_box :remember_me, bootstrap_form: {switch: true} %>
692
+ <%= form.check_box :remember_me, bootstrap: {switch: true} %>
684
693
  ```
685
694
 
686
695
  This generates the following HTML:
@@ -811,16 +820,16 @@ This generates the following HTML:
811
820
 
812
821
  Our `fields_for` helper accepts the same arguments as the [default Rails helper](https://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for).
813
822
 
814
- `rails_bootstrap_form` allows us to set `bootstrap_form` option just like `bootstrap_form_for` and `bootstrap_form_with`. By setting this option on fields_for, it applies to all the fields defined for that form:
823
+ `rails_bootstrap_form` allows us to set `bootstrap` option just like `bootstrap_form_for` and `bootstrap_form_with`. By setting this option on fields_for, it applies to all the fields defined for that form:
815
824
 
816
825
  ![fields_for](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/f515302f-a92a-4b5c-a444-af91cbb00dff)
817
826
 
818
827
  ```erb
819
828
  <%= bootstrap_form_for @user do |form| %>
820
829
  <%= form.email_field :email, autocomplete: "new-email" %>
821
- <%= form.password_field :password, autocomplete: "new-password", bootstrap_form: {layout: :horizontal} %>
830
+ <%= form.password_field :password, autocomplete: "new-password", bootstrap: {layout: :horizontal} %>
822
831
  <%= form.phone_field :mobile_number %>
823
- <%= form.fields_for :address, include_id: false, bootstrap_form: {layout: :horizontal} do |address_form| %>
832
+ <%= form.fields_for :address, include_id: false, bootstrap: {layout: :horizontal} do |address_form| %>
824
833
  <%= address_form.select :country_id, options_for_select(::Country.pluck(:name, :id), address_form.object.country_id),
825
834
  {include_blank: "Select Country"} %>
826
835
  <% end %>
@@ -874,12 +883,12 @@ This generates the following HTML:
874
883
  </form>
875
884
  ```
876
885
 
877
- By setting `bootstrap_form` option on `bootstrap_form_for` or `bootstrap_form_with`, this option also applies to all the fields defined in fields_for block:
886
+ By setting `bootstrap` option on `bootstrap_form_for` or `bootstrap_form_with`, this option also applies to all the fields defined in fields_for block:
878
887
 
879
888
  ![fields_for_horizontal](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/cb75e76b-e8a3-48f1-83a1-9eb150aa2466)
880
889
 
881
890
  ```erb
882
- <%= bootstrap_form_for @user, bootstrap_form: {layout: :horizontal} do |form| %>
891
+ <%= bootstrap_form_for @user, bootstrap: {layout: :horizontal} do |form| %>
883
892
  <%= form.email_field :email, autocomplete: "new-email" %>
884
893
  <%= form.password_field :password, autocomplete: "new-password" %>
885
894
  <%= form.phone_field :mobile_number %>
@@ -1051,7 +1060,7 @@ This helper will render check box and label for you.
1051
1060
  ![radio_button](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/9afa4065-6eea-44a6-a5be-d2936d1d2f9c)
1052
1061
 
1053
1062
  ```erb
1054
- <%= form.radio_button :gender, :male, bootstrap_form: {label_text: "Male"} %>
1063
+ <%= form.radio_button :gender, :male, bootstrap: {label_text: "Male"} %>
1055
1064
  ```
1056
1065
 
1057
1066
  This generates the following HTML:
@@ -1068,7 +1077,7 @@ This helper also renders help text if `help_text` option is set or information o
1068
1077
  ![radio_button_help_text](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/2409e822-c1bd-499b-b80f-e2948acf3403)
1069
1078
 
1070
1079
  ```erb
1071
- <%= form.radio_button :gender, :male, bootstrap_form: {label_text: "Male", help_text: "Please select your gender"} %>
1080
+ <%= form.radio_button :gender, :male, bootstrap: {label_text: "Male", help_text: "Please select your gender"} %>
1072
1081
  ```
1073
1082
 
1074
1083
  This generates the following HTML:
@@ -1236,7 +1245,7 @@ This generates the following HTML:
1236
1245
  ## Form Options Helpers
1237
1246
 
1238
1247
  Our form options helpers accept the same arguments as the default Rails form options helpers.
1239
- In order to apply addition options of `rails_bootstrap_form`, `bootstrap_form` object is passed in `options` argument of the helper.
1248
+ In order to apply addition options of `rails_bootstrap_form`, `bootstrap` object is passed in `options` argument of the helper.
1240
1249
  Here's an example of how you pass the arguments for each form option helper:
1241
1250
 
1242
1251
  ### select
@@ -1247,7 +1256,7 @@ Here's an example of how you pass both options and html_options hashes:
1247
1256
  ![select](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/e21f092c-d439-4817-bba1-8ec0c21330c1)
1248
1257
 
1249
1258
  ```erb
1250
- <%= form.select :fruit_id, options_for_select(::Fruit.pluck(:name, :id), form.object.fruit_id), {include_blank: "Select fruit", bootstrap_form: {size: :sm, help_text: false}}, {onchange: "this.form.submit();"} %>
1259
+ <%= form.select :fruit_id, options_for_select(::Fruit.pluck(:name, :id), form.object.fruit_id), {include_blank: "Select fruit", bootstrap: {size: :sm, help_text: false}}, {onchange: "this.form.submit();"} %>
1251
1260
  ```
1252
1261
 
1253
1262
  This generates the following HTML:
@@ -1273,7 +1282,7 @@ Here's an example of how you pass both options and html_options hashes:
1273
1282
  ![collection_select](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/c3a24265-81a9-4d1b-aa01-2b066d2f8bc7)
1274
1283
 
1275
1284
  ```erb
1276
- <%= form.collection_select :fruit_id, ::Fruit.all, :id, :name, {include_blank: "Select fruit", bootstrap_form: {help_text: false}}, {selected: form.object.fruit_id, onchange: "this.form.submit();"} %>
1285
+ <%= form.collection_select :fruit_id, ::Fruit.all, :id, :name, {include_blank: "Select fruit", bootstrap: {help_text: false}}, {selected: form.object.fruit_id, onchange: "this.form.submit();"} %>
1277
1286
  ```
1278
1287
 
1279
1288
  This generates the following HTML:
@@ -1299,7 +1308,7 @@ Here's an example of how you pass both options and html_options hashes:
1299
1308
  ![grouped_collection_select](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/d8f90065-3aa8-4d52-9c3e-0486324b3624)
1300
1309
 
1301
1310
  ```erb
1302
- <%= form.grouped_collection_select :city, ::Country.includes(:cities), :cities, :name, :id, :name, {include_blank: "Select city", bootstrap_form: {floating: true}}, {onchange: "this.form.submit();"} %>
1311
+ <%= form.grouped_collection_select :city, ::Country.includes(:cities), :cities, :name, :id, :name, {include_blank: "Select city", bootstrap: {floating: true}}, {onchange: "this.form.submit();"} %>
1303
1312
  ```
1304
1313
 
1305
1314
  This generates the following HTML:
@@ -1343,7 +1352,7 @@ Here's an example of how you pass both options and html_options hashes:
1343
1352
  ![time_zone_select](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/e161585c-1bbf-485c-9baf-c57b15258fe8)
1344
1353
 
1345
1354
  ```erb
1346
- <%= form.time_zone_select :timezone, ::ActiveSupport::TimeZone.all, {include_blank: "Select time zone", bootstrap_form: {label_text: "Preferred time zone"}}, {onchange: "this.form.submit();"} %>
1355
+ <%= form.time_zone_select :timezone, ::ActiveSupport::TimeZone.all, {include_blank: "Select time zone", bootstrap: {label_text: "Preferred time zone"}}, {onchange: "this.form.submit();"} %>
1347
1356
  ```
1348
1357
 
1349
1358
  This generates the following HTML:
@@ -1375,7 +1384,7 @@ Here's an example of how you pass both options and html_options hashes:
1375
1384
  ![weekday_select](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/e469a57d-3d22-4c9e-829b-4ba825593ae1)
1376
1385
 
1377
1386
  ```erb
1378
- <%= form.weekday_select :weekly_off, {selected: "Monday", bootstrap_form: {label_text: "Week off"}}, {onchange: "this.form.submit();} %>
1387
+ <%= form.weekday_select :weekly_off, {selected: "Monday", bootstrap: {label_text: "Week off"}}, {onchange: "this.form.submit();"} %>
1379
1388
  ```
1380
1389
 
1381
1390
  This generates the following HTML:
@@ -1403,7 +1412,7 @@ an argument and takes care of rendering labels, check boxes, and wrapper for you
1403
1412
  ![collection_check_boxes](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/c92f5921-e572-4384-812e-31308e018f66)
1404
1413
 
1405
1414
  ```erb
1406
- <%= form.collection_check_boxes :skill_ids, ::Skill.all, :id, :name, {bootstrap_form: {layout: :horizontal}, onchange: "this.form.submit();"}, {} %>
1415
+ <%= form.collection_check_boxes :skill_ids, ::Skill.all, :id, :name, {bootstrap: {layout: :horizontal}, onchange: "this.form.submit();"}, {} %>
1407
1416
  ```
1408
1417
 
1409
1418
  This generates the following HTML:
@@ -1468,7 +1477,7 @@ an argument and takes care of rendering labels, radio button, and wrapper for yo
1468
1477
  ![collection_radio_buttons](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/798a8b0c-915a-40b1-9874-dd74f50d3695)
1469
1478
 
1470
1479
  ```erb
1471
- <%= form.collection_radio_buttons :fruit_id, ::Fruit.all, :id, :name, {checked: form.object.fruit_id, bootstrap_form: {layout: :horizontal}}, {} %>
1480
+ <%= form.collection_radio_buttons :fruit_id, ::Fruit.all, :id, :name, {checked: form.object.fruit_id, bootstrap: {layout: :horizontal}}, {} %>
1472
1481
  ```
1473
1482
 
1474
1483
  This generates the following HTML:
@@ -1504,7 +1513,7 @@ This generates the following HTML:
1504
1513
 
1505
1514
  The multiple selects that the date and time helpers (`date_select`, `time_select`, `datetime_select`) generate are wrapped inside a `fieldset.rails-bootstrap-forms-[date|time|datetime]-select` tag.
1506
1515
  This is because Bootstrap automatically styles our controls as blocks. This wrapper fixes this defining these selects as `inline-block` and a width of `auto`.
1507
- In order to apply addition options of `rails_bootstrap_form`, `bootstrap_form` object is passed in `options` argument of the helper.
1516
+ In order to apply addition options of `rails_bootstrap_form`, `bootstrap` object is passed in `options` argument of the helper.
1508
1517
 
1509
1518
  ### date_select
1510
1519
 
@@ -1514,7 +1523,7 @@ Here's an example of how you pass both options and html_options hashes:
1514
1523
  ![date_select](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/45fe5d72-43da-498e-a1c2-ac6729446bba)
1515
1524
 
1516
1525
  ```erb
1517
- <%= form.date_select :interview_date, {selected: form.object.interview_date, bootstrap_form: {label_text: "Choose interview date"}}, {onchange: "this.form.submit();"} %>
1526
+ <%= form.date_select :interview_date, {selected: form.object.interview_date, bootstrap: {label_text: "Choose interview date"}}, {onchange: "this.form.submit();"} %>
1518
1527
  ```
1519
1528
 
1520
1529
  This generates the following HTML:
@@ -1566,7 +1575,7 @@ Here's an example of how you pass both options and html_options hashes:
1566
1575
  ![time_select](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/2195922c-c7cc-48dc-9912-3ef3cbb8e017)
1567
1576
 
1568
1577
  ```erb
1569
- <%= form.time_select :interview_time, {selected: form.object.interview_time, bootstrap_form: {label_text: "Choose interview time"}}, {onchange: "this.form.submit();"} %>
1578
+ <%= form.time_select :interview_time, {selected: form.object.interview_time, bootstrap: {label_text: "Choose interview time"}}, {onchange: "this.form.submit();"} %>
1570
1579
  ```
1571
1580
 
1572
1581
  This generates the following HTML:
@@ -1610,7 +1619,7 @@ Here's an example of how you pass both options and html_options hashes:
1610
1619
  ![datetime_select](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/c0e0cd83-d44a-4308-bfa9-e25a2a488d66)
1611
1620
 
1612
1621
  ```erb
1613
- <%= form.datetime_select :interview_datetime, {selected: form.object.interview_datetime, bootstrap_form: {label_text: "Choose interview date & time"}}, {onchange: "this.form.submit();"} %>
1622
+ <%= form.datetime_select :interview_datetime, {selected: form.object.interview_datetime, bootstrap: {label_text: "Choose interview date & time"}}, {onchange: "this.form.submit();"} %>
1614
1623
  ```
1615
1624
 
1616
1625
  This generates the following HTML:
@@ -1710,7 +1719,7 @@ To render submit helper as a button helper, you can set `render_as_button` optio
1710
1719
  ![render_as_button](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/dffd72d8-3acf-4029-be04-3bf7776e8d9c)
1711
1720
 
1712
1721
  ```erb
1713
- <%= form.primary "Register", bootstrap_form: {render_as_button: true} %>
1722
+ <%= form.primary "Register", bootstrap: {render_as_button: true} %>
1714
1723
  <%= form.secondary do %>
1715
1724
  Sign in
1716
1725
  <% end %>
@@ -1755,7 +1764,7 @@ The `floating` option can be used to enable Bootstrap floating labels. This opti
1755
1764
  ![floating_labels](https://github.com/shivam091/rails_bootstrap_form/assets/7858927/3976629d-4717-47b0-ab91-9a16e6c9ed5f)
1756
1765
 
1757
1766
  ```erb
1758
- <%= bootstrap_form_for @user, bootstrap_form: {floating: true} do |form| %>
1767
+ <%= bootstrap_form_for @user, bootstrap: {floating: true} do |form| %>
1759
1768
  <%= form.text_field :name %>
1760
1769
  <%= form.email_field :username %>
1761
1770
  <%= form.password_field :password %>
@@ -1928,13 +1937,13 @@ Some third party plug-ins require an empty but visible label on an input control
1928
1937
  The solution is to use a zero-width character for the label, or some other "empty" HTML. For example:
1929
1938
 
1930
1939
  ```erb
1931
- bootstrap_form: {label_text: "&#8203;".html_safe}
1940
+ bootstrap: {label_text: "&#8203;".html_safe}
1932
1941
  ```
1933
1942
 
1934
1943
  or
1935
1944
 
1936
1945
  ```erb
1937
- bootstrap_form: {label_text: "<span></span>".html_safe}
1946
+ bootstrap: {label_text: "<span></span>".html_safe}
1938
1947
  ```
1939
1948
 
1940
1949
  ## Contributing
@@ -3,7 +3,7 @@
3
3
  Horizontal layout
4
4
  </div>
5
5
  <div class="card-body">
6
- <%= bootstrap_form_for @user, bootstrap_form: {layout: :horizontal} do |form| %>
6
+ <%= bootstrap_form_for @user, bootstrap: {layout: :horizontal} do |form| %>
7
7
  <%= form.text_field :name, autocomplete: "new-name" %>
8
8
  <%= form.text_field :username, autocomplete: "new-username" %>
9
9
  <%= form.email_field :email, autocomplete: "new-email" %>
@@ -3,7 +3,7 @@
3
3
  Inline layout
4
4
  </div>
5
5
  <div class="card-body">
6
- <%= bootstrap_form_for @user, bootstrap_form: {layout: :inline} do |form| %>
6
+ <%= bootstrap_form_for @user, bootstrap: {layout: :inline} do |form| %>
7
7
  <%= form.text_field :username, autocomplete: "new-username" %>
8
8
  <%= form.password_field :password, autocomplete: "new-password" %>
9
9
  <%= form.check_box :remember_me %>
@@ -15,7 +15,7 @@ module RailsBootstrapForm
15
15
  attr_accessor :bootstrap_form_options
16
16
 
17
17
  def initialize(object_name, object, template, options)
18
- @bootstrap_form_options = RailsBootstrapForm::BootstrapFormOptions.new(options[:bootstrap_form])
18
+ @bootstrap_form_options = RailsBootstrapForm::BootstrapFormOptions.new(options[:bootstrap])
19
19
  apply_default_form_options(options)
20
20
  apply_default_form_classes(options)
21
21
  super(object_name, object, template, options)
@@ -42,7 +42,7 @@ module RailsBootstrapForm
42
42
 
43
43
  def fields_for_options(record_object, fields_options)
44
44
  fields_options = record_object if record_object.is_a?(Hash) && record_object.extractable_options?
45
- bootstrap_options = {bootstrap_form: options.fetch(:bootstrap_form, {})}
45
+ bootstrap_options = {bootstrap: options.fetch(:bootstrap, {})}
46
46
  fields_options = bootstrap_options.deep_merge!(fields_options)
47
47
  fields_options
48
48
  end
@@ -6,16 +6,20 @@ module RailsBootstrapForm
6
6
  # Container for bootstrap specific form builder options. It controls options
7
7
  # that define form layout, grid sizing, and few other configurable options.
8
8
  # They are passed-in into form builder helper and field helpers via
9
- # `:bootstrap_form` option.
9
+ # `:bootstrap` option.
10
10
  #
11
11
  # For example:
12
12
  #
13
- # bootstrap_form_with model: @user, bootstrap_form: {layout: :inline} do |f|
14
- # f.text_field :email, bootstrap_form: {label: {text: "Your email"}}
13
+ # bootstrap_form_with model: @user, bootstrap: {layout: :inline} do |f|
14
+ # f.text_field :email, bootstrap: {label: {text: "Your email"}}
15
15
  # end
16
16
  #
17
17
  class BootstrapFormOptions
18
18
 
19
+ # Controls whether to render default Rails form builder element.
20
+ # The default value is `false`.
21
+ attr_accessor :disabled
22
+
19
23
  # Controls layout of form and field helpers. It can be "vertical,
20
24
  # "horizontal", or "inline". The default value is `vertical`.
21
25
  attr_accessor :layout
@@ -64,8 +68,8 @@ module RailsBootstrapForm
64
68
  #
65
69
  # Example:
66
70
  #
67
- # form.text_field :dollars, bootstrap_form: {input_group: {prepend: "$", append: ".00"}}
68
- # form.text_field :search, bootstrap_form: {input_group: {append: button_tag("Go", type: :submit, class: "btn btn-secondary")}}
71
+ # form.text_field :dollars, bootstrap: {input_group: {prepend: "$", append: ".00"}}
72
+ # form.text_field :search, bootstrap: {input_group: {append: button_tag("Go", type: :submit, class: "btn btn-secondary")}}
69
73
  #
70
74
  # Raw or HTML content to be prepended to the field.
71
75
  # The default value is `nil`.
@@ -93,7 +97,7 @@ module RailsBootstrapForm
93
97
 
94
98
  # An option to control the HTML attributes and options that will be added to
95
99
  # the field wrapper. The default value is `{}`.
96
- attr_accessor :wrapper_options
100
+ attr_accessor :wrapper
97
101
 
98
102
  # An option to control the size of input groups, buttons, labels, and fields.
99
103
  # The valid values are `sm` and `lg`. The default value is `nil`.
@@ -103,7 +107,7 @@ module RailsBootstrapForm
103
107
  # The default value is `false`.
104
108
  #
105
109
  # Example:
106
- # form.collection_radio_buttons :choices, ["yes", "no"], :to_s, :to_s, bootstrap_form: {inline: true}
110
+ # form.collection_radio_buttons :choices, ["yes", "no"], :to_s, :to_s, bootstrap: {inline: true}
107
111
  attr_accessor :inline
108
112
 
109
113
  # A CSS class that will be applied to all labels when layout is horizontal.
@@ -145,7 +149,7 @@ module RailsBootstrapForm
145
149
  # to a given form field. For example, we can change grid just for one field:
146
150
  #
147
151
  # bootstrap_form_with model: @user do |f|
148
- # f.text_field :email, bootstrap_form: {label_col_wrapper_class: "col-md-6", field_col_wrapper_class: "col-md-6"}
152
+ # f.text_field :email, bootstrap: {label_col_wrapper_class: "col-md-6", field_col_wrapper_class: "col-md-6"}
149
153
  # f.password_field :password
150
154
  # end
151
155
  #
@@ -161,11 +165,13 @@ module RailsBootstrapForm
161
165
  end
162
166
  end
163
167
 
164
- %i(inline floating switch skip_label hide_label render_as_button).each do |method|
168
+ %i(disabled inline floating switch skip_label hide_label render_as_button).each do |method|
165
169
  define_method("#{method}?") { self.send(method) }
166
170
  end
167
171
 
168
172
  def set_defaults
173
+ @disabled = false
174
+
169
175
  @layout = "vertical"
170
176
 
171
177
  @field_class = "form-control"
@@ -190,7 +196,7 @@ module RailsBootstrapForm
190
196
 
191
197
  @switch = false
192
198
 
193
- @wrapper_options = {}
199
+ @wrapper = {}
194
200
 
195
201
  @size = nil
196
202
 
@@ -4,9 +4,7 @@
4
4
 
5
5
  module RailsBootstrapForm
6
6
  module FieldWrapperBuilder
7
- def field_wrapper_builder(attribute, options, html_options = nil, &block)
8
- bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap_form))
9
-
7
+ def field_wrapper_builder(attribute, bootstrap_options, options, html_options = nil, &block)
10
8
  field_options = field_css_options(attribute, bootstrap_options, options, html_options.try(:symbolize_keys!))
11
9
 
12
10
  field_wrapper(attribute, bootstrap_options, field_options, &block)
@@ -52,7 +50,7 @@ module RailsBootstrapForm
52
50
  def field_wrapper_options(bootstrap_options)
53
51
  {}.tap do |option|
54
52
  option[:class] = field_wrapper_classes(bootstrap_options)
55
- end.merge(bootstrap_options.wrapper_options)
53
+ end.merge(bootstrap_options.wrapper)
56
54
  end
57
55
 
58
56
  def field_wrapper_classes(bootstrap_options)
@@ -10,7 +10,7 @@ module RailsBootstrapForm
10
10
  def self.included(base_class)
11
11
  def render_button(value = nil, options = {}, &block)
12
12
  value, options = nil, value if value.is_a?(Hash)
13
- bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap_form))
13
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
14
14
 
15
15
  button_html = if (bootstrap_options.render_as_button? || block)
16
16
  button(value, options, &block)
@@ -30,7 +30,7 @@ module RailsBootstrapForm
30
30
  def check_box_wrapper_options(bootstrap_options)
31
31
  {}.tap do |option|
32
32
  option[:class] = check_box_wrapper_class(bootstrap_options)
33
- end.merge(bootstrap_options.wrapper_options)
33
+ end.merge(bootstrap_options.wrapper)
34
34
  end
35
35
 
36
36
  def check_box_label_text(attribute, options, bootstrap_options, &block)
@@ -31,7 +31,7 @@ module RailsBootstrapForm
31
31
  def radio_button_wrapper_options(bootstrap_options)
32
32
  {}.tap do |option|
33
33
  option[:class] = radio_button_wrapper_class(bootstrap_options)
34
- end.merge(bootstrap_options.wrapper_options)
34
+ end.merge(bootstrap_options.wrapper)
35
35
  end
36
36
 
37
37
  def radio_button_value(attribute, value)
@@ -10,7 +10,10 @@ module RailsBootstrapForm
10
10
  class_methods do
11
11
  def bootstrap_field(field_name)
12
12
  define_method(field_name) do |attribute, options = {}|
13
- field_wrapper_builder(attribute, options) do
13
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
14
+ return super(attribute, options) if bootstrap_options.disabled?
15
+
16
+ field_wrapper_builder(attribute, bootstrap_options, options) do
14
17
  super(attribute, options)
15
18
  end
16
19
  end
@@ -18,9 +21,12 @@ module RailsBootstrapForm
18
21
 
19
22
  def bootstrap_select_group(field_name)
20
23
  define_method(field_name) do |attribute, options = {}, html_options = {}|
21
- options = {bootstrap_form: {field_class: "form-select"}}.deep_merge!(options)
24
+ options = {bootstrap: {field_class: "form-select"}}.deep_merge!(options)
25
+
26
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
27
+ return super(attribute, options, html_options) if bootstrap_options.disabled?
22
28
 
23
- field_wrapper_builder(attribute, options, html_options) do
29
+ field_wrapper_builder(attribute, bootstrap_options, options, html_options) do
24
30
  tag.fieldset(class: control_specific_class(field_name)) do
25
31
  super(attribute, options, html_options)
26
32
  end
@@ -9,7 +9,8 @@ module RailsBootstrapForm
9
9
 
10
10
  included do
11
11
  def check_box(attribute, options = {}, checked_value = "1", unchecked_value = "0", &block)
12
- bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap_form))
12
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
13
+ return super if bootstrap_options.disabled?
13
14
 
14
15
  options[:class] = check_box_classes(attribute, options)
15
16
 
@@ -25,20 +26,16 @@ module RailsBootstrapForm
25
26
  concat(generate_error(attribute)) if (is_invalid?(attribute) && !bootstrap_options.inline?)
26
27
  end
27
28
 
28
- if bootstrap_options.inline?
29
- check_box_html
30
- else
31
- if bootstrap_options.layout_horizontal?
32
- tag.div(class: field_wrapper_classes(bootstrap_options)) do
33
- tag.div(class: check_box_container_classes(bootstrap_options)) do
34
- check_box_html
35
- end
29
+ if (bootstrap_options.layout_horizontal? && !bootstrap_options.inline?)
30
+ tag.div(class: field_wrapper_classes(bootstrap_options)) do
31
+ tag.div(class: check_box_container_classes(bootstrap_options)) do
32
+ check_box_html
36
33
  end
37
- elsif bootstrap_options.layout_inline?
38
- tag.div(class: "col-12") { check_box_html }
39
- else
40
- check_box_html
41
34
  end
35
+ elsif bootstrap_options.layout_inline?
36
+ tag.div(class: "col-12") { check_box_html }
37
+ else
38
+ check_box_html
42
39
  end
43
40
  end
44
41
  end
@@ -9,6 +9,9 @@ module RailsBootstrapForm
9
9
 
10
10
  included do
11
11
  def collection_check_boxes(attribute, collection, value_method, text_method, options = {}, html_options = {})
12
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
13
+ return super if bootstrap_options.disabled?
14
+
12
15
  options[:multiple] = true
13
16
 
14
17
  inputs = ActiveSupport::SafeBuffer.new
@@ -16,7 +19,7 @@ module RailsBootstrapForm
16
19
  collection.each do |object|
17
20
  input_value = value_method.respond_to?(:call) ? value_method.call(object) : object.send(value_method)
18
21
  input_options = {
19
- bootstrap_form: {
22
+ bootstrap: {
20
23
  label_text: text_method.respond_to?(:call) ? text_method.call(object) : object.send(text_method),
21
24
  inline: true
22
25
  }
@@ -29,7 +32,7 @@ module RailsBootstrapForm
29
32
  inputs.prepend(hidden_field(attribute, value: "", multiple: options[:multiple]))
30
33
  end
31
34
 
32
- field_wrapper_builder(attribute, options, html_options) do
35
+ field_wrapper_builder(attribute, bootstrap_options, options, html_options) do
33
36
  concat(tag.div(class: control_specific_class(:collection_check_boxes)) do
34
37
  concat(inputs)
35
38
  end)
@@ -9,12 +9,15 @@ module RailsBootstrapForm
9
9
 
10
10
  included do
11
11
  def collection_radio_buttons(attribute, collection, value_method, text_method, options = {}, html_options = {})
12
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
13
+ return super if bootstrap_options.disabled?
14
+
12
15
  inputs = ActiveSupport::SafeBuffer.new
13
16
 
14
17
  collection.each do |object|
15
18
  input_value = value_method.respond_to?(:call) ? value_method.call(object) : object.send(value_method)
16
19
  input_options = {
17
- bootstrap_form: {
20
+ bootstrap: {
18
21
  label_text: text_method.respond_to?(:call) ? text_method.call(object) : object.send(text_method),
19
22
  inline: true
20
23
  }
@@ -27,7 +30,7 @@ module RailsBootstrapForm
27
30
  inputs << radio_button(attribute, input_value, input_options)
28
31
  end
29
32
 
30
- field_wrapper_builder(attribute, options, html_options) do
33
+ field_wrapper_builder(attribute, bootstrap_options, options, html_options) do
31
34
  concat(tag.div(class: control_specific_class(:collection_radio_buttons)) do
32
35
  concat(inputs)
33
36
  end)
@@ -9,9 +9,12 @@ module RailsBootstrapForm
9
9
 
10
10
  included do
11
11
  def collection_select(attribute, collection, value_method, text_method, options = {}, html_options = {})
12
- options = {bootstrap_form: {field_class: "form-select"}}.deep_merge!(options)
12
+ options = {bootstrap: {field_class: "form-select"}}.deep_merge!(options)
13
13
 
14
- field_wrapper_builder(attribute, options, html_options) do
14
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
15
+ return super if bootstrap_options.disabled?
16
+
17
+ field_wrapper_builder(attribute, bootstrap_options, options, html_options) do
15
18
  super(attribute, collection, value_method, text_method, options, html_options)
16
19
  end
17
20
  end
@@ -9,9 +9,12 @@ module RailsBootstrapForm
9
9
 
10
10
  included do
11
11
  def color_field(attribute, options = {})
12
- options = {bootstrap_form: {field_class: "form-control form-control-color"}}.deep_merge!(options)
12
+ options = {bootstrap: {field_class: "form-control form-control-color"}}.deep_merge!(options)
13
13
 
14
- field_wrapper_builder(attribute, options) do
14
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
15
+ return super if bootstrap_options.disabled?
16
+
17
+ field_wrapper_builder(attribute, bootstrap_options, options) do
15
18
  super(attribute, options)
16
19
  end
17
20
  end
@@ -9,9 +9,12 @@ module RailsBootstrapForm
9
9
 
10
10
  included do
11
11
  def grouped_collection_select(attribute, collection, group_method, group_label_method, option_key_method, option_value_method, options = {}, html_options = {})
12
- options = {bootstrap_form: {field_class: "form-select"}}.deep_merge!(options)
12
+ options = {bootstrap: {field_class: "form-select"}}.deep_merge!(options)
13
13
 
14
- field_wrapper_builder(attribute, options, html_options) do
14
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
15
+ return super if bootstrap_options.disabled?
16
+
17
+ field_wrapper_builder(attribute, bootstrap_options, options, html_options) do
15
18
  super(attribute, collection, group_method, group_label_method, option_key_method, option_value_method, options, html_options)
16
19
  end
17
20
  end
@@ -9,7 +9,8 @@ module RailsBootstrapForm
9
9
 
10
10
  included do
11
11
  def radio_button(attribute, value, options = {})
12
- bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap_form))
12
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
13
+ return super if bootstrap_options.disabled?
13
14
 
14
15
  options[:class] = radio_button_classes(attribute, options)
15
16
 
@@ -25,20 +26,16 @@ module RailsBootstrapForm
25
26
  concat(generate_error(attribute)) if (is_invalid?(attribute) && !bootstrap_options.inline?)
26
27
  end
27
28
 
28
- if bootstrap_options.inline?
29
- radio_button_html
30
- else
31
- if bootstrap_options.layout_horizontal?
32
- tag.div(class: field_wrapper_classes(bootstrap_options)) do
33
- tag.div(class: radio_button_container_classes(bootstrap_options)) do
34
- radio_button_html
35
- end
29
+ if (bootstrap_options.layout_horizontal? && !bootstrap_options.inline?)
30
+ tag.div(class: field_wrapper_classes(bootstrap_options)) do
31
+ tag.div(class: radio_button_container_classes(bootstrap_options)) do
32
+ radio_button_html
36
33
  end
37
- elsif bootstrap_options.layout_inline?
38
- tag.div(class: "col-12") { radio_button_html }
39
- else
40
- radio_button_html
41
34
  end
35
+ elsif bootstrap_options.layout_inline?
36
+ tag.div(class: "col-12") { radio_button_html }
37
+ else
38
+ radio_button_html
42
39
  end
43
40
  end
44
41
  end
@@ -9,9 +9,12 @@ module RailsBootstrapForm
9
9
 
10
10
  included do
11
11
  def range_field(attribute, options = {})
12
- options = {bootstrap_form: {field_class: "form-range"}}.deep_merge!(options)
12
+ options = {bootstrap: {field_class: "form-range"}}.deep_merge!(options)
13
13
 
14
- field_wrapper_builder(attribute, options) do
14
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
15
+ return super if bootstrap_options.disabled?
16
+
17
+ field_wrapper_builder(attribute, bootstrap_options, options) do
15
18
  super(attribute, options)
16
19
  end
17
20
  end
@@ -11,7 +11,10 @@ module RailsBootstrapForm
11
11
  def rich_text_area(attribute, options = {})
12
12
  options[:class] = ["trix-content", options[:class]].compact.join(" ")
13
13
 
14
- field_wrapper_builder(attribute, options) do
14
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
15
+ return super if bootstrap_options.disabled?
16
+
17
+ field_wrapper_builder(attribute, bootstrap_options, options) do
15
18
  super(attribute, options)
16
19
  end
17
20
  end
@@ -9,9 +9,12 @@ module RailsBootstrapForm
9
9
 
10
10
  included do
11
11
  def select(attribute, choices = nil, options = {}, html_options = {}, &block)
12
- options = {bootstrap_form: {field_class: "form-select"}}.deep_merge!(options)
12
+ options = {bootstrap: {field_class: "form-select"}}.deep_merge!(options)
13
13
 
14
- field_wrapper_builder(attribute, options, html_options) do
14
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
15
+ return super if bootstrap_options.disabled?
16
+
17
+ field_wrapper_builder(attribute, bootstrap_options, options, html_options) do
15
18
  super(attribute, choices, options, html_options, &block)
16
19
  end
17
20
  end
@@ -15,7 +15,7 @@ module RailsBootstrapForm
15
15
  static_options = options.merge(
16
16
  readonly: true,
17
17
  disabled: true,
18
- bootstrap_form: {
18
+ bootstrap: {
19
19
  field_class: bootstrap_form_options.static_field_class
20
20
  }
21
21
  )
@@ -9,9 +9,12 @@ module RailsBootstrapForm
9
9
 
10
10
  included do
11
11
  def time_zone_select(attribute, priority_zones = nil, options = {}, html_options = {})
12
- options = {bootstrap_form: {field_class: "form-select"}}.deep_merge!(options)
12
+ options = {bootstrap: {field_class: "form-select"}}.deep_merge!(options)
13
13
 
14
- field_wrapper_builder(attribute, options, html_options) do
14
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
15
+ return super if bootstrap_options.disabled?
16
+
17
+ field_wrapper_builder(attribute, bootstrap_options, options, html_options) do
15
18
  super(attribute, priority_zones, options, html_options)
16
19
  end
17
20
  end
@@ -9,9 +9,12 @@ module RailsBootstrapForm
9
9
 
10
10
  included do
11
11
  def weekday_select(attribute, options = {}, html_options = {}, &block)
12
- options = {bootstrap_form: {field_class: "form-select"}}.deep_merge!(options)
12
+ options = {bootstrap: {field_class: "form-select"}}.deep_merge!(options)
13
13
 
14
- field_wrapper_builder(attribute, options, html_options) do
14
+ bootstrap_options = bootstrap_form_options.scoped(options.delete(:bootstrap))
15
+ return super if bootstrap_options.disabled?
16
+
17
+ field_wrapper_builder(attribute, bootstrap_options, options, html_options) do
15
18
  super(attribute, options, html_options, &block)
16
19
  end
17
20
  end
@@ -3,6 +3,6 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  module RailsBootstrapForm
6
- VERSION = "0.8.3".freeze
6
+ VERSION = "0.9.0".freeze
7
7
  REQUIRED_RAILS_VERSION = "~> 7.0".freeze
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_bootstrap_form
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harshal LADHE (shivam091)
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-29 00:00:00.000000000 Z
11
+ date: 2023-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: generator_spec