bootstrap3_helper 1.0.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,77 +1,70 @@
1
- # @root
2
- #
3
- #
4
- module Bootstrap3Helper
5
- # @description
6
- # - This class is used to general groups of accordions.
1
+ module Bootstrap3Helper # :nodoc:
2
+ # This class is used to general groups of accordions.
7
3
  #
8
- # <code>
9
- # <%= accordion_group_helper do |group| %>
10
- # <%= group.accordion :primary do |accordion| %>
11
- # <%= accordion.header { "accordion 1" } %>
12
- # <%= accordion.body do %>
13
- # <p>This is accordion 1</p>
14
- # <% end %>
4
+ # @eample Rendering out an Accordion Group in template:
5
+ # <code>
6
+ # <%= accordion_group_helper do |group| %>
7
+ # <%= group.accordion :primary do |accordion| %>
8
+ # <%= accordion.header { "accordion 1" } %>
9
+ # <%= accordion.body do %>
10
+ # <p>This is accordion 1</p>
11
+ # <% end %>
12
+ # <% end %>
13
+ # <%= group.accordion :info do |accordion| %>
14
+ # <%= accordion.header { "accordion 2" } %>
15
+ # <%= accordion.body do %>
16
+ # <p>This is accordion 2</p>
17
+ # <% end %>
18
+ # <% end %>
19
+ # <%= group.accordion :danger do |accordion| %>
20
+ # <%= accordion.header { "accordion 3" } %>
21
+ # <%= accordion.body do %>
22
+ # <p>This is accordion 3</p>
23
+ # <% end %>
24
+ # <% end %>
15
25
  # <% end %>
16
- # <%= group.accordion :info do |accordion| %>
17
- # <%= accordion.header { "accordion 2" } %>
18
- # <%= accordion.body do %>
19
- # <p>This is accordion 2</p>
20
- # <% end %>
21
- # <% end %>
22
- # <%= group.accordion :danger do |accordion| %>
23
- # <%= accordion.header { "accordion 3" } %>
24
- # <%= accordion.body do %>
25
- # <p>This is accordion 3</p>
26
- # <% end %>
27
- # <% end %>
28
- # <% end %>
29
- # </code>
26
+ # </code>
30
27
  #
31
28
  class AccordionGroup < Component
32
- # @description
33
- # - Used to initialize the main object. This objects sole purpose is to
29
+ # Used to initialize the main object. This objects sole purpose is to
34
30
  # generate a wrapper element with a distinct id and pass that id down to
35
31
  # all the child elements.
36
32
  #
37
- def initialize(template, opts = {})
33
+ # @param [ActionView] template
34
+ # @param [Hash] opts
35
+ # @option opts [String] :id
36
+ # @option opts [String] :class
37
+ # @option opts [Hash] :data
38
+ #
39
+ def initialize(template, opts = {}, &block)
38
40
  super(template)
39
- @accordions = []
40
- @id = opts.fetch(:id, uuid)
41
- @class = opts.fetch(:class, '')
41
+
42
+ @id = opts.fetch(:id, uuid)
43
+ @class = opts.fetch(:class, '')
44
+ @data = opts.fetch(:data, {})
45
+ @content = block || proc { '' }
42
46
  end
43
47
 
44
- # @description
45
- # - This method is the main method for generating individual accordions.
48
+ # This method is the main method for generating individual accordions.
46
49
  # This is where you would pass in the html attributes.
47
50
  #
48
51
  # @param [NilClass|String|Symbol|Hash] - Bootstrap class context, or options hash.
49
52
  # @param [Hash] opts
50
- # <code>
51
- # args = {
52
- # id: [String]
53
- # class: [String]
54
- # }
55
- # </code>
53
+ # @option args [String] id The ID, if you want one, for the parent container
54
+ # @option args [String] class Custom class for the parent container
55
+ # @yieldparam accordion [Accordion]
56
56
  #
57
- # @yields [Accordion] accordion
58
- # @return [nilClass]
59
- #
60
- def accordion(context_or_options = nil, opts = {})
57
+ def accordion(context_or_options = nil, opts = {}, &block)
61
58
  if context_or_options.is_a?(Hash)
