effective_form_inputs 1.1.15 → 1.2.0
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 +4 -4
- data/app/helpers/effective_bootstrap3_helper.rb +121 -0
- data/app/models/inputs/effective_radio_buttons/input.rb +2 -1
- data/app/models/inputs/effective_time_picker/input.rb +1 -1
- data/lib/effective_form_inputs/engine.rb +8 -1
- data/lib/effective_form_inputs/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 90f5076595ba940118763164668a2d02f0fcb5f9
|
4
|
+
data.tar.gz: b993340a53be0274d77d2bf36200bab4e477da78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f056ce1b75729929c346f35650f4e355a51ec48b5e1f51de0076d5bd6693e4fb08bec5719c9e8332c6983bcae5ce15ff874c717d1c7fcdfb7556442bd32ed31e
|
7
|
+
data.tar.gz: a0c6003793fb2c9d11aff6a91940a882ffa9bbe10c50c57416e3974f48a3713393984373c1fb365a560be0448e9bad9212a8edfb4f44b6bd2da345f47fb233c2
|
@@ -0,0 +1,121 @@
|
|
1
|
+
module EffectiveBootstrap3Helper
|
2
|
+
|
3
|
+
# An effective Bootstrap3 menu DSL
|
4
|
+
# Automatically puts in the 'active' class based on request path
|
5
|
+
|
6
|
+
# %ul.nav.navbar-nav.navbar-right
|
7
|
+
# = nav_link_to 'Sign In', new_user_session_path
|
8
|
+
# = nav_dropdown 'Settings' do
|
9
|
+
# = nav_link_to 'Account Settings', user_settings_path
|
10
|
+
# %li.divider
|
11
|
+
# = nav_link_to 'Sign In', new_user_session_path, method: :delete
|
12
|
+
def nav_link_to(label, path, opts = {})
|
13
|
+
content_tag(:li, class: ('active' if request.fullpath.include?(path))) do
|
14
|
+
link_to(label, path, opts)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def nav_dropdown(label, link_class: [], list_class: [], &block)
|
19
|
+
raise 'expected a block' unless block_given?
|
20
|
+
|
21
|
+
content_tag(:li, class: 'dropdown') do
|
22
|
+
content_tag(:a, class: 'dropdown-toggle', href: '#', 'data-toggle': 'dropdown', role: 'button', 'aria-haspopup': 'true', 'aria-expanded': 'false') do
|
23
|
+
label.html_safe + content_tag(:span, '', class: 'caret')
|
24
|
+
end + content_tag(:ul, class: 'dropdown-menu') { yield }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# An effective Bootstrap3 tabpanel DSL
|
29
|
+
# Inserts both the tablist and the tabpanel
|
30
|
+
|
31
|
+
# = tabs do
|
32
|
+
# = tab 'Imports' do
|
33
|
+
# %p Imports
|
34
|
+
|
35
|
+
# = tab 'Exports' do
|
36
|
+
# %p Exports
|
37
|
+
|
38
|
+
# If you pass active 'label' it will make that tab active. Otherwise first.
|
39
|
+
def tabs(active: nil, panel: {}, list: {}, content: {}, &block)
|
40
|
+
raise 'expected a block' unless block_given?
|
41
|
+
|
42
|
+
@_tab_mode = :panel
|
43
|
+
@_tab_active = (active || :first)
|
44
|
+
|
45
|
+
content_tag(:div, {role: 'tabpanel'}.merge(panel)) do
|
46
|
+
content_tag(:ul, {class: 'nav nav-tabs', role: 'tablist'}.merge(list)) { yield } # Yield to tab the first time
|
47
|
+
end + content_tag(:div, {class: 'tab-content'}.merge(content)) do
|
48
|
+
@_tab_mode = :content
|
49
|
+
@_tab_active = (active || :first)
|
50
|
+
yield # Yield tot ab the second time
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def tab(label, controls = nil, &block)
|
55
|
+
controls ||= label.to_s.parameterize.gsub('_', '-')
|
56
|
+
controls = controls[1..-1] if controls[0] == '#'
|
57
|
+
|
58
|
+
active = (@_tab_active == :first || @_tab_active == label)
|
59
|
+
|
60
|
+
@_tab_active = nil if @_tab_active == :first
|
61
|
+
|
62
|
+
if @_tab_mode == :panel # Inserting the label into the tabpanel top
|
63
|
+
content_tag(:li, role: 'presentation', class: ('active' if active)) do
|
64
|
+
content_tag(:a, href: '#' + controls, 'aria-controls': controls, 'data-toggle': 'tab', role: 'tab') do
|
65
|
+
label
|
66
|
+
end
|
67
|
+
end
|
68
|
+
else # Inserting the content into the tab itself
|
69
|
+
content_tag(:div, id: controls, class: "tab-pane#{' active' if active}", role: 'tabpanel') do
|
70
|
+
yield
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
### Icon Helpers for actions_column or elsewhere
|
76
|
+
def show_icon_to(path, options = {})
|
77
|
+
glyphicon_to('eye-open', path, {title: 'Show'}.merge(options))
|
78
|
+
end
|
79
|
+
|
80
|
+
def edit_icon_to(path, options = {})
|
81
|
+
glyphicon_to('edit', path, {title: 'Edit'}.merge(options))
|
82
|
+
end
|
83
|
+
|
84
|
+
def destroy_icon_to(path, options = {})
|
85
|
+
defaults = {title: 'Destroy', data: {method: :delete, confirm: 'Delete this item?'}}
|
86
|
+
glyphicon_to('trash', path, defaults.merge(options))
|
87
|
+
end
|
88
|
+
|
89
|
+
def settings_icon_to(path, options = {})
|
90
|
+
glyphicon_to('cog', path, {title: 'Settings'}.merge(options))
|
91
|
+
end
|
92
|
+
|
93
|
+
def ok_icon_to(path, options = {})
|
94
|
+
glyphicon_to('ok', path, {title: 'OK'}.merge(options))
|
95
|
+
end
|
96
|
+
|
97
|
+
def approve_icon_to(path, options = {})
|
98
|
+
glyphicon_to('ok', path, {title: 'Approve'}.merge(options))
|
99
|
+
end
|
100
|
+
|
101
|
+
def remove_icon_to(path, options = {})
|
102
|
+
glyphicon_to('remove', path, {title: 'Remove'}.merge(options))
|
103
|
+
end
|
104
|
+
|
105
|
+
def glyphicon_tag(icon, options = {})
|
106
|
+
if icon.to_s.start_with?('glyphicon-')
|
107
|
+
content_tag(:span, '', {class: "glyphicon #{icon}"}.merge(options))
|
108
|
+
else
|
109
|
+
content_tag(:span, '', {class: "glyphicon glyphicon-#{icon}"}.merge(options))
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def glyphicon_to(icon, path, options = {})
|
114
|
+
content_tag(:a, options.merge(href: path)) do
|
115
|
+
glyphicon_tag(icon)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
alias_method :bootstrap_icon_to, :glyphicon_to
|
119
|
+
alias_method :glyph_icon_to, :glyphicon_to
|
120
|
+
|
121
|
+
end
|
@@ -37,6 +37,7 @@ module Inputs
|
|
37
37
|
|
38
38
|
if options[:item_wrapper_tag]
|
39
39
|
active = (builder.object.send(options[:value_method]).to_s == value.to_s)
|
40
|
+
#active ||= (builder.object.send(options[:value_method]).to_s == Array(value).first.to_s)
|
40
41
|
|
41
42
|
content_tag(options[:item_wrapper_tag], item,
|
42
43
|
class: [
|
@@ -79,7 +80,7 @@ module Inputs
|
|
79
80
|
end
|
80
81
|
|
81
82
|
def value
|
82
|
-
options[:checked] || super
|
83
|
+
Array(options[:checked] || super).first
|
83
84
|
end
|
84
85
|
|
85
86
|
def options
|
@@ -17,10 +17,17 @@ module EffectiveFormInputs
|
|
17
17
|
Rails.application.config.to_prepare do
|
18
18
|
ActiveSupport.on_load :action_controller do
|
19
19
|
helper EffectiveFormInputsHelper
|
20
|
+
helper EffectiveBootstrap3Helper
|
20
21
|
end
|
21
22
|
end
|
22
23
|
end
|
23
24
|
|
24
|
-
|
25
|
+
initializer 'effective_form_inputs.check_for_effective_bootstrap' do |app|
|
26
|
+
Rails.application.config.to_prepare do
|
27
|
+
if defined?(EffectiveBootstrap)
|
28
|
+
raise 'effective_form_inputs and effective_bootstrap cannot be run alongside eachother. Sorry.'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
25
32
|
end
|
26
33
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_form_inputs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -87,6 +87,7 @@ files:
|
|
87
87
|
- app/assets/stylesheets/effective_select/overrides.scss
|
88
88
|
- app/assets/stylesheets/effective_select/select2.css
|
89
89
|
- app/assets/stylesheets/effective_time_picker/input.scss
|
90
|
+
- app/helpers/effective_bootstrap3_helper.rb
|
90
91
|
- app/helpers/effective_form_inputs_helper.rb
|
91
92
|
- app/models/effective/form_builder_inputs.rb
|
92
93
|
- app/models/effective/form_input.rb
|
@@ -142,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
143
|
version: '0'
|
143
144
|
requirements: []
|
144
145
|
rubyforge_project:
|
145
|
-
rubygems_version: 2.5.
|
146
|
+
rubygems_version: 2.4.5.1
|
146
147
|
signing_key:
|
147
148
|
specification_version: 4
|
148
149
|
summary: Collection of Form Inputs
|