bootstrap_ui_helper 0.3.0 → 0.3.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: 36f403069f00bd4734ef52b6121d05b875b458a4
4
- data.tar.gz: 7f0099b18df7f8af7e246bd4484473a41c9c68ed
3
+ metadata.gz: e26314f2f2b54fc50aefdafbc176c0ad65e5a463
4
+ data.tar.gz: 98f766aa947346510ebb84319f1a240dcd521d89
5
5
  SHA512:
6
- metadata.gz: 9e4588ec543f3ff3832ef45fa1f021ac0f363d393bd55cda257d3ca96d974179f296f302395d2f4dcaeacd9dae0047efb4c85052b8863f3dd5f1ca2ced62685a
7
- data.tar.gz: fbc507cd20ba350cabf8d1301677533f199efaa4d846fa3cba1951af60e0af2e42c592338e84ea0b2f86d8e237ff78c703887c85833680cb797b26b392e3327b
6
+ metadata.gz: d09a35756e59cc30cb942c824d2847a9f6871745699e0df2a0d8e6b7ad285a408c6cc8989e9662e528244aad891972fc10cf942fcc1e38219b8f520d4fd3750a
7
+ data.tar.gz: a731800e6c67852e1a6621129a1fa37dc213b8be8dca949793c8101014ef13eb6d1013f7ecd8a55373bba40f4eee56763523b0bb1b2da3c0b33ee4d384d48817
data/CHANGELOG.md ADDED
@@ -0,0 +1,2 @@
1
+ ##v0.3.1
2
+ - fix and improve dropdown helper
@@ -24,7 +24,7 @@ module ButtonHelper
24
24
  end
25
25
 
26
26
  prepend_class(options, layout, size)
27
- options[:role] = squeeze_n_strip("group #{options[:role]}")
27
+ options[:role] = 'group'
28
28
  options[:data] = (options[:data] || {}).merge({bui: 'btn_group', size: size})
29
29
 
30
30
  content_tag :div, options, &block
@@ -32,7 +32,7 @@ module ButtonHelper
32
32
 
33
33
  def button_toolbar(options={}, &block)
34
34
  prepend_class(options, 'btn-toolbar')
35
- prepend_role(options, 'toolbar')
35
+ options[:role] = 'toolbar'
36
36
 
37
37
  content_tag :div, options, &block
38
38
  end
@@ -1,6 +1,6 @@
1
1
  module DropdownHelper
2
2
 
3
- # TODO: support split button dropdowns
3
+ # TODO: support split button dropdowns; use blocks to add list items
4
4
  class DropdownListItem
5
5
  include FormatHelper
6
6
  include ActionView::Helpers
@@ -11,21 +11,21 @@ module DropdownHelper
11
11
  @options = options
12
12
  end
13
13
 
14
- def construct
14
+ def render
15
15
  content_tag :li, parse_type(options), options
16
16
  end
17
17
 
18
18
  def parse_type(options={})
19
- case options[:type].try(:to_sym)
19
+ case options.delete(:type).try(:to_sym)
20
20
  when :link
21
- return link_to(options[:text], options[:link], role: :menuitem,
22
- tabindex: -1)
21
+ return link_to(options.delete(:text), options.delete(:link),
22
+ role: :menuitem, tabindex: -1)
23
23
  when :header
24
24
  prepend_class(options, 'dropdown-header')
25
- return options[:text]
25
+ return options.delete(:text)
26
26
  when :divider
27
27
  prepend_class(options, 'divider')
28
- options[:role] = 'separator'
28
+ options[:role] = 'separator' and return nil
29
29
  else
30
30
  end
31
31
  end
@@ -34,30 +34,33 @@ module DropdownHelper
34
34
  class DropdownCreator
35
35
  include FormatHelper
36
36
  include ActionView::Helpers
37
+ include ButtonHelper
37
38
 
38
39
  attr_accessor :content
39
40
  attr_accessor :list
40
41
  attr_accessor :options
42
+ attr_accessor :btn_group_options
41
43
  attr_accessor :output_buffer
42
44
 
43
45
  def initialize(content, list, options)
44
- @content = content
45
- @list = list
46
- @options = options
46
+ @content = content
47
+ @list = list
48
+ @options = options
49
+ @btn_group_options = options.delete(:btn_group_html) || {}
47
50
  end
48
51
 
49
- def build
50
- navbar, btn_id, klass, align, direction, size, type = process_dropdown_options(options)
52
+ def render
53
+ navbar, btn_id, align, direction, size, type = process_dropdown_options(options)
51
54
 
52
55
  btn_options = button_options(content, size, type, btn_id, navbar)
53
56
  list_options = list_options(btn_id, align)
54
57
 
55
58
  tag = navbar ? :li : :div
56
- prepend_class(options, 'btn-group',
57
- (direction == :up ? 'dropup' : 'dropdown'), klass)
59
+ prepend_class(btn_group_options, 'btn-group',
60
+ (direction == :up ? 'dropup' : 'dropdown'))
58
61
 