62
59
  context_or_options[:parent_id] = @id
63
60
  else
64
61
  opts[:parent_id] = @id
65
62
  end
66
63
 
67
- accordion = Accordion.new(@template, context_or_options, opts)
68
- yield accordion if block_given?
69
-
70
- @accordions.push(accordion)
64
+ Accordion.new(@template, context_or_options, opts, &block)
71
65
  end
72
66
 
73
- # @description
74
- # - The to string method here is what is responsible for rendering out the
67
+ # The to string method here is what is responsible for rendering out the
75
68
  # entire accordion. As long as the main method is rendered out in the helper,
76
69
  # you will get all the contents.
77
70
  #
@@ -79,10 +72,8 @@ module Bootstrap3Helper
79
72
  #
80
73
  def to_s
81
74
  content = content_tag :div, id: @id, class: "panel-group #{@class}" do
82
- @accordions.map(&:to_s).join.html_safe
75
+ @content.call(self)
83
76
  end
84
-
85
- content
86
77
  end
87
78
  end
88
79
  end
@@ -1,11 +1,8 @@
1
- # @root
2
- #
3
- #
4
- module Bootstrap3Helper
5
- # @description
6
- # - The Alert helper is meant to help you rapidly build Bootstrap Alert
1
+ module Bootstrap3Helper # :nodoc:
2
+ # The Alert helper is meant to help you rapidly build Bootstrap Alert
7
3
  # components quickly and easily. The dissmiss button is optional.
8
4
  #
5
+ # @example Rendering a Bootstrap Alert Component in a view:
9
6
  # <code>
10
7
  # <%= alert_helper :warning, dismissable: true do %>
11
8
  # <% if @model.errors.present? %>
@@ -17,33 +14,26 @@ module Bootstrap3Helper
17
14
  # </code>
18
15
  #
19
16
  class Alert < Component
20
- # @description
21
- # - Used to generate Bootstrap alert components quickly.
17
+ # Used to generate Bootstrap alert components quickly.
22
18
  #
23
- # @param [Class] template - Template in which your are binding too.
24
- # @param [NilClass|String|Symbol|Hash] - Bootstrap class context, or options hash.
25
- # @param [Hash] opts
26
- # <code>
27
- # opts = {
28
- # id: [String] - ID of the alert box
29
- # class: [String] - Additional classes for the alert box
30
- # }
31
- # </code>
32
- # @param [Proc] &block
19
+ # @param [Class] template Template in which your are binding too.
20
+ # @param [NilClass|String|Symbol|Hash] Bootstrap class context, or options hash.
21
+ # @param [Hash] opts
22
+ # @option opts [String] :id The ID of the element
23
+ # @option opts [String] :class Custom class for the component.
33
24
  # @return [Alert]
34
25
  #
35
26
  def initialize(template, context_or_options = nil, opts = {}, &block)
36
27
  super(template)
37
28
  @context, args = parse_arguments(context_or_options, opts)
38
29
 
39
- @id = args.fetch(:id, nil)
40
- @class = args.fetch(:class, '')
30
+ @id = args.fetch(:id, nil)
31
+ @class = args.fetch(:class, '')
41
32
  @dismissible = args.fetch(:dismissible, false)
42
- @content = block || proc { '' }
33
+ @content = block || proc { '' }
43
34
  end
44
35
 
45
- # @description
46
- # - The dissmiss button, if the element has one.
36
+ # The dissmiss button, if the element has one.
47
37
  #
48
38
  # @return [String]
49
39
  #
@@ -53,28 +43,26 @@ module Bootstrap3Helper
53
43
  end
54
44
  end
55
45
 
56
- # @description
57
- # - Used to render out the Alert component.
46
+ # Used to render out the Alert component.
58
47
  #
