formtastic_rebootstrap 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/LICENSE.txt +20 -0
  4. data/README.md +200 -0
  5. data/VERSION +1 -0
  6. data/lib/action_view/helpers/text_field_date_helper.rb +166 -0
  7. data/lib/formtastic_rebootstrap/actions/base.rb +27 -0
  8. data/lib/formtastic_rebootstrap/actions/button_action.rb +13 -0
  9. data/lib/formtastic_rebootstrap/actions/input_action.rb +13 -0
  10. data/lib/formtastic_rebootstrap/actions/link_action.rb +12 -0
  11. data/lib/formtastic_rebootstrap/actions.rb +10 -0
  12. data/lib/formtastic_rebootstrap/engine.rb +4 -0
  13. data/lib/formtastic_rebootstrap/form_builder.rb +45 -0
  14. data/lib/formtastic_rebootstrap/helpers/actions_helper.rb +24 -0
  15. data/lib/formtastic_rebootstrap/helpers/errors_helper.rb +70 -0
  16. data/lib/formtastic_rebootstrap/helpers/fieldset_wrapper.rb +35 -0
  17. data/lib/formtastic_rebootstrap/helpers/inputs_helper.rb +34 -0
  18. data/lib/formtastic_rebootstrap/helpers.rb +19 -0
  19. data/lib/formtastic_rebootstrap/inputs/base/choices.rb +20 -0
  20. data/lib/formtastic_rebootstrap/inputs/base/collections.rb +9 -0
  21. data/lib/formtastic_rebootstrap/inputs/base/datetime_pickerish.rb +10 -0
  22. data/lib/formtastic_rebootstrap/inputs/base/errors.rb +48 -0
  23. data/lib/formtastic_rebootstrap/inputs/base/hints.rb +27 -0
  24. data/lib/formtastic_rebootstrap/inputs/base/html.rb +36 -0
  25. data/lib/formtastic_rebootstrap/inputs/base/labelling.rb +40 -0
  26. data/lib/formtastic_rebootstrap/inputs/base/numeric.rb +9 -0
  27. data/lib/formtastic_rebootstrap/inputs/base/placeholder.rb +9 -0
  28. data/lib/formtastic_rebootstrap/inputs/base/stringish.rb +17 -0
  29. data/lib/formtastic_rebootstrap/inputs/base/timeish.rb +71 -0
  30. data/lib/formtastic_rebootstrap/inputs/base/wrapping.rb +83 -0
  31. data/lib/formtastic_rebootstrap/inputs/base.rb +45 -0
  32. data/lib/formtastic_rebootstrap/inputs/boolean_input.rb +51 -0
  33. data/lib/formtastic_rebootstrap/inputs/check_boxes_input.rb +41 -0
  34. data/lib/formtastic_rebootstrap/inputs/color_input.rb +15 -0
  35. data/lib/formtastic_rebootstrap/inputs/country_input.rb +14 -0
  36. data/lib/formtastic_rebootstrap/inputs/date_input.rb +10 -0
  37. data/lib/formtastic_rebootstrap/inputs/date_picker_input.rb +9 -0
  38. data/lib/formtastic_rebootstrap/inputs/date_select_input.rb +14 -0
  39. data/lib/formtastic_rebootstrap/inputs/datetime_input.rb +10 -0
  40. data/lib/formtastic_rebootstrap/inputs/datetime_picker_input.rb +9 -0
  41. data/lib/formtastic_rebootstrap/inputs/datetime_select_input.rb +8 -0
  42. data/lib/formtastic_rebootstrap/inputs/email_input.rb +15 -0
  43. data/lib/formtastic_rebootstrap/inputs/file_input.rb +14 -0
  44. data/lib/formtastic_rebootstrap/inputs/hidden_input.rb +12 -0
  45. data/lib/formtastic_rebootstrap/inputs/number_input.rb +15 -0
  46. data/lib/formtastic_rebootstrap/inputs/password_input.rb +15 -0
  47. data/lib/formtastic_rebootstrap/inputs/phone_input.rb +15 -0
  48. data/lib/formtastic_rebootstrap/inputs/radio_input.rb +47 -0
  49. data/lib/formtastic_rebootstrap/inputs/range_input.rb +15 -0
  50. data/lib/formtastic_rebootstrap/inputs/search_input.rb +15 -0
  51. data/lib/formtastic_rebootstrap/inputs/select_input.rb +16 -0
  52. data/lib/formtastic_rebootstrap/inputs/string_input.rb +8 -0
  53. data/lib/formtastic_rebootstrap/inputs/text_input.rb +14 -0
  54. data/lib/formtastic_rebootstrap/inputs/time_input.rb +10 -0
  55. data/lib/formtastic_rebootstrap/inputs/time_select_input.rb +14 -0
  56. data/lib/formtastic_rebootstrap/inputs/time_zone_input.rb +14 -0
  57. data/lib/formtastic_rebootstrap/inputs/url_input.rb +14 -0
  58. data/lib/formtastic_rebootstrap/inputs.rb +38 -0
  59. data/lib/formtastic_rebootstrap/version.rb +3 -0
  60. data/lib/formtastic_rebootstrap.rb +23 -0
  61. data/vendor/assets/stylesheets/formtastic_rebootstrap.css +7 -0
  62. metadata +218 -0