59
- content_tag tag, options do
60
- (dropdown_button(btn_options) +
62
+ content_tag tag, btn_group_options do
63
+ (dropdown_button(btn_options.deep_merge(options)) +
61
64
  dropdown_list(list, list_options)).html_safe
62
65
  end
63
66
  end
@@ -65,25 +68,26 @@ module DropdownHelper
65
68
  private
66
69
  def process_dropdown_options(options)
67
70
  navbar = options.delete(:category).try(:to_sym) == :navbar
68
- btn_id = options.delete(:id) || "dropdown-#{rand(0...999)}"
69
- klass = options.delete(:class)
71
+ btn_id = options.delete(:id) || "dropdown-#{SecureRandom.hex(3)}"
70
72
  active = 'active' if options.delete(:active)
71
73
  align = options.delete(:align).try(:to_sym)
72
74
  direction = options.delete(:direction).try(:to_sym)
73
75
  size = get_btn_size(options.delete(:size))
74
76
  type = get_btn_type(options.delete(:type))
75
77
 
76
- [navbar, btn_id, "#{klass} #{active}", align, direction, size,
77
- "btn #{type}"]
78
+ prepend_class(options, active)
79
+
80
+ [navbar, btn_id, align, direction, size, "btn #{type}"]
78
81
  end
79
82
 
80
83
  def button_options(content, size, type, id, navbar)
81
84
  klass = navbar ? 'dropdown-toggle' : "dropdown-toggle #{size} #{type}"
85
+ prepend_class(options, klass)
82
86
 
83
87
  {
84
88
  content: content,
85
- class: klass,
86
89
  id: id,
90
+ type: 'button',
87
91
  data: {toggle: 'dropdown'},
88
92
  aria: {haspopup: true, expended: false},
89
93
  navbar: navbar
@@ -118,17 +122,16 @@ module DropdownHelper
118
122
 
119
123
  content_tag :ul, options do
120
124
  list_items.map do |item|
121
- DropdownListItem.new(item).construct
125
+ DropdownListItem.new(item).render
122
126
  end.join('').html_safe
123
127
  end
124
128
  end
125
-
126
129
  end
127
130
 
128
131
  def dropdown(content=nil, list=[], options={})
129
132
  return if content.blank? || list.empty?
130
133
 
131
- DropdownCreator.new(content, list, options).build
134
+ DropdownCreator.new(content, list, options).render
132
135
  end
133
136
 
134
137
  def navbar_dropdown(content=nil, list=[], options={})
@@ -4,9 +4,7 @@ module FormatHelper
4
4
  string.squeeze(' ').strip
5
5
  end
6
6
 
7
- %w(class role).each do |attr|
8
- define_method "prepend_#{attr}" do |options={}, *attrs|
9
- options[attr.to_sym] = squeeze_n_strip("#{attrs.join(' ')} #{options[attr.to_sym]}")
10
- end
7
+ def prepend_class(options, *attrs)
8
+ options[:class] = squeeze_n_strip("#{attrs.join(' ')} #{options[:class]}")
11
9
  end
12
10
  end
@@ -13,7 +13,7 @@ module IconHelper
13
13
  @options = options
14
14
  end
15
15
 
16
- def build
16
+ def render
17
17
  icon_options = {
18
18
  type: type,
19
19
  size: options.delete(:size).presence || :normal,
@@ -29,13 +29,13 @@ module IconHelper
29
29
  # stack = options.delete(:stack).presence
30
30
  }
31
31
 
32
- prepend_class(options, 'fa', build_fa_class(icon_options))
32
+ prepend_class(options, 'fa', render_fa_class(icon_options))
33
33
 
34
34
  content_tag :i, nil, options
35
35
  end
36
36
 
37
37
  private
38
- def build_fa_class(options)
38
+ def render_fa_class(options)
39
39
  type = "fa-#{options[:type]}"
40
40
  raise 'Invalid Icon Type!' if ValidIcons::VALID_ICONS.exclude?(type)
41
41
 
@@ -107,6 +107,6 @@ module IconHelper
107
107
  def icon(type=nil, options={})
108
108
  raise 'Please provide an icon type!' if type.blank?
109
109
 
110
- IconCreator.new(type, options).build
110
+ IconCreator.new(type, options).render
111
111
  end
112
112
  end
@@ -6,7 +6,7 @@ module ModalHelper
6
6
  button_options = options.delete(:button) || {}
7
7
 
8
8
  caption = button_options.delete(:caption) || 'Modal'
9
- modal_dialog_id = options[:id] || "modal-#{rand(0...999)}"
9
+ modal_dialog_id = options[:id] || "modal-#{SecureRandom.hex(3)}"
10
10
  button_options[:data] = (button_options[:data] || {}).merge({toggle: 'modal', target: "##{modal_dialog_id}"})
11
11
  size = case options.delete(:size).try(:to_sym)
12
12
  when :xsmall
@@ -1,3 +1,3 @@
1
1
  module BootstrapUiHelper
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootstrap_ui_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sen Zhang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-13 00:00:00.000000000 Z
11
+ date: 2015-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -46,6 +46,7 @@ extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
48
  - .gitignore
49
+ - CHANGELOG.md
49
50
  - Gemfile
50
51
  - LICENSE.txt
51
52
  - README.md