bootstrap-view-helpers 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,12 @@
1
1
  # Change Log
2
2
 
3
+ ## v 0.0.12
4
+
5
+ * added `modal` and `modal_trigger` for Bootstrap modal dialogs
6
+ * added `modal_alert` and `modal_confirm` which work similarly to their Javascript counterparts
7
+ * added `flash_messages` helper for flash support
8
+ * added `bs_table_tag` for consistent Bootstrap tables
9
+
3
10
  ## v 0.0.11
4
11
 
5
12
  * added `nav_bar_text`
data/README.md CHANGED
@@ -12,6 +12,10 @@ Includes support for:
12
12
  * navigation
13
13
  * nav bar
14
14
  * nav list
15
+ * modal dialogs
16
+ * modal_trigger
17
+ * modal_alert
18
+ * modal_confirm
15
19
  * icons
16
20
  * icons with text
17
21
  * buttons
@@ -29,7 +33,10 @@ Includes support for:
29
33
  * submit_tag_button
30
34
  * cancel_tag_button
31
35
  * alerts
36
+ * table helper
32
37
 
38
+ For the complete list of available helpers see the [API documentation](http://rubydoc.info/gems/bootstrap-view-helpers/frames/file/README.md).
39
+
33
40
  ## Note
34
41
 
35
42
  This is a new gem undergoing a lot of change. There is a chance that some backwards
@@ -91,7 +98,7 @@ Complete [API documentation](http://rubydoc.info/gems/bootstrap-view-helpers/fra
91
98
 
92
99
  <%= nav_bar_links(pull: 'right') do %>
93
100
  <%= nav_bar_text('logged in as admin') %>
94
- <%= nav_dropdown('Foo') do %>
101
+ <%= nav_dropdown('Dropdown 1') do %>
95
102
  <%= dropdown_item('One', 'foo')%>
96
103
  <% end %>
97
104
  <% end %>
@@ -108,6 +115,64 @@ Complete [API documentation](http://rubydoc.info/gems/bootstrap-view-helpers/fra
108
115
  <% end %>
109
116
  ```
110
117
 
118
+ ### Modal Dailogs an Friends
119
+
120
+ #### Simple Example Using Defaults
121
+
122
+ ```erb
123
+ <%= modal_trigger("Click to show modal", href: '#modal-1') %>
124
+
125
+ <%= modal(id: 'modal-1') do %>
126
+ <%= modal_header("Heading") %>
127
+ <%= modal_body("The body ...") %>
128
+ <%= modal_footer %>
129
+ <% end %>
130
+ ```
131
+
132
+ #### Block Form Using Other Modal Helpers
133
+
134
+ ```erb
135
+ <%= modal_trigger("Click to show modal", href: '#modal-2', class: 'btn btn-primary') %>
136
+
137
+ <%= modal(id: 'modal-2') do %>
138
+ <%= modal_header(close: false) do %>
139
+ Heading <small>(with no close button)</small>
140
+ <% end %>
141
+ <%= modal_body do %>
142
+ <h4>Modal Body</h4>
143
+ <p>With additional markup</p>
144
+ <% end %>
145
+ <%= modal_footer do %>
146
+ <%= button("Save", :primary) %>
147
+ <%= modal_footer_close_button("Dismiss") %>
148
+ <% end %>
149
+ <% end %>
150
+ ```
151
+
152
+ #### Modal Alert - Similar to JS Alert
153
+
154
+ ```erb
155
+ <%= modal_trigger("Click to show Alert", href: '#alert') %>
156
+ <%= modal_alert("Watch out", id: 'alert') %>
157
+
158
+ <%= modal_trigger("Click to show Alert w/block", href: '#alert-block') %>
159
+ <%= modal_alert(id: 'alert-block', header: 'Custom Header') do %>
160
+ This is some <b>bold</b> text from the <code>modal_alert</code> block.
161
+ <% end %>
162
+ ```
163
+
164
+ #### Modal Confirm - Similar to JS Confirm
165
+
166
+ ```erb
167
+ <%= modal_trigger("Click to show Confirm", href: '#confirm') %>
168
+ <%= modal_confirm("Watch out", id: 'confirm') %>
169
+
170
+ <%= modal_trigger("Click to show Confirm w/block", href: '#confirm-block') %>
171
+ <%= modal_confirm(id: 'confirm-block', header: 'Custom Header') do %>
172
+ This is some <b>bold</b> text from the <code>modal_confirm</code> block.
173
+ <% end %>
174
+ ```
175
+
111
176
  ### Icons
112
177
 
113
178
  See: http://twitter.github.io/bootstrap/base-css.html#icons
@@ -282,4 +347,57 @@ cancel_button_tag('Return', :small, :warning, url: '/', id: 'my-id')
282
347
  <li>Two</li>
283
348
  </ul>
284
349
  <% end %>
285
- ```
350
+ ```
351
+
352
+ ### Flash
353
+
354
+ [API Documentation](http://rubydoc.info/gems/bootstrap-view-helpers/Bootstrap/FlashHelper)
355
+
356
+ ```erb
357
+ # in a layout or view
358
+
359
+ <%= flash_messages %>
360
+ <%= flash_messages close: false %>
361
+ <%= flash_messages class: 'flash', id: 'my-flash' %>
362
+ ```
363
+
364
+ ```ruby
365
+ # override default mapping (e.g., in initializer)
366
+
367
+ Bootstrap::FlashHelper.mapping[:notice] = :success
368
+ Bootstrap::FlashHelper.mapping[:mistake] = :error
369
+ ```
370
+
371
+ ### Table Helper
372
+
373
+ * [API Documentation](http://rubydoc.info/gems/bootstrap-view-helpers/Bootstrap/TableHelper)
374
+ * [Bootstrap Documentation](http://twitter.github.io/bootstrap/base-css.html#tables)
375
+
376
+ Don't keep repeating the Bootstrap table classes:
377
+
378
+ ```erb
379
+ # instead of
380
+ <table class='table table-bordered table-striped table-hover'>
381
+ ...
382
+ </table>
383
+
384
+ # do this
385
+ <%= bs_table_tag do %>
386
+ ...
387
+ <% end %>
388
+ ```
389
+
390
+ Customize the classes used (e.g. in an initializer):
391
+
392
+ ```ruby
393
+ # change the default
394
+ Bootstrap::TableHelper.class_lists[:default] = 'table table-striped'
395
+
396
+ # create a custom class list
397
+ Bootstrap::TableHelper.class_lists[:admin] = 'admin table table-striped table-compact'
398
+
399
+ # use the custom list
400
+ <%= bs_table_tag(:admin) do %>
401
+ ...
402
+ <% end %>
403
+ ```
@@ -0,0 +1,8 @@
1
+ ## Alert
2
+
3
+ * icons (optional?) for alert/flash types
4
+
5
+ ## Nav
6
+
7
+ * nav_header (v. nav_list_header)
8
+
@@ -10,4 +10,12 @@ class BootstrapViewHelpersController < ApplicationController
10
10
  def index
11
11
  end
12
12
 
13
+ def flash_helper
14
+ flash.now[:notice] = ":notice is mapped to :info"
15
+ flash.now[:alert] = ":alert is mapped to :error"
16
+ flash.now[:warning] = 'Unrecognized types use Bootstrap default'
17
+ flash.now[:success] = "The operation was a success"
18
+ flash.now[:error] = "There was an error"
19
+ flash.now[:info] = "Here is some info"
20
+ end
13
21
  end
@@ -17,6 +17,7 @@
17
17
  # </ul>
18
18
  # <% end %>
19
19
  module Bootstrap::AlertHelper
20
+ InvalidAlertTypeError = Class.new(StandardError)
20
21
 
21
22
  ALERT_ATTRIBUTES = %w(error success info block)
22
23
 
@@ -28,31 +29,23 @@ module Bootstrap::AlertHelper
28
29
  # @option options [Boolean] :close if +false+, don't include a close link ('x')
29
30
  # @return [String] Returns html for alert
30
31
  def alert(*args, &block)
31
- text = args.shift unless block_given?
32
+ body = alert_body(args, &block)
32
33
  options = canonicalize_options(args.extract_options!)
33
34
  options = ensure_class(options, 'alert')
34
35
  options = add_alert_classes(options, args)
35
36
  heading = options.delete(:heading)
36
37
  show_close = options.delete(:close) != false
37
38
 
38
- if block_given?
39
- content_tag(:div, options) do
40
- alert_close(show_close) +
41
- alert_heading(heading) +
42
- capture(&block)
43
- end
44
- else
45
- content_tag(:div, options) do
46
- alert_close(show_close) +
47
- alert_heading(heading) +
48
- text
49
- end
39
+ content_tag(:div, options) do
40
+ alert_close(show_close) +
41
+ alert_heading(heading) +
42
+ body
50
43
  end
51
44
  end
52
45
 
53
46
  # Return an alert box close button
54
47
  #
55
- # @return [String] html for alert close button
48
+ # @return [String] html for alert close button unless _show_ is +false+
56
49
  def alert_close(show=true)
57
50
  return '' unless show
58
51
  content_tag(:button, '&times;'.html_safe, class: 'close', data: {dismiss: 'alert'})
@@ -60,7 +53,7 @@ module Bootstrap::AlertHelper
60
53
 
61
54
  # Return an alert heading
62
55
  #
63
- # @return [String] html for alert heading
56
+ # @return [String] html for alert heading unless _heading_ is blank.
64
57
  def alert_heading(heading)
65
58
  return '' unless heading.present?
66
59
  content_tag(:h4, heading)
@@ -68,6 +61,14 @@ module Bootstrap::AlertHelper
68
61
 
69
62
  private
70
63
 
64
+ def alert_body(args, &block)
65
+ if block_given?
66
+ capture(&block)
67
+ else
68
+ args.shift
69
+ end
70
+ end
71
+
71
72
  def add_alert_classes(options, alert_attributes)
72
73
  validate_alert_attributes(alert_attributes)
73
74
  classes = ['alert'] + alert_attributes.map { |e| "alert-#{e}" }
@@ -75,7 +76,7 @@ module Bootstrap::AlertHelper
75
76
  end
76
77
 
77
78
  def validate_alert_attributes(alert_attributes)
78
- alert_attributes.each { |e| raise(InvalidAlertAttributeError, e.inspect) unless ALERT_ATTRIBUTES.include?(e.to_s) }
79
+ alert_attributes.each { |e| raise(InvalidAlertTypeError, e.inspect) unless ALERT_ATTRIBUTES.include?(e.to_s) }
79
80
  end
80
81
 
81
82
 
@@ -0,0 +1,54 @@
1
+ # Rails helpers for producing flash messages styled as Bootstrap alert boxes.
2
+ #
3
+ # @example
4
+ # # in a layout or view
5
+ #
6
+ # flash_messages
7
+ # flash_messages close: false
8
+ # flash_messages class: 'flash', id: 'my-flash'
9
+ #
10
+ # # override default mapping
11
+ #
12
+ # Bootstrap::FlashHelper.mapping[:notice] = :success
13
+ # Bootstrap::FlashHelper.mapping[:mistake] = :error
14
+ #
15
+ module Bootstrap::FlashHelper
16
+ DEFAULT_MAPPING = {
17
+ :notice => :info,
18
+ :alert => :error,
19
+ }
20
+
21
+ mattr_accessor :mapping
22
+ self.mapping = DEFAULT_MAPPING.dup
23
+
24
+ # Returns Bootstrap alerts for each entry in +flash+
25
+ #
26
+ # @param options [Hash] unrecognized options are passed the the {Bootstrap::AlertHelper#alert} method
27
+ # @option options [Boolean] :close if +false+ the close button is not shown
28
+ # @return [String]
29
+ def flash_messages(options={})
30
+ messages = flash.map { |type, message| _bs_flash_for(type, message, options) }
31
+ safe_join(messages, "\n")
32
+ end
33
+
34
+ private
35
+
36
+ def _bs_flash_for(type, message, options={})
37
+ options = canonicalize_options(options)
38
+ alert_class = _bs_alert_class_for(type)
39
+ options = ensure_class(options, alert_class)
40
+
41
+ alert(message, options)
42
+ end
43
+
44
+ def _bs_alert_class_for(type)
45
+ mapped_type = _bs_map_type(type)
46
+
47
+ "alert-#{mapped_type}"
48
+ end
49
+
50
+ def _bs_map_type(type)
51
+ mapping[type.to_sym] || type
52
+ end
53
+
54
+ end
@@ -0,0 +1,123 @@
1
+ # Rails helper for producing Bootstrap modal dialogs
2
+ #
3
+ module Bootstrap::ModalHelper
4
+
5
+ # Returns an A tag to trigger (open) a Boostrap modal
6
+ def modal_trigger(text, options={})
7
+ options = canonicalize_options(options)
8
+ href = options.delete(:href) or raise(ArgumentError, 'missing :href option')
9
+ options.merge!(role: 'button', href: href, data: { toggle: 'modal'})
10
+ options = ensure_class(options, 'btn')
11
+
12
+ content_tag(:a, text, options)
13
+ end
14
+
15
+ # Returns a Bootstrap modal dialog
16
+ def modal(options={})
17
+ options = canonicalize_options(options)
18
+ options.has_key?(:id) or raise(ArgumentError, "missing :id option")
19
+ options = ensure_class(options, %w(modal hide fade))
20
+ options.merge!(tabindex: "-1", role: "dialog")
21
+
22
+ content_tag(:div, options) do
23
+ yield
24
+ end
25
+ end
26
+
27
+ # Returns a DIV for Bootstrap modal header
28
+ def modal_header(*args, &block)
29
+ options = canonicalize_options(args.extract_options!)
30
+ options = ensure_class(options, 'modal-header')
31
+ show_close = options.delete(:close) != false
32
+
33
+ content = block_given? ? capture(&block) : args.shift
34
+
35
+ content_tag(:div, options) do
36
+ modal_header_close_button(show_close) +
37
+ content_tag(:h3) do
38
+ content
39
+ end
40
+ end
41
+ end
42
+
43
+ # Returns a DIV for Bootstrap modal body
44
+ def modal_body(*args, &block)
45
+ options = canonicalize_options(args.extract_options!)
46
+ options = ensure_class(options, 'modal-body')
47
+ content = block_given? ? capture(&block) : args.shift
48
+
49
+ content_tag(:div, options) do
50
+ content
51
+ end
52
+ end
53
+
54
+ # Returns a DIV for Bootstrap modal footer
55
+ # Defaults to including #modal_footer_close_button.
56
+ def modal_footer(*args, &block)
57
+ options = canonicalize_options(args.extract_options!)
58
+ options = ensure_class(options, 'modal-footer')
59
+
60
+ content = if block_given?
61
+ capture(&block)
62
+ elsif args.size > 0
63
+ args.shift
64
+ else
65
+ modal_footer_close_button
66
+ end
67
+
68
+ content_tag(:div, options) do
69
+ content
70
+ end
71
+ end
72
+
73
+ # Returns a Bootstrap modal close button
74
+ def modal_header_close_button(show=true)
75
+ return ''.html_safe unless show
76
+ button("&times;".html_safe, type: 'button', class: 'close modal-close modal-header-close', data: {dismiss: 'modal'})
77
+ end
78
+
79
+ # Returns a close button for Bootstrap modal footer.
80
+ def modal_footer_close_button(*args)
81
+ options = canonicalize_options(args.extract_options!)
82
+ options = ensure_class(options, 'modal-close modal-footer-close')
83
+ options.merge!(data: {dismiss: 'modal'})
84
+ args.unshift("Close") if args.empty?
85
+
86
+ button(*args, options)
87
+ end
88
+
89
+ def modal_footer_ok_button(*args)
90
+ options = canonicalize_options(args.extract_options!)
91
+ options = ensure_class(options, 'modal-footer-ok')
92
+ options.merge!(data: {dismiss: 'modal'})
93
+ args.unshift("Ok") if args.empty?
94
+
95
+ button(*args, options)
96
+ end
97
+
98
+ def modal_alert(*args, &block)
99
+ options = canonicalize_options(args.extract_options!)
100
+ header = options.delete(:header) || "Alert"
101
+
102
+ modal(options) do
103
+ modal_header(header) +
104
+ modal_body(*args, &block) +
105
+ modal_footer
106
+ end
107
+ end
108
+
109
+ def modal_confirm(*args, &block)
110
+ options = canonicalize_options(args.extract_options!)
111
+ header = options.delete(:header) || "Confirmation"
112
+
113
+ modal(options) do
114
+ modal_header(header) +
115
+ modal_body(*args, &block) +
116
+ modal_footer do
117
+ modal_footer_close_button(icon('remove', 'Cancel')) +
118
+ modal_footer_ok_button(icon('ok', :white, 'Ok'), :primary)
119
+ end
120
+ end
121
+ end
122
+
123
+ end
@@ -15,7 +15,7 @@
15
15
  # <% end >
16
16
  #
17
17
  # <%= nav_dropdown(pull: 'right') %>
18
- # <%= nav_dropdown('Foo') do %>
18
+ # <%= nav_dropdown('Dropdown 1') do %>
19
19
  # <%= dropdown_item('One', 'foo')%>
20
20
  # <% end %>
21
21
  # <% end %>
@@ -0,0 +1,51 @@
1
+ # Rails helper for producing consistent Bootstrap styled tables.
2
+ #
3
+ # @example
4
+ # # in your view
5
+ #
6
+ # <%= bs_table_tag do %>
7
+ # ...
8
+ #
9
+ # <%= bs_table_tag(id: 'my-id', class: 'another-class') do %>
10
+ # ...
11
+ #
12
+ # # configure a custom set of classes:
13
+ # Bootstrap::TableHelper.classes[:admin] = %w(admin table table-striped table-compact)
14
+ #
15
+ # <%= bs_table_tag(:admin) do %>
16
+ #
17
+ #
18
+ module Bootstrap::TableHelper
19
+ InvalidClassListsKeyError = Class.new(StandardError)
20
+
21
+ DEFAULT_CLASS_LIST = %w(table table-bordered table-striped table-hover)
22
+
23
+ mattr_accessor :class_lists
24
+ self.class_lists = {default: DEFAULT_CLASS_LIST.dup}
25
+
26
+ # Produces a wrapper TABLE element with Bootstrap classes.
27
+ #
28
+ # @overload bs_table_tag(class_list=:default, options={})
29
+ # @param class_list [Symbol] a key of the +Bootstrap::class_lists+ Hash
30
+ # @param options [Hash] unrecognized options become attributes of the <table> element
31
+ # @return [String]
32
+ def bs_table_tag(*args, &block)
33
+ options = canonicalize_options(args.extract_options!)
34
+ table_classes = _get_table_classes(args.shift)
35
+ options = ensure_class(options, table_classes)
36
+
37
+ content_tag(:table, options) do
38
+ yield
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ def _get_table_classes(key)
45
+ key = key.presence || :default
46
+ self.class_lists.fetch(key)
47
+ rescue KeyError
48
+ raise(InvalidClassListsKeyError, "did not find key: #{key.inspect} -- Did you forget to set Bootstrap::TableHelper.class_lists[#{key.inspect}]?")
49
+ end
50
+
51
+ end
@@ -11,8 +11,8 @@
11
11
  <% end %>
12
12
 
13
13
  <%= nav_bar_links(pull: 'right') do %>
14
- <%= nav_dropdown('Foo') do %>
15
- <%= dropdown_item('One', 'foo') %>
14
+ <%= nav_dropdown('Dropdown 1') do %>
15
+ <%= dropdown_item('One', '#') %>
16
16
  <% end %>
17
17
  <% end %>
18
18
 
@@ -2,11 +2,15 @@
2
2
 
3
3
  <%= nav_list_header('Sidebar Header') %>
4
4
 
5
- <%= dropdown_item('Icons', bvh_path('icons')) %>
6
- <%= dropdown_item('Buttons', bvh_path('buttons')) %>
7
- <%= dropdown_item('Labels and badges', bvh_path('labels_and_badges')) %>
8
5
  <%= dropdown_item('Accordions', bvh_path('accordions')) %>
9
- <%= dropdown_item('Form helpers', bvh_path('form_helpers')) %>
10
6
  <%= dropdown_item('Alerts', bvh_path('alerts')) %>
7
+ <%= dropdown_item('Buttons', bvh_path('buttons')) %>
8
+ <%= dropdown_item('Icons', bvh_path('icons')) %>
9
+ <%= dropdown_item('Form helpers', bvh_path('form_helpers')) %>
10
+ <%= dropdown_item('Flash', bvh_path('flash_helper')) %>
11
+ <%= dropdown_item('Labels and badges', bvh_path('labels_and_badges')) %>
12
+ <%= dropdown_item('Modal Helpers', bvh_path('modal')) %>
13
+ <%= dropdown_item('Nav Helpers', bvh_path) %>
14
+ <%= dropdown_item('Table Helpers', bvh_path('tables')) %>
11
15
 
12
16
  <% end %>
@@ -0,0 +1 @@
1
+ <%= flash_messages class: 'foo' %>
@@ -0,0 +1,9 @@
1
+ <%= modal_trigger("Click to show Alert", href: '#alert') %>
2
+ <%= modal_trigger("Click to show Alert w/block", href: '#alert-block') %>
3
+
4
+ <%= modal_alert("Watch out", id: 'alert') %>
5
+
6
+ <%= modal_alert(id: 'alert-block', header: 'Custom Header') do %>
7
+ This is some <b>bold</b> text from the <code>modal_alert</code> block.
8
+ <% end %>
9
+
@@ -0,0 +1,9 @@
1
+ <%= modal_trigger("Click to show modal", href: '#modal-1') %>
2
+
3
+ <%= modal(id: 'modal-1') do %>
4
+ <%= modal_header("Heading") %>
5
+ <%= modal_body("The body ...") %>
6
+ <%= modal_footer %>
7
+ <% end %>
8
+
9
+
@@ -0,0 +1,15 @@
1
+ <%= modal_trigger("Click to show modal", href: '#modal-2', class: 'btn btn-primary') %>
2
+
3
+ <%= modal(id: 'modal-2') do %>
4
+ <%= modal_header(close: false) do %>
5
+ Heading <small>(with no close button)</small>
6
+ <% end %>
7
+ <%= modal_body do %>
8
+ <h4>Modal Body</h4>
9
+ <p>With additional markup</p>
10
+ <% end %>
11
+ <%= modal_footer do %>
12
+ <%= button("Save", :primary) %>
13
+ <%= modal_footer_close_button("Dismiss") %>
14
+ <% end %>
15
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <%= modal_trigger("Click to show Confirm", href: '#confirm') %>
2
+ <%= modal_trigger("Click to show Confirm w/block", href: '#confirm-block') %>
3
+
4
+ <%= modal_confirm("Watch out", id: 'confirm') %>
5
+
6
+ <%= modal_confirm(id: 'confirm-block', header: 'Custom Header') do %>
7
+ This is some <b>bold</b> text from the <code>modal_confirm</code> block.
8
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <% bs_table_tag do %>
2
+ ...
3
+ <% end %>
@@ -0,0 +1,18 @@
1
+ <%= bs_table_tag do %>
2
+ <tr>
3
+ <th>Id</th>
4
+ <th>Name</th>
5
+ </tr>
6
+ <tr>
7
+ <td>1</td>
8
+ <td>Art</td>
9
+ </tr>
10
+ <tr>
11
+ <td>2</td>
12
+ <td>Beth</td>
13
+ </tr>
14
+ <tr>
15
+ <td>3</td>
16
+ <td>Charles</td>
17
+ </tr>
18
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <% bs_table_tag(:user) do %>
2
+ ...
3
+ <% end %>
@@ -0,0 +1,25 @@
1
+ <h1>Flash Helper</h1>
2
+
3
+ <p>
4
+ <%= link_to('API Documentation', 'http://rubydoc.info/gems/bootstrap-view-helpers/Bootstrap/FlashHelper') %>
5
+ </p>
6
+
7
+ <h2>Example</h2>
8
+ <%= render partial: 'flash_helper' %>
9
+
10
+ <h2>Source</h2>
11
+ <%= bvh_show_source('bootstrap_view_helpers/_flash_helper') %>
12
+
13
+ <pre>
14
+ # in controller
15
+
16
+ def my_action
17
+ flash.now[:notice] = ":notice is mapped to :info"
18
+ flash.now[:alert] = ":alert is mapped to :error"
19
+ flash.now[:warning] = 'Unrecognized types use Bootstrap default'
20
+ flash.now[:success] = "The operation was a success"
21
+ flash.now[:error] = "There was an error"
22
+ flash.now[:info] = "Here is some info"
23
+ end
24
+ </pre>
25
+
@@ -0,0 +1,40 @@
1
+ <h1>Modal Helpers</h1>
2
+
3
+ <ul>
4
+ <li><%= link_to('Bootstrap Documentation', 'http://twitter.github.io/bootstrap/javascript.html#modals') %></li>
5
+ <li><%= link_to('API Documentation', 'http://rubydoc.info/gems/bootstrap-view-helpers/Bootstrap/ModalHelper') %>
6
+ </ul>
7
+
8
+ <h2>Basic Modal</h2>
9
+
10
+ <h3>Example</h3>
11
+ <%= render partial: 'modal_basic' %>
12
+
13
+ <h3>Source</h3>
14
+ <%= bvh_show_source('bootstrap_view_helpers/_modal_basic') %>
15
+
16
+ <h2>Modal Utilizing Options, block form</h2>
17
+
18
+ <h3>Example</h3>
19
+ <%= render partial: 'modal_block' %>
20
+
21
+ <h3>Source</h3>
22
+ <%= bvh_show_source('bootstrap_view_helpers/_modal_block') %>
23
+
24
+ <h2>Modal Alert</h2>
25
+ <p>Simulate a Javascript <code>alert</code>:</p>
26
+
27
+ <h3>Example</h3>
28
+ <%= render partial: 'modal_alert' %>
29
+
30
+ <h3>Source</h3>
31
+ <%= bvh_show_source('bootstrap_view_helpers/_modal_alert') %>
32
+
33
+ <h2>Modal Confirm</h2>
34
+ <p>Simulate a Javascript <code>confirm</code>:</p>
35
+
36
+ <h3>Example</h3>
37
+ <%= render partial: 'modal_confirm' %>
38
+
39
+ <h3>Source</h3>
40
+ <%= bvh_show_source('bootstrap_view_helpers/_modal_confirm') %>
@@ -0,0 +1,51 @@
1
+ <h1>Tables</h1>
2
+
3
+ <p><%= link_to('Bootstrap Documentation', 'http://twitter.github.io/bootstrap/base-css.html#tables') %>
4
+
5
+ <p>When all your tables are the same, don't keep repeating the bootstrap table classes.</p>
6
+
7
+ <p>Instead of this repeated for every table:</p>
8
+
9
+ <pre>
10
+ <%=h %(<table class='table table-bordered table-striped table-hover'>
11
+ ...
12
+ </table>) %>
13
+ </pre>
14
+
15
+ <p>do this instead</p>
16
+ <%= bvh_show_source('bootstrap_view_helpers/_table_default') %>
17
+
18
+ <h2>Example</h2>
19
+ <%= render partial: 'table_example' %>
20
+
21
+ <h2>Source</h2>
22
+ <%= bvh_show_source('bootstrap_view_helpers/_table_example') %>
23
+
24
+
25
+ <h2>Configuration</h2>
26
+
27
+ <p>Change the default table classes (e.g., in an initializer):</p>
28
+ <pre>
29
+ Bootstrap::TableHelper.classes[:default] = ['table', 'table-hover']
30
+ </pre>
31
+
32
+ <p>Define named sets of classes:<p>
33
+ <pre>
34
+ Bootstrap::TableHelper.classes[:user] = ['user', 'table', 'table-striped', 'table-hover']
35
+ Bootstrap::TableHelper.classes[:admin] = ['admin', 'table', 'table-striped', 'table-hover', 'table-bordered', 'table-compact']
36
+ </pre>
37
+
38
+ <p>Specify the name when you call the helper:</p>
39
+ <%= bvh_show_source('bootstrap_view_helpers/_table_with_class') %>
40
+
41
+ <h2>Other HTML Attributes</h2>
42
+ <p>Unrecognized options become html attributes of the table:<p>
43
+
44
+ <pre>
45
+ # this call
46
+ bs_table_tag(id: 'my-id', class: 'another-class')
47
+
48
+ # produces
49
+ <%=h %(<table class="other-class table table-bordered table-striped table-hover" id="my-id">) %>
50
+
51
+ </pre>
@@ -1,3 +1,3 @@
1
1
  module BootstrapViewHelpers
2
- VERSION = "0.0.11"
2
+ VERSION = "0.0.12"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootstrap-view-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-03 00:00:00.000000000 Z
12
+ date: 2013-06-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -282,27 +282,42 @@ files:
282
282
  - app/helpers/bootstrap/button_helper.rb
283
283
  - app/helpers/bootstrap/common_helper.rb
284
284
  - app/helpers/bootstrap/dropdown_helper.rb
285
+ - app/helpers/bootstrap/flash_helper.rb
285
286
  - app/helpers/bootstrap/form_helper.rb
286
287
  - app/helpers/bootstrap/icon_helper.rb
287
288
  - app/helpers/bootstrap/icon_renderer.rb
289
+ - app/helpers/bootstrap/modal_helper.rb
288
290
  - app/helpers/bootstrap/nav_helper.rb
289
291
  - app/helpers/bootstrap/stamp_helper.rb
292
+ - app/helpers/bootstrap/table_helper.rb
290
293
  - app/helpers/bootstrap_examples/application_helper.rb
294
+ - app/TODO.md
291
295
  - app/views/application/_bootstrap_view_helper_nav_bar.html.erb
292
296
  - app/views/application/_bootstrap_view_helper_side_bar.html.erb
293
297
  - app/views/bootstrap_view_helpers/_accordions.html.erb
294
298
  - app/views/bootstrap_view_helpers/_alert_block.html.erb
295
299
  - app/views/bootstrap_view_helpers/_alert_options.html.erb
296
300
  - app/views/bootstrap_view_helpers/_alert_types.html.erb
301
+ - app/views/bootstrap_view_helpers/_flash_helper.html.erb
297
302
  - app/views/bootstrap_view_helpers/_form_helper_1.html.erb
298
303
  - app/views/bootstrap_view_helpers/_icons.html.erb
304
+ - app/views/bootstrap_view_helpers/_modal_alert.html.erb
305
+ - app/views/bootstrap_view_helpers/_modal_basic.html.erb
306
+ - app/views/bootstrap_view_helpers/_modal_block.html.erb
307
+ - app/views/bootstrap_view_helpers/_modal_confirm.html.erb
308
+ - app/views/bootstrap_view_helpers/_table_default.html.erb
309
+ - app/views/bootstrap_view_helpers/_table_example.html.erb
310
+ - app/views/bootstrap_view_helpers/_table_with_class.html.erb
299
311
  - app/views/bootstrap_view_helpers/accordions.html.erb
300
312
  - app/views/bootstrap_view_helpers/alerts.html.erb
301
313
  - app/views/bootstrap_view_helpers/buttons.html.erb
314
+ - app/views/bootstrap_view_helpers/flash_helper.html.erb
302
315
  - app/views/bootstrap_view_helpers/form_helpers.html.erb
303
316
  - app/views/bootstrap_view_helpers/icons.html.erb
304
317
  - app/views/bootstrap_view_helpers/index.html.erb
305
318
  - app/views/bootstrap_view_helpers/labels_and_badges.html.erb
319
+ - app/views/bootstrap_view_helpers/modal.html.erb
320
+ - app/views/bootstrap_view_helpers/tables.html.erb
306
321
  - app/views/layouts/bootstrap_view_helpers.html.erb
307
322
  - config/routes.rb
308
323
  - lib/bootstrap-view-helpers/engine.rb