@@ -0,0 +1,34 @@
1
+ module FormtasticRebootstrap
2
+ module Helpers
3
+ module InputsHelper
4
+
5
+ def inputs(*args, &block)
6
+ wrap_it = @already_in_an_inputs_block ? true : false
7
+ @already_in_an_inputs_block = true
8
+
9
+ title = field_set_title_from_args(*args)
10
+ html_options = args.extract_options!
11
+ html_options[:class] ||= "inputs"
12
+ html_options[:name] = title
13
+
14
+ out = begin
15
+ if html_options[:for] # Nested form
16
+ inputs_for_nested_attributes(*(args << html_options), &block)
17
+ elsif block_given?
18
+ field_set_and_list_wrapping(*(args << html_options), &block)
19
+ else
20
+ legend = args.shift if args.first.is_a?(::String)
21
+ args = default_columns_for_object if @object && args.empty?
22
+ contents = fieldset_contents_from_column_list(args)
23
+ args.unshift(legend) if legend.present?
24
+ field_set_and_list_wrapping(*((args << html_options) << contents))
25
+ end
26
+ end
27
+
28
+ @already_in_an_inputs_block = false
29
+ out
30
+ end
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,19 @@
1
+ module FormtasticRebootstrap
2
+ module Helpers
3
+
4
+ autoload :ActionsHelper, 'formtastic_rebootstrap/helpers/actions_helper'
5
+ autoload :ErrorsHelper, 'formtastic_rebootstrap/helpers/errors_helper'
6
+ autoload :FieldsetWrapper, 'formtastic_rebootstrap/helpers/fieldset_wrapper'
7
+ # autoload :FileColumnDetection, 'formtastic/helpers/file_column_detection'
8
+ # autoload :FormHelper, 'formtastic/helpers/form_helper'
9
+ autoload :InputsHelper, 'formtastic_rebootstrap/helpers/inputs_helper'
10
+ # autoload :LabelHelper, 'formtastic/helpers/label_helper'
11
+ # autoload :SemanticFormHelper, 'formtastic/helpers/semantic_form_helper'
12
+ # autoload :Reflection, 'formtastic/helpers/reflection'
13
+
14
+ def self.bootstrap_layout_classes_regex
15
+ /^col-(sm|md|lg|xl)?-?[0-9]{1,2}/
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,20 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ module Base
4
+ module Choices
5
+ include Formtastic::Inputs::Base::Choices
6
+
7
+ def choice_wrapping_html_options(choice)
8
+ super(choice).tap do |options|
9
+ options[:for] = choice_input_dom_id(choice)
10
+ end
11
+ end
12
+
13
+ def choice_label_html_options(choice)
14
+ choice_wrapping_html_options(choice)
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,9 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ module Base
4
+ module Collections
5
+ include Formtastic::Inputs::Base::Collections
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ module Base
4
+ module DatetimePickerish
5
+ include Base::Placeholder
6
+ include Formtastic::Inputs::Base::DatetimePickerish
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,48 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ module Base
4
+ module Errors
5
+
6
+ include Formtastic::Inputs::Base::Errors
7
+
8
+ def error_html(inline_or_block = :inline)
9
+ errors? ? send(:"error_#{builder.inline_errors}_html", inline_or_block) : ""
10
+ end
11
+
12
+ def error_sentence_html(inline_or_block)
13
+ error_class = if inline_or_block == :inline
14
+ options[:error_class] || builder.default_inline_error_class
15
+ else
16
+ options[:error_class] || builder.default_block_error_class
17
+ end
18
+ template.content_tag(:span, Formtastic::Util.html_safe(errors.to_sentence.html_safe), :class => error_class)
19
+ end
20
+
21
+ def error_list_html(ignore)
22
+ super()
23
+ # error_class = options[:error_class] || builder.default_error_list_class
24
+ # list_elements = []
25
+ # errors.each do |error|
26
+ # list_elements << template.content_tag(:li, Formtastic::Util.html_safe(error.html_safe))
27
+ # end
28
+ # template.content_tag(:ul, Formtastic::Util.html_safe(list_elements.join("\n")), :class => error_class)
29
+ end
30
+
31
+ def error_first_html(inline_or_block = :inline)
32
+ error_class = if inline_or_block == :inline
33
+ options[:error_class] || builder.default_inline_error_class
34
+ else
35
+ options[:error_class] || builder.default_block_error_class
36
+ end
37
+ template.content_tag(:span, Formtastic::Util.html_safe(errors.first.untaint), :class => error_class)
38
+ end
39
+
40
+ def error_none_html(ignore)
41
+ # super
42
+ ""
43
+ end
44
+
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,27 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ module Base
4
+ module Hints
5
+
6
+ include Formtastic::Inputs::Base::Hints
7
+
8
+ def hint_html(inline_or_block = :block)
9
+ if hint?
10
+ hint_class = if inline_or_block == :inline
11
+ options[:hint_class] || builder.default_inline_hint_class
12
+ else
13
+ options[:hint_class] || builder.default_block_hint_class
14
+ end
15
+ template.content_tag(
16
+ :span,
17
+ Formtastic::Util.html_safe(hint_text),
18
+ :class => hint_class
19
+ )
20
+ end
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
27
+
@@ -0,0 +1,36 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ module Base
4
+ module Html
5
+
6
+ include Formtastic::Inputs::Base::Html
7
+
8
+ def form_control_input_html_options
9
+ new_classes = input_class_without_col&.compact&.join(" ")
10
+ input_html_options.merge(:class => new_classes)
11
+ end
12
+
13
+ def original_classes
14
+ input_html_options[:class]&.split(' ')&.flatten
15
+ end
16
+
17
+ def input_class_without_col
18
+ ['form-control'] << original_classes&.reject do |c|
19
+ c.match(/^col-(sm|md|lg|xl)?-?[0-9]{1,2}/)
20
+ end&.join(' ')
21
+ end
22
+
23
+ def input_html_options
24
+ if errors?
25
+ {
26
+ :class => "error"
27
+ }.merge(super)
28
+ else
29
+ super
30
+ end
31
+ end
32
+
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,40 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ module Base
4
+ module Labelling
5
+
6
+ include Formtastic::Inputs::Base::Labelling
7
+
8
+ def label_html_options
9
+ super.tap do |options|
10
+ # Bootstrap defines class 'label' too, so remove the
11
+ # one that gets created by Formtastic.
12
+ options[:class] = options[:class].reject { |c| c == 'label' }
13
+ options[:class] << "control-label"
14
+ end
15
+ end
16
+
17
+ # def control_label_html
18
+ def label_html
19
+ if render_label?
20
+ template.content_tag(:span, :class => label_class_with_col) do
21
+ builder.label(input_name, label_text, label_html_options)
22
+ end
23
+ else
24
+ "".html_safe
25
+ end
26
+ end
27
+
28
+ def layout_classes
29
+
30
+ end
31
+
32
+ def label_class_with_col
33
+ ['col-md-3 form-label col-form-label'] << options.dig(:label_html, :class)&.split(' ')&.select do |c|
34
+ c.match(/^col-(sm|md|lg|xl)?-?[0-9]{1,2}/)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,9 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ module Base
4
+ module Numeric
5
+ include Formtastic::Inputs::Base::Numeric
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ module Base
4
+ module Placeholder
5
+ include Formtastic::Inputs::Base::Placeholder
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,17 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ module Base
4
+ module Stringish
5
+
6
+ include Formtastic::Inputs::Base::Stringish
7
+
8
+ def to_html
9
+ bootstrap_wrapping do
10
+ builder.text_field(method, form_control_input_html_options)
11
+ end
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,71 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ module Base
4
+ module Timeish
5
+ FRAGMENT_CLASSES = {
6
+ :year => "col-xs-2",
7
+ :month => "col-xs-3",
8
+ :day => "col-xs-1",
9
+ :hour => "col-xs-offset-3 col-xs-1",
10
+ :minute => "col-xs-1",
11
+ :second => "col-xs-1"
12
+ }
13
+
14
+ FRAGMENT_PLACEHOLDERS = {
15
+ :year => nil,
16
+ :month => nil,
17
+ :day => nil,
18
+ :hour => nil,
19
+ :minute => nil,
20
+ :second => nil
21
+ }
22
+
23
+ def to_html
24
+ bootstrap_wrapping do
25
+ hidden_fragments <<
26
+ row_wrapping do
27
+ fragments.map do |fragment|
28
+ fragment_html(fragment.to_sym)
29
+ end.join.html_safe
30
+ end
31
+ end
32
+ end
33
+
34
+ def row_wrapping(&block)
35
+ template.content_tag(:div,
36
+ template.capture(&block).html_safe,
37
+ :class => 'row md-pl-3'
38
+ )
39
+ end
40
+
41
+ def fragment_html(fragment)
42
+ template.content_tag(:div, :class => fragment_class(fragment)) do
43
+ opts = input_options.merge(:prefix => fragment_prefix, :field_name => fragment_name(fragment), :default => value, :include_blank => include_blank?)
44
+ template.send(:"select_#{fragment}", value, opts, fragment_input_html_options(fragment))
45
+ end
46
+ end
47
+
48
+ def fragment_input_html_options(fragment)
49
+ input_html_options.tap do |options|
50
+ options[:id] = fragment_id(fragment)
51
+
52
+ options[:class] = ((options[:class] || "").split.flatten.reject do |c|
53
+ c.match(Helpers.bootstrap_layout_classes_regex)
54
+ end << "form-control").join(" ")
55
+
56
+ options[:placeholder] = fragment_placeholder(fragment)
57
+ end
58
+ end
59
+
60
+ def fragment_class(fragment)
61
+ (options[:fragment_classes] || self.class::FRAGMENT_CLASSES)[fragment.to_sym]
62
+ end
63
+
64
+ def fragment_placeholder(fragment)
65
+ (options[:fragment_placeholders] || self.class::FRAGMENT_PLACEHOLDERS)[fragment.to_sym]
66
+ end
67
+
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,83 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ module Base
4
+ module Wrapping
5
+
6
+ include Formtastic::Inputs::Base::Wrapping
7
+
8
+ def bootstrap_wrapping(&block)
9
+ form_group_wrapping do
10
+ label_html <<
11
+ template.content_tag(:span, :class => wrapping_class_with_col&.uniq&.join(' ')) do
12
+ input_content(&block) <<
13
+ hint_html(:block) <<
14
+ error_html(:block)
15
+ end
16
+ end
17
+ end
18
+
19
+ def input_options_classes
20
+ options.dig(:input_html, :class)&.split(' ')&.flatten
21
+ end
22
+
23
+ def input_default_col
24
+ 'col-md-9'
25
+ end
26
+
27
+ def wrapping_class_with_col
28
+ return ['form-wrapper'] << input_default_col unless input_options_classes
29
+ options[:input_html][:class] = options.dig(:input_html, :class)&.split(' ')
30
+ ['form-wrapper'] << input_options_classes&.select do |c|
31
+ c.match(/^col-(sm|md|lg|xl)?-?[0-9]{1,2}/)
32
+ end
33
+ end
34
+
35
+ def input_content(&block)
36
+ content = [
37
+ add_on_content(options[:prepend]),
38
+ options[:prepend_content],
39
+ yield,
40
+ add_on_content(options[:append]),
41
+ options[:append_content]
42
+ ].compact.join("\n").html_safe
43
+
44
+ if prepended_or_appended?(options)
45
+ template.content_tag(:div, content, :class => add_on_wrapper_classes(options).join(" "))
46
+ else
47
+ content
48
+ end
49
+ end
50
+
51
+ def prepended_or_appended?(options)
52
+ options[:prepend] || options[:prepend_content] || options[:append] || options[:append_content]
53
+ end
54
+
55
+ def add_on_content(content)
56
+ return nil unless content
57
+ template.content_tag(:span, content, :class => 'input-group-addon')
58
+ end
59
+
60
+ def form_group_wrapping(&block)
61
+ template.content_tag(:div,
62
+ template.capture(&block).html_safe,
63
+ wrapper_html_options
64
+ )
65
+ end
66
+
67
+ def wrapper_html_options
68
+ super.tap do |options|
69
+ options[:class] << " form-group form-row"
70
+ options[:class] << " has-error" if errors?
71
+ end
72
+ end
73
+
74
+ def add_on_wrapper_classes(options)
75
+ [:prepend, :append, :prepend_content, :append_content].find do |key|
76
+ options.has_key?(key)
77
+ end ? ['input-group'] : []
78
+ end
79
+
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,45 @@
1
+ require "formtastic_rebootstrap/inputs/base/errors"
2
+ require "formtastic_rebootstrap/inputs/base/hints"
3
+ require "formtastic_rebootstrap/inputs/base/html"
4
+ require "formtastic_rebootstrap/inputs/base/labelling"
5
+
6
+ module FormtasticRebootstrap
7
+ module Inputs
8
+ module Base
9
+ extend ActiveSupport::Autoload
10
+
11
+ autoload :DatetimePickerish, "formtastic_rebootstrap/inputs/base/datetime_pickerish"
12
+ # autoload :Associations
13
+ autoload :Collections, "formtastic_rebootstrap/inputs/base/collections"
14
+ autoload :Choices, "formtastic_rebootstrap/inputs/base/choices"
15
+ # autoload :Database
16
+ # autoload :Errors
17
+ # autoload :Fileish
18
+ # autoload :Hints
19
+ # autoload :Html
20
+ # autoload :Labelling
21
+ # autoload :Naming
22
+ autoload :Numeric, "formtastic_rebootstrap/inputs/base/numeric"
23
+ # autoload :Options
24
+ autoload :Placeholder, "formtastic_rebootstrap/inputs/base/placeholder"
25
+ autoload :Stringish, "formtastic_rebootstrap/inputs/base/stringish"
26
+ autoload :Timeish, "formtastic_rebootstrap/inputs/base/timeish"
27
+ # autoload :Validations
28
+ autoload :Wrapping, "formtastic_rebootstrap/inputs/base/wrapping"
29
+
30
+ include Html
31
+ # include Options
32
+ # include Database
33
+ # include Database
34
+ include Errors
35
+ include Hints
36
+ # include Naming
37
+ # include Validations
38
+ # include Fileish
39
+ # include Associations
40
+ include Labelling
41
+ include Wrapping
42
+
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,51 @@
1
+ # TODO See if this can be refactored to make use of some of the Choices code.
2
+ module FormtasticRebootstrap
3
+ module Inputs
4
+ class BooleanInput < Formtastic::Inputs::BooleanInput
5
+ include Base
6
+
7
+ # Skip rendering of .form-label in #bootstrap_wrapping
8
+ def render_label?
9
+ true
10
+ end
11
+
12
+ def to_html
13
+ bootstrap_wrapping do
14
+ hidden_field_html <<
15
+ check_box_html
16
+ end
17
+ end
18
+
19
+ def hidden_field_html
20
+ template.hidden_field_tag(
21
+ input_html_options[:name],
22
+ unchecked_value,
23
+ :id => nil,
24
+ :disabled => input_html_options[:disabled]
25
+ )
26
+ end
27
+
28
+ def label_with_nested_checkbox
29
+ builder.label(
30
+ method,
31
+ label_text_with_embedded_checkbox,
32
+ label_html_options
33
+ )
34
+ end
35
+
36
+ def checkbox_wrapping(&block)
37
+ template.content_tag(:div,
38
+ template.capture(&block).html_safe,
39
+ wrapper_html_options
40
+ )
41
+ end
42
+
43
+ def wrapper_html_options
44
+ super.tap do |options|
45
+ options[:class] = (options[:class].split + ["checkbox"]).join(" ")
46
+ end
47
+ end
48
+
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,41 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ class CheckBoxesInput < Formtastic::Inputs::CheckBoxesInput
4
+ include Base
5
+ include Base::Choices
6
+
7
+ # TODO Make sure help blocks work correctly.
8
+
9
+ def to_html
10
+ bootstrap_wrapping do
11
+ hidden_field_for_all << # Might need to remove this guy.
12
+ collection.map { |choice|
13
+ choice_html(choice)
14
+ }.join("\n").html_safe
15
+ end
16
+ end
17
+
18
+ def choice_html(choice)
19
+ checkbox_wrapping do
20
+ template.content_tag(:label,
21
+ hidden_fields? ?
22
+ check_box_with_hidden_input(choice) :
23
+ check_box_without_hidden_input(choice) <<
24
+ choice_label(choice),
25
+ label_html_options.merge(choice_label_html_options(choice))
26
+ )
27
+ end
28
+ end
29
+
30
+ def checkbox_wrapping(&block)
31
+ class_name = "checkbox"
32
+ class_name += " checkbox-inline" if options[:inline]
33
+ template.content_tag(:div,
34
+ template.capture(&block).html_safe,
35
+ :class => class_name
36
+ )
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,15 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ class ColorInput < Formtastic::Inputs::ColorInput
4
+ include Base
5
+ include Base::Stringish
6
+
7
+ def to_html
8
+ raise "The :color input requires the color_field form helper, which is only available in Rails 4+" unless builder.respond_to?(:color_field)
9
+ bootstrap_wrapping do
10
+ builder.color_field(method, form_control_input_html_options)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ class CountryInput < Formtastic::Inputs::CountryInput
4
+ include Base
5
+
6
+ def to_html
7
+ bootstrap_wrapping do
8
+ builder.country_select(method, priority_countries, input_options, form_control_input_html_options)
9
+ end
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ class DateInput < FormtasticRebootstrap::Inputs::DateSelectInput
4
+ def to_html
5
+ ::ActiveSupport::Deprecation.warn("DateInput (:as => :date) has been renamed to DateSelectInput (:as => :date_select) and will be removed or changed in the next version of Formtastic, please update your forms.", caller(2))
6
+ super
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ class DatePickerInput < Formtastic::Inputs::DatePickerInput
4
+ include Base
5
+ include Base::Stringish
6
+ include Base::DatetimePickerish
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ class DateSelectInput < Formtastic::Inputs::DateSelectInput
4
+ FRAGMENT_CLASSES = {
5
+ :year => "col-xs-4",
6
+ :month => "col-xs-5",
7
+ :day => "col-xs-3"
8
+ }
9
+
10
+ include Base
11
+ include Base::Timeish
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ class DatetimeInput < FormtasticRebootstrap::Inputs::DatetimeSelectInput
4
+ def to_html
5
+ ::ActiveSupport::Deprecation.warn("DatetimeInput (:as => :datetime) has been renamed to DatetimeSelectInput (:as => :datetime_select) and will be removed or changed in the next version of Formtastic, please update your forms.", caller(2))
6
+ super
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ module FormtasticRebootstrap
2
+ module Inputs
3
+ class DatetimePickerInput < Formtastic::Inputs::DatetimePickerInput
4
+ include Base
5
+ include Base::Stringish
6
+ include Base::DatetimePickerish
7
+ end
8
+ end
9
+ end