59
- # @note
60
- # - concat needs to be used to add the content of the button to the output
61
- # buffer. For some reason, if though the block returns a String, trying to
62
- # add that string to the dismiss button string, returns with the dismiss
63
- # button missing. Was forced to caoncat the button to the current output
64
- # buffer in order to get it to persist after the block call.
48
+ # @note Concat needs to be used to add the content of the button to the output
49
+ # buffer. For some reason, if though the block returns a String, trying to
50
+ # add that string to the dismiss button string, returns with the dismiss
51
+ # button missing. Was forced to caoncat the button to the current output
52
+ # buffer in order to get it to persist after the block call.
65
53
  #
66
54
  # @return [String]
67
55
  #
68
56
  def to_s
69
57
  content_tag :div, id: @id, class: container_class do
70
- concat(@dismissible ? close_button : '') + @content.call
58
+ concat(@dismissible ? close_button : '')
59
+ @content.call(self)
71
60
  end
72
61
  end
73
62
 
74
63
  private
75
64
 
76
- # @description
77
- # - Used to get the container classes.
65
+ # Used to get the container classes.
78
66
  #
79
67
  # @return [String]
80
68
  #
@@ -1,47 +1,37 @@
1
- # @root
2
- #
3
- #
4
- module Bootstrap3Helper
5
- # @description
6
- # - Used to generate Bootstrap callout component quickly.
1
+ module Bootstrap3Helper # :nodoc:
2
+ # Used to generate Bootstrap callout component quickly.
7
3
  #
8
- # @param [Class] template - Template in which your are binding too.
9
- # @param [NilClass|String|Symbol|Hash] - Bootstrap class context, or options hash.
10
- # @param [Hash] opts
11
- # <code>
12
- # opts = {
13
- # id: [String] - ID of the alert box
14
- # class: [String] - Additional classes for the alert box
15
- # }
16
- # </code>
17
- # @param [Proc] &block
18
- # @return [Callout]
19
4
  #
20
5
  class Callout < Component
6
+ # @param [Class] template - Template in which your are binding too.
7
+ # @param [NilClass|String|Symbol|Hash] - Bootstrap class context, or options hash.
8
+ # @param [Hash] opts
9
+ # @option opts [String] :id The ID of the element
10
+ # @option opts [String] :class Custom class for the component.
11
+ # @return [Callout]
12
+ #
21
13
  def initialize(template, context_or_options = nil, opts = {}, &block)
22
14
  super(template)
23
15
  @context, args = parse_arguments(context_or_options, opts)
24
16
 
25
- @id = args.fetch(:id, nil)
26
- @class = args.fetch(:class, '')
17
+ @id = args.fetch(:id, nil)
18
+ @class = args.fetch(:class, '')
27
19
  @content = block || proc { '' }
28
20
  end
29
21
 
30
- # @description
31
- # - Returns a string representation of the component.
22
+ # Returns a string representation of the component.
32
23
  #
33
24
  # @return [String]
34
25
  #
35
26
  def to_s
36
27
  content_tag :div, id: @id, class: container_class do
37
- @content.call
28
+ @content.call(self)
38
29
  end
39
30
  end
40
31
 
41
32
  private
42
33
 
43
- # @description
44
- # - Used to get the container classes.
34
+ # Used to get the container classes.
45
35
  #
46
36
  # @return [String]
47
37
  #
@@ -1,25 +1,18 @@
1
- # @root
2
- #
3
- #
4
- module Bootstrap3Helper
5
- # @description
6
- # - This super class is meant to contain commonly used methods that
1
+ module Bootstrap3Helper # :nodoc
2
+ # This super class is meant to contain commonly used methods that
7
3
  # all sub classes can leverage.
8
4
  #
9
- # @note
10
- # - Every component that inherits from this class, needs to call the parent
11
- # initialization method! In order to properly render erb blocks within the
12
- # proper context, we need the template. The only way to get this, is to pass
13
- # in the template.
5
+ # @note Every component that inherits from this class, needs to call the parent
6
+ # initialization method! In order to properly render erb blocks within the
7
+ # proper context, we need the template. The only way to get this, is to pass
8
+ # in the template.
14
9
  #
