bh 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d19ffd1af7584fc65268ba67ae824b0c2f961cbe
4
- data.tar.gz: dc511c0f04f95149ce54c4ed3bf603cbaa9eb901
3
+ metadata.gz: 391d2887c75ed952c021d758e428f486de5f5f15
4
+ data.tar.gz: 15037d24fab141aaf1d7623e39aad31e44312197
5
5
  SHA512:
6
- metadata.gz: 8e21c514874f252828111769a977e9ddf4fa319b28463a2d13d1e31a6b623ed67ee596ab17a49a7bacf3f1d118a47dba512792281b6a98478fd7685f24fcad14
7
- data.tar.gz: d7607b91299a8b4bfafc883c78427461a078d4e5526388c135b0a25eaca0ff64de0874c4268360bbdd9e69eec9f5ad80c793c93c715384ebfdcdef88d1097a19
6
+ metadata.gz: b525dc2a2c86b8952d65e078e808a39e3c3cfa8eaa25d3b2d4fac61bb8a412594375a367cc3478d6d0b79a35c8b1ab2a3decd688c356cc0dfd5ddafce0596ccf
7
+ data.tar.gz: 5acccce283c5abaae55615bb02c3fece400ffac531c94456cd334893bfa2f1bef71e55949b8faf7d0245c133f6160bebd89bb14f1ca046baa0780b7be3721b72
@@ -6,6 +6,11 @@ For more information about changelogs, check
6
6
  [Keep a Changelog](http://keepachangelog.com) and
7
7
  [Vandamme](http://tech-angels.github.io/vandamme).
8
8
 
9
+ ## 1.0.1 - 2014-09-14
10
+
11
+ * [BUGFIX] Remove `form-control` class from `file_field` (#20)
12
+ * [BUGFIX] Allow `record_object` to be passed to `fields_for` (#22)
13
+
9
14
  ## 1.0.0 - 2014-09-09
10
15
 
11
16
  * No changes
data/README.md CHANGED
@@ -2,7 +2,7 @@ Bh · Bootstrap Helpers
2
2
  ======================
3
3
 
4
4
  Bh provides a set of helpers that streamlines the use of
5
- [Bootstrap components](http://getbootstrap.com/components) in Ruby views.
5
+ [Bootstrap 3 components](http://getbootstrap.com/components) in Ruby views.
6
6
 
7
7
  The **full documentation** is available at [rubydoc.info](http://rubydoc.info/github/Fullscreen/bh/master/frames).
8
8
 
@@ -13,7 +13,7 @@ The **full documentation** is available at [rubydoc.info](http://rubydoc.info/gi
13
13
  [![Online docs](http://img.shields.io/badge/docs-✓-green.svg)](http://rubydoc.info/github/Fullscreen/bh/master/frames)
14
14
  [![Gem Version](http://img.shields.io/gem/v/bh.svg)](http://rubygems.org/gems/bh)
15
15
 
16
- Bootstrap is a great framework, but requires to write many lines of HTML code
16
+ Bootstrap 3 is a great framework, but requires many lines of HTML code
17
17
  even for simple components.
18
18
  For instance, you need to write the following HTML to show a _dismissible alert_:
19
19
 
@@ -27,19 +27,18 @@ For instance, you need to write the following HTML to show a _dismissible alert_
27
27
  </div>
28
28
  ```
29
29
 
30
- Writing this for every _dismissible alert_ in a web site is cumbersome,
30
+ Writing this for every _dismissible alert_ is cumbersome,
31
31
  repetitive, and prone to errors.
32
32
 
33
- Bh offers a solution to this problem by means of a set of helper methods.
34
- The example above can be rewritten with just one line of code:
33
+ With Bh, you can achieve the same thing with just one line of code:
35
34
 
36
35
  ```rhtml
37
36
  <%= alert_box 'You accepted the Terms of service.', dismissible: true %>
38
37
  ```
39
38
 
40
- `alert_box` is only of the helpers provided by Bh and described below.
41
- You can use only the ones you need and even mix-and-match the "standard way"
42
- of writing Bootstrap components (many HTML lines) with the "Bh way".
39
+ `alert_box` is only one of the helpers provided by Bh.
40
+ You can use the helpers you need and even mix-and-match the "standard way"
41
+ of writing Bootstrap 3 components (many HTML lines) with the "Bh way".
43
42
 
44
43
  A comprehensive guide to Bh helpers
45
44
  ===================================
@@ -56,12 +55,11 @@ How to install
56
55
 
57
56
  Bh is meant to be included in Rails apps by adding this line to the Gemfile:
58
57
 
59
- gem 'bh', '~> 1.0.0'
58
+ gem 'bh', '~> 1.0'
60
59
 
61
- Since the gem follows [Semantic Versioning](http://semver.org),
62
- indicating the full version in your Gemfile (~> *major*.*minor*.*patch*)
63
- guarantees that your project won’t occur in any error when you `bundle update`
64
- and a new version of Bh is released.
60
+ Since the gem follows [Semantic Versioning](http://semver.org), indicating the
61
+ version number in your Gemfile in the *'~> major.minor'* format guarantees
62
+ that your project won’t break when you `bundle update` to a new version.
65
63
 
66
64
  Adding `bh` to your Gemfile is all you need!
67
65
  From now on, you will be able to use any Bh helper in your ERB views.
@@ -93,8 +91,12 @@ document the changes in CHANGELOG.md and README.md, bump the version, then run
93
91
  rake release
94
92
 
95
93
  Remember that the bh gem follows [Semantic Versioning](http://semver.org).
96
- Any new release that is fully backward-compatible should bump the *patch* version (1.0.x).
97
- Any new version that breaks compatibility should bump the *minor* version (1.x.0)
94
+
95
+ Any new release that makes backward-compatible bug fixes should bump the *patch* version (1.0.x).
96
+
97
+ Any new release that adds backward-compatible features should bump the *minor* version (1.x.0).
98
+
99
+ Any new version that breaks compatibility should bump the *major* version (2.0.0)
98
100
 
99
101
  How to contribute
100
102
  =================
@@ -2,6 +2,7 @@ require 'bh/helpers/form/check_box_helper'
2
2
  require 'bh/helpers/form/field_helper'
3
3
  require 'bh/helpers/form/fieldset_helper'
4
4
  require 'bh/helpers/form/fields_for_helper'
5
+ require 'bh/helpers/form/file_field_helper'
5
6
  require 'bh/helpers/form/legend_helper'
6
7
  require 'bh/helpers/form/radio_button_helper'
7
8
  require 'bh/helpers/form/select_helper'
@@ -14,6 +15,7 @@ module Bh
14
15
  include Form::FieldHelper
15
16
  include Form::FieldsetHelper
16
17
  include Form::FieldsForHelper
18
+ include Form::FileFieldHelper
17
19
  include Form::LegendHelper
18
20
  include Form::RadioButtonHelper
19
21
  include Form::SelectHelper
@@ -24,7 +26,7 @@ module Bh
24
26
  # strings in ActionView 3
25
27
  def self.textual_field_helpers
26
28
  non_textual_field_helpers = %w(label hidden_field range_field check_box
27
- radio_button select submit fields_for label)
29
+ file_field radio_button select submit fields_for label)
28
30
  field_helpers.map(&:to_s) - non_textual_field_helpers
29
31
  end
30
32
 
@@ -11,7 +11,7 @@ module Bh
11
11
  #
12
12
  # The message to display in the alert can either be passed as the first
13
13
  # parameter (in which case, the options are the second parameter), or as
14
- # a block (in which case, the options are the first paramter).
14
+ # a block (in which case, the options are the first parameter).
15
15
  # @example An alert with a plain-text message passed as the first parameter.
16
16
  # alert 'User updated successfully', dismissible: true
17
17
  # @example An alert with an HTML message passed as a block.
@@ -6,11 +6,15 @@ module Bh
6
6
  include BaseHelper
7
7
  include FieldsetHelper # for fieldset
8
8
 
9
- def fields_for(record_object = nil, fields_options = {}, &block)
9
+ def fields_for(record_name, record_object = nil, fields_options = {}, &block)
10
+ if record_object.is_a?(Hash) && record_object.extractable_options?
11
+ record_object, fields_options = nil, record_object
12
+ end
13
+
10
14
  fields_options[:layout] ||= @options[:layout]
11
15
  fields_options[:errors] ||= @options[:errors]
12
- title = fields_options.delete(:title) { record_object.to_s.humanize }
13
- fieldset(title) { super record_object, fields_options, &block }
16
+ title = fields_options.delete(:title) { record_name.to_s.humanize }
17
+ fieldset(title) { super record_name, record_object, fields_options, &block }
14
18
  end
15
19
  end
16
20
  end
@@ -0,0 +1,15 @@
1
+ require 'bh/helpers/form/base_helper'
2
+
3
+ module Bh
4
+ module Form
5
+ module FileFieldHelper
6
+ include BaseHelper
7
+
8
+ def file_field(method, options={})
9
+ base_field method, :file, options do
10
+ super method, options
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,3 +1,3 @@
1
1
  module Bh
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.1'
3
3
  end
@@ -3,7 +3,7 @@ require 'bh/helpers/form_for_helper'
3
3
  include Bh::FormForHelper
4
4
 
5
5
  def self.field_helpers_to_test
6
- types = %w(email file number password phone search telephone text url)
6
+ types = %w(email number password phone search telephone text url)
7
7
  if defined?(ActionView::VERSION) # only defined in ActionView >=4
8
8
  # types.concat %w(color date datetime datetime_local month time week)
9
9
  end
@@ -4,7 +4,8 @@ include Bh::FormForHelper
4
4
 
5
5
  describe 'fields_for' do
6
6
  let(:protect_against_forgery?) { false }
7
- let(:form) { form_for User.new, layout: layout, url: '/', &block }
7
+ let(:form) { form_for user, layout: layout, url: '/', &block }
8
+ let(:user) { User.new }
8
9
  let(:layout) { :whatever }
9
10
  let(:block) { Proc.new {|f| f.fields_for :address, options, &fields_block } }
10
11
  let(:options) { {} }
@@ -32,4 +33,17 @@ describe 'fields_for' do
32
33
  let(:options) { {layout: :horizontal} }
33
34
  it { expect(form).to match %r{<div class="form-group"><label class="col-sm-3 control-label" for.+?>Street</label>} }
34
35
  end
36
+
37
+ context 'given a record object' do
38
+ let(:block) { Proc.new {|f| f.fields_for :address, user.name, options, &fields_block } }
39
+
40
+ specify 'and no other options, uses the provided record object' do
41
+ expect(form).to include 'fieldset class="panel panel-default">'
42
+ end
43
+
44
+ context 'and other options, uses the provided record object and options' do
45
+ let(:options) { {title: 'Your address'} }
46
+ it { expect(form).to include '<div class="panel-heading">Your address</div>' }
47
+ end
48
+ end
35
49
  end
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+ require 'bh/helpers/form_for_helper'
3
+ include Bh::FormForHelper
4
+
5
+ describe 'file_field' do
6
+ let(:protect_against_forgery?) { false }
7
+ let(:form) { form_for user, layout: layout, errors: errors, url: '/', &block }
8
+ let(:user) { User.new }
9
+ let(:errors) { {} }
10
+ let(:block) { Proc.new {|f| f.file_field :name, accept: 'text/html'} }
11
+
12
+ describe 'given a basic layout' do
13
+ let(:layout) { :basic }
14
+ specify 'applies form-group to the container to the input' do
15
+ expect(form).to match %r{<div class="form-group"><label.+?>Name</label><(input|textarea)}
16
+ end
17
+
18
+ specify 'does not apply form-control to the input' do
19
+ expect(form).not_to match 'form-control'
20
+ end
21
+ end
22
+
23
+ describe 'given a horizontal layout' do
24
+ let(:layout) { :horizontal }
25
+ specify 'applies form-group to the container, col-sm-3.control-label to the label and col-sm-9 to the field container' do
26
+ expect(form).to match %r{<div class="form-group"><label class="col-sm-3 control-label".+?>Name</label><div class="col-sm-9"><(input|textarea)}
27
+ end
28
+
29
+ specify 'does not apply form-control to the input' do
30
+ expect(form).not_to match 'form-control'
31
+ end
32
+ end
33
+
34
+ describe 'given an inline layout' do
35
+ let(:layout) { :inline }
36
+ specify 'applies form-group to the container, sr-only to the label' do
37
+ expect(form).to match %r{<div class="form-group"><label class="sr-only".+?>Name</label><(input|textarea)}
38
+ end
39
+
40
+ specify 'does not apply form-control to the input' do
41
+ expect(form).not_to match 'form-control'
42
+ end
43
+
44
+ context 'given an error' do
45
+ before { user.errors.add :name, 'cannot be nil' }
46
+
47
+ specify 'applies sr-only to the error message' do
48
+ expect(form).to include '<span class="help-block text-left sr-only">cannot be nil</span>'
49
+ end
50
+ end
51
+ end
52
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bh
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claudio Baccigalupo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-09 00:00:00.000000000 Z
11
+ date: 2014-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -151,6 +151,7 @@ files:
151
151
  - lib/bh/helpers/form/field_helper.rb
152
152
  - lib/bh/helpers/form/fields_for_helper.rb
153
153
  - lib/bh/helpers/form/fieldset_helper.rb
154
+ - lib/bh/helpers/form/file_field_helper.rb
154
155
  - lib/bh/helpers/form/legend_helper.rb
155
156
  - lib/bh/helpers/form/radio_button_helper.rb
156
157
  - lib/bh/helpers/form/select_helper.rb
@@ -174,6 +175,7 @@ files:
174
175
  - spec/helpers/form/field_helper_spec.rb
175
176
  - spec/helpers/form/fields_for_helper_spec.rb
176
177
  - spec/helpers/form/fieldset_helper_spec.rb
178
+ - spec/helpers/form/file_field_helper_spec.rb
177
179
  - spec/helpers/form/legend_helper_spec.rb
178
180
  - spec/helpers/form/radio_button_helper_spec.rb
179
181
  - spec/helpers/form/select_helper_spec.rb
@@ -221,6 +223,7 @@ test_files:
221
223
  - spec/helpers/form/field_helper_spec.rb
222
224
  - spec/helpers/form/fields_for_helper_spec.rb
223
225
  - spec/helpers/form/fieldset_helper_spec.rb
226
+ - spec/helpers/form/file_field_helper_spec.rb
224
227
  - spec/helpers/form/legend_helper_spec.rb
225
228
  - spec/helpers/form/radio_button_helper_spec.rb
226
229
  - spec/helpers/form/select_helper_spec.rb