15
- # @note
16
- # - the `context` mentioned above, refers to the context of `@template` and
17
- # not to be confused with `@context` that can be found in the sub classes.
18
- # `@context` refers to the Bootstrap class context of the component.
10
+ # @note The `context` mentioned above, refers to the context of `@template` and
11
+ # not to be confused with `@context` that can be found in the sub classes.
12
+ # `@context` refers to the Bootstrap class context of the component.
19
13
  #
20
14
  class Component
21
- # @description
22
- # - Used to ensure that the helpers always have the propert context for
15
+ # Used to ensure that the helpers always have the propert context for
23
16
  # rendering and bindings.
24
17
  #
25
18
  # @param [Class] template - the context of the bindings
@@ -28,8 +21,7 @@ module Bootstrap3Helper
28
21
  @template = template
29
22
  end
30
23
 
31
- # @description
32
- # - Used to pass all context of content_tag to the template. This ensures
24
+ # Used to pass all context of content_tag to the template. This ensures
33
25
  # proper template binding of variables and methods!
34
26
  #
35
27
  # @return [String]
@@ -50,8 +42,7 @@ module Bootstrap3Helper
50
42
  )
51
43
  end
52
44
 
53
- # @description
54
- # - Used to pass all concat references to the template. This ensures proper
45
+ # Used to pass all concat references to the template. This ensures proper
55
46
  # binding. Concat adds a String to the template Output buffer. Useful when
56
47
  # trying to add a String with no block.
57
48
  #
@@ -61,8 +52,7 @@ module Bootstrap3Helper
61
52
  @template.concat(text)
62
53
  end
63
54
 
64
- # @description
65
- # - Used to parse method arguments. If the first argument is
55
+ # Used to parse method arguments. If the first argument is
66
56
  # a Hash, then it is assumed that the user left off the bootstrap
67
57
  # contectual class. So we will assign it to `default` and
68
58
  # return the Hash to be used as options.
@@ -80,8 +70,7 @@ module Bootstrap3Helper
80
70
  end
81
71
  end
82
72
 
83
- # @description
84
- # - Used to generate a (hopefully) unique ID for DOM elements. Used as a
73
+ # Used to generate a (hopefully) unique ID for DOM elements. Used as a
85
74
  # fallback if the user doesn't specify one.
86
75
  #
87
76
  # @return [String]
@@ -0,0 +1,25 @@
1
+ # @root
2
+ #
3
+ #
4
+ module Bootstrap3Helper
5
+ # @description
6
+ #
7
+ #
8
+ class Configuration
9
+ SETTINGS = %i[
10
+ autoload_in_all_views
11
+ ].freeze
12
+
13
+ attr_accessor(*SETTINGS)
14
+
15
+ # @description
16
+ # -
17
+ #
18
+ # @params [Hash] args
19
+ # @return [ClassName]
20
+ #
21
+ def initialize(args = {})
22
+ @autoload_in_all_views = true
23
+ end
24
+ end
25
+ end
@@ -1,11 +1,7 @@
1
- # @root
2
- #
3
- #
4
- module Bootstrap3Helper
5
- # @description
6
- # - Used to rapidly build Bootstrap Panel Components.
1
+ module Bootstrap3Helper # :nodoc:
2
+ # Used to rapidly build Bootstrap Panel Components.
7
3
  #
8
- # <code>
4
+ # @example Rendering a Bootstrap Panel Component in a view:
9
5
  # <%= panel_helper class: 'panel-primary' do |p| %>
10
6
  # <%= p.header { "Some Title" }
11
7
  # <%= p.body class: 'custom-class', id: 'custom-id' do %>
@@ -15,88 +11,85 @@ module Bootstrap3Helper
15
11
  # //HTML or Ruby
16
12
  # <% end %>
17
13
  # <% end %>
18
- # </code>
19
14
  #
20
15
  class Panel < Component
21
- # @description
22
- # - Creates a new Panel object.
16
+ # Creates a new Panel object.
23
17
  #
24
18
  # @param [Class] template - Template in which your are binding too.
25
19
  # @param [NilClass|String|Symbol|Hash] - Bootstrap class context, or options hash.
26
20
  # @param [Hash] opts
27
- # <code>
28
- # opts = {
29
- # id: [String|NilClass] - The ID, if you want one, for the element.
30
- # class: [String|NilClass] - Custom class for the element.
31
- # }
32
- # </code>
21
+ # @option opts [String] :id The ID of the element
22
+ # @option opts [String] :class Custom class for the component.
23
+ # @option opts [Hash] :data Any data attributes for the element.
33
24
  # @return [Panel]
34
25
  #
35
- def initialize(template, context_or_options = nil, opts = {})
26
+ def initialize(template, context_or_options = nil, opts = {}, &block)
36
27
  super(template)
37
28
  @context, args = parse_arguments(context_or_options, opts)
38
29
 
39
30
  @id = args.fetch(:id, '')
40
31
  @class = args.fetch(:class, '')
41
32
  @data = args.fetch(:data, nil)
33
+ @content = block || proc { '' }
42
34
  end
43
35
 
44
- # @description
45
- # - Used to generate the header component for the panel.
36
+ # Used to generate the header component for the panel.
46
37
  #
47
38
  # @param [Hash] args
39
+ # @option args [String] :id The ID of the element
40
+ # @option args [String] :class Custom class for the component.
41
+ # @yieldreturn [String]
48
42
  #
49
- def header(args = {})
50
- id = args.fetch(:id, '')
43
+ def header(args = {}, &block)
44
+ id = args.fetch(:id, '')
51
45
  klass = args.fetch(:class, '')
52
- @header = content_tag(:div, id: id, class: 'panel-heading ' + klass) do
53
- content_tag(:h3, class: 'panel-title') { yield if block_given? }
46
+
47
+ content_tag(:div, id: id, class: 'panel-heading ' + klass) do
48
+ content_tag(:h3, class: 'panel-title', &block)
54
49
  end
55
50
  end
56
51
 
57
- # @description
58
- # - Used to generate the body component for the panel.
52
+ # Used to generate the body component for the panel.
59
53
  #
60
54
  # @param [Hash] args
55
+ # @option args [String] :id The ID of the element
56
+ # @option args [String] :class Custom class for the component.
57
+ # @yieldreturn [String]
61
58
  #
62
- def body(args = {})
63
- id = args.fetch(:id, '')
59
+ def body(args = {}, &block)
60
+ id = args.fetch(:id, '')
64
61
  klass = args.fetch(:class, '')
65
- @body = content_tag(:div, id: id, class: 'panel-body ' + klass) do
66
- yield if block_given?
67
- end
62
+
63
+ content_tag(:div, id: id, class: 'panel-body ' + klass, &block)
68
64
  end
69
65
 
70
- # @description
71
- # - Used to generate the footer component for the panel.
66
+ # Used to generate the footer component for the panel.
72
67
  #
73
68
  # @param [Hash] args
69
+ # @option args [String] :id The ID of the element
70
+ # @option args [String] :class Custom class for the component.
71
+ # @yieldreturn [String]
74
72
  #
75
- def footer(args = {})
76
- id = args.fetch(:id, '')
73
+ def footer(args = {}, &block)
74
+ id = args.fetch(:id, '')
77
75
  klass = args.fetch(:class, '')
78
- @footer = content_tag(:div, id: id, class: 'panel-footer ' + klass) do
79
- yield if block_given?
80
- end
76
+
77
+ content_tag(:div, id: id, class: 'panel-footer ' + klass, &block)
81
78
  end
82
79
 
83
- # @description
84
- # - Used to render the html for the entire panel object.
80
+ # Used to render the html for the entire panel object.
85
81
  #
86
82
  # @return [String]
87
83
  #
88
84
  def to_s
89
- content = content_tag :div, id: @id, class: container_classes, data: @data do
90
- @header + @body + @footer
85
+ content_tag :div, id: @id, class: container_classes, data: @data do
86
+ @content.call(self)
91
87
  end
92
-
93
- content
94
88
  end
95
89
 
96
90
  private
97
91
 
98
- # @description
99
- # - Used to get the container css classes.
92
+ # Used to get the container css classes.
100
93
  #
101
94
  # @return [String]
102
95
  #