bootstrap_builders 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -0
- data/app/assets/javascripts/bootstrap_builders.coffee +3 -0
- data/app/assets/javascripts/bootstrap_builders/bb-btn-responsive.coffee +9 -0
- data/app/assets/javascripts/bootstrap_builders/tabs.js.coffee +14 -0
- data/app/assets/javascripts/bootstrap_builders/view-port-detection.coffee +69 -0
- data/app/assets/stylesheets/bootstrap_builders.scss +1 -0
- data/app/assets/stylesheets/bootstrap_builders/bb-btn-responsive.scss +6 -0
- data/lib/bootstrap_builders/arguments_parser.rb +6 -6
- data/lib/bootstrap_builders/button.rb +21 -18
- data/lib/bootstrap_builders/tab.rb +2 -1
- data/lib/bootstrap_builders/table.rb +4 -1
- data/lib/bootstrap_builders/tabs.rb +1 -0
- data/lib/bootstrap_builders/version.rb +1 -1
- metadata +9 -5
- data/app/assets/javascripts/bootstrap_builders/application.js +0 -13
- data/app/assets/stylesheets/bootstrap_builders/application.css +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a0826b4f8fcc18607bb51d8737da9f2e4d9067c
|
4
|
+
data.tar.gz: 6647d3933ffcbadc667d2ac7e8a018eac3046dd7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc159ed82574a9eb51cfe5033df325857f86a4ed0f0cc5453efaa5e50058d38f2ea7daf6f7b23f1faa63148a69bef398baef09b0208ed4be904bb50f48b33f28
|
7
|
+
data.tar.gz: caa58021299bc802189b91e3d9a31eb645fc19d7c2635032ff14452576b9bd9c0a1f2ccb8c97d2e21d2775f7a7cb6593b3920beb4e9a402a3e2b4a33aba17928
|
data/README.md
CHANGED
@@ -14,6 +14,14 @@ module ApplicationHelper
|
|
14
14
|
end
|
15
15
|
```
|
16
16
|
|
17
|
+
Then add to your `application.js`:
|
18
|
+
```javascript
|
19
|
+
//= require bootstrap_builders
|
20
|
+
```
|
21
|
+
|
22
|
+
Then add to your `application.css`:
|
23
|
+
//= require bootstrap_builders
|
24
|
+
|
17
25
|
## Usage
|
18
26
|
|
19
27
|
### Panel
|
@@ -95,6 +103,7 @@ The classes "bb-table" and "table" are always added.
|
|
95
103
|
= bb_tabs :pills, :stacked do |tabs|
|
96
104
|
= tabs.tab "Title", "id-of-content-container" do
|
97
105
|
Content of tab
|
106
|
+
= tabs.tab "Load on demand", ajax_url: some_path
|
98
107
|
```
|
99
108
|
|
100
109
|
## Contributing to bootstrap_builders
|
@@ -0,0 +1,14 @@
|
|
1
|
+
$ ->
|
2
|
+
$("body").on "click", ".bb-tabs-container .nav li[data-ajax-url]", ->
|
3
|
+
li = $(this)
|
4
|
+
link = $("a", li)
|
5
|
+
content_id = link.attr("href").substring(1, 999)
|
6
|
+
content = $(".bb-tabs-container #" + content_id + " .bb-tab-container")
|
7
|
+
|
8
|
+
return if li.data("ajax-loaded")
|
9
|
+
li.data("ajax-loaded", true)
|
10
|
+
|
11
|
+
content.fadeOut 0, ->
|
12
|
+
$.get li.data("ajax-url"), (data) ->
|
13
|
+
content.html(data)
|
14
|
+
content.fadeIn "fast"
|
@@ -0,0 +1,69 @@
|
|
1
|
+
$ ->
|
2
|
+
sizes = {
|
3
|
+
xs: [0, 767],
|
4
|
+
sm: [768, 991],
|
5
|
+
md: [992, 1199],
|
6
|
+
lg: [1200, 999999]
|
7
|
+
}
|
8
|
+
|
9
|
+
$.bbViewPort = ->
|
10
|
+
width = window.innerWidth
|
11
|
+
|
12
|
+
for size of sizes
|
13
|
+
size_width = sizes[size][0]
|
14
|
+
size_height = sizes[size][1]
|
15
|
+
return size if width >= size_width && width < size_height
|
16
|
+
|
17
|
+
throw "Could not figure out the Bootstrap view port from this width: " + width
|
18
|
+
|
19
|
+
$.bbViewPortOrAbove = (given_size) ->
|
20
|
+
current_size = $.bbViewPort()
|
21
|
+
reached = false
|
22
|
+
|
23
|
+
for size of sizes
|
24
|
+
reached = true if size == current_size
|
25
|
+
|
26
|
+
if size == given_size
|
27
|
+
if reached
|
28
|
+
return false
|
29
|
+
else
|
30
|
+
return true
|
31
|
+
|
32
|
+
throw "Invalid size: " + given_size
|
33
|
+
|
34
|
+
$.bbViewPortOrBelow = (given_size) ->
|
35
|
+
current_size = $.bbViewPort()
|
36
|
+
reached = false
|
37
|
+
|
38
|
+
for size of sizes
|
39
|
+
reached = true if size == current_size
|
40
|
+
|
41
|
+
if given_size == size
|
42
|
+
if reached
|
43
|
+
return true
|
44
|
+
else
|
45
|
+
return false
|
46
|
+
|
47
|
+
throw "Invalid size: " + given_size
|
48
|
+
|
49
|
+
viewport_callbacks = []
|
50
|
+
$.bbViewPortChange = (func) -> viewport_callbacks.push(func)
|
51
|
+
|
52
|
+
resize_timeout = null
|
53
|
+
current_viewport = $.bbViewPort()
|
54
|
+
$.bbViewPortOnChanged = ->
|
55
|
+
clearTimeout(resize_timeout) if resize_timeout
|
56
|
+
|
57
|
+
resize_timeout = setTimeout( ->
|
58
|
+
$("body").removeClass("bb-view-port-xs bb-view-port-sm bb-view-port-md bb-view-port-lg")
|
59
|
+
new_viewport = $.bbViewPort()
|
60
|
+
$("body").addClass("bb-view-port-" + new_viewport)
|
61
|
+
|
62
|
+
if new_viewport != current_viewport
|
63
|
+
current_viewport = new_viewport
|
64
|
+
|
65
|
+
for number, viewport_callback of viewport_callbacks
|
66
|
+
viewport_callback.call()
|
67
|
+
, 200)
|
68
|
+
|
69
|
+
$(window).resize -> $.bbViewPortOnChanged()
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require bootstrap_builders/bb-btn-responsive
|
@@ -1,20 +1,20 @@
|
|
1
1
|
class BootstrapBuilders::ArgumentsParser
|
2
|
-
attr_reader :arguments
|
2
|
+
attr_reader :arguments, :arguments_hash
|
3
3
|
|
4
4
|
def initialize(args)
|
5
5
|
@arguments = args.fetch(:arguments)
|
6
6
|
|
7
7
|
if args[:argument_hash_default]
|
8
|
-
@
|
8
|
+
@arguments_hash = args.fetch(:argument_hash_default)
|
9
9
|
else
|
10
|
-
@
|
10
|
+
@arguments_hash = {}
|
11
11
|
end
|
12
12
|
|
13
13
|
if @arguments.last.is_a?(Hash)
|
14
|
-
@
|
14
|
+
@arguments_hash = @arguments_hash.merge(@arguments.pop)
|
15
15
|
end
|
16
16
|
|
17
|
-
@arguments << @
|
17
|
+
@arguments << @arguments_hash
|
18
18
|
|
19
19
|
@short_true_arguments = args[:short_true_arguments]
|
20
20
|
parse_short_true_arguments if @short_true_arguments
|
@@ -25,7 +25,7 @@ private
|
|
25
25
|
def parse_short_true_arguments
|
26
26
|
@arguments.delete_if do |argument|
|
27
27
|
if @short_true_arguments.include?(argument)
|
28
|
-
@
|
28
|
+
@arguments_hash[argument] = true
|
29
29
|
true
|
30
30
|
else
|
31
31
|
false
|
@@ -2,27 +2,21 @@ class BootstrapBuilders::Button
|
|
2
2
|
attr_accessor :label
|
3
3
|
|
4
4
|
def self.parse_url_args(args)
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
args_parser = BootstrapBuilders::ArgumentsParser.new(
|
6
|
+
arguments: args,
|
7
|
+
short_true_arguments: [:block, :confirm, :responsive, :lg, :md, :mini, :sm, :xs]
|
8
|
+
)
|
9
|
+
args = args_parser.arguments
|
10
10
|
|
11
11
|
is_an_active_record = BootstrapBuilders::IsAChecker.is_a?(args.first, "ActiveRecord::Base")
|
12
12
|
is_a_baza_model = BootstrapBuilders::IsAChecker.is_a?(args.first, "BazaModels::Model")
|
13
13
|
|
14
14
|
if args.first.is_a?(Array) || args.first.is_a?(String) || is_an_active_record || is_a_baza_model
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
real_args[:label] ||= args.shift if args.first.is_a?(String)
|
19
|
-
|
20
|
-
pass_args = [:block, :confirm, :lg, :md, :mini, :sm, :xs]
|
21
|
-
args.each do |arg|
|
22
|
-
real_args[arg] = true if pass_args.include?(arg)
|
15
|
+
args_parser.arguments_hash[:url] ||= args.shift
|
23
16
|
end
|
24
17
|
|
25
|
-
|
18
|
+
args_parser.arguments_hash[:label] ||= args.shift if args.first.is_a?(String)
|
19
|
+
args_parser.arguments_hash
|
26
20
|
end
|
27
21
|
|
28
22
|
def initialize(args)
|
@@ -35,6 +29,11 @@ class BootstrapBuilders::Button
|
|
35
29
|
@icon = args[:icon]
|
36
30
|
@can = args[:can]
|
37
31
|
@mini = args[:mini]
|
32
|
+
|
33
|
+
@data = args[:data] || {}
|
34
|
+
@data[:bb_icon] = @icon.present?
|
35
|
+
|
36
|
+
@args[:title] ||= @label if @args[:responsive] && @label.present?
|
38
37
|
end
|
39
38
|
|
40
39
|
def classes
|
@@ -42,6 +41,7 @@ class BootstrapBuilders::Button
|
|
42
41
|
@classes = BootstrapBuilders::ClassAttributeHandler.new(class: ["btn", "btn-default"])
|
43
42
|
@classes.add("btn-xs") if @mini
|
44
43
|
@classes.add(@class) if @class
|
44
|
+
@classes.add("bb-btn-responsive") if @args[:responsive]
|
45
45
|
|
46
46
|
size_classes = [:lg, :md, :sm, :xs]
|
47
47
|
size_classes.each do |size_class|
|
@@ -61,7 +61,7 @@ class BootstrapBuilders::Button
|
|
61
61
|
|
62
62
|
link_args = {
|
63
63
|
class: classes.classes,
|
64
|
-
data: @
|
64
|
+
data: @data,
|
65
65
|
method: @args[:method],
|
66
66
|
target: @args[:target],
|
67
67
|
remote: @args[:remote],
|
@@ -71,7 +71,11 @@ class BootstrapBuilders::Button
|
|
71
71
|
@context.link_to(@url, link_args) do
|
72
72
|
html = ""
|
73
73
|
html << @context.content_tag(:i, nil, class: ["fa", "fa-#{@icon}"]) if @icon
|
74
|
-
|
74
|
+
|
75
|
+
if @label && !@mini
|
76
|
+
html << @context.content_tag(:span, " #{@label}", class: "bb-btn-label")
|
77
|
+
end
|
78
|
+
|
75
79
|
html.strip.html_safe
|
76
80
|
end
|
77
81
|
end
|
@@ -151,7 +155,6 @@ private
|
|
151
155
|
|
152
156
|
def handle_confirm_argument
|
153
157
|
return unless @args[:confirm]
|
154
|
-
@
|
155
|
-
@args[:data][:confirm] = I18n.t("are_you_sure")
|
158
|
+
@data[:confirm] = I18n.t("are_you_sure")
|
156
159
|
end
|
157
160
|
end
|
@@ -1,10 +1,11 @@
|
|
1
1
|
class BootstrapBuilders::Tab
|
2
2
|
attr_accessor :active, :container_html
|
3
|
-
attr_reader :container_id, :label
|
3
|
+
attr_reader :ajax_url, :container_id, :label
|
4
4
|
|
5
5
|
def initialize(args)
|
6
6
|
@active = args[:active]
|
7
7
|
@label = args.fetch(:label)
|
8
|
+
@ajax_url = args[:ajax_url]
|
8
9
|
|
9
10
|
@container_id = args[:container_id].presence
|
10
11
|
@container_id ||= SecureRandom.hex
|
@@ -6,7 +6,10 @@ class BootstrapBuilders::Table
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def html
|
9
|
-
@context.content_tag(:table, attributes, &@blk)
|
9
|
+
buffer = @context.content_tag(:table, attributes, &@blk)
|
10
|
+
return buffer unless @args[:responsive]
|
11
|
+
|
12
|
+
@context.content_tag(:div, buffer, class: "table-responsive")
|
10
13
|
end
|
11
14
|
|
12
15
|
private
|
@@ -29,6 +29,7 @@ class BootstrapBuilders::Tabs
|
|
29
29
|
li = ul.add_ele(:li)
|
30
30
|
li.add_ele(:a, str: tab.label, attr: {href: "##{tab.container_id}"}, data: {toggle: "tab"})
|
31
31
|
li.classes << "active" if tab.active?
|
32
|
+
li.data[:ajax_url] = tab.ajax_url if tab.ajax_url.present?
|
32
33
|
end
|
33
34
|
|
34
35
|
tabs_content = container.add_ele(:div, classes: ["tab-content"])
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootstrap_builders
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kaspernj
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -230,8 +230,12 @@ files:
|
|
230
230
|
- MIT-LICENSE
|
231
231
|
- README.md
|
232
232
|
- Rakefile
|
233
|
-
- app/assets/javascripts/bootstrap_builders
|
234
|
-
- app/assets/
|
233
|
+
- app/assets/javascripts/bootstrap_builders.coffee
|
234
|
+
- app/assets/javascripts/bootstrap_builders/bb-btn-responsive.coffee
|
235
|
+
- app/assets/javascripts/bootstrap_builders/tabs.js.coffee
|
236
|
+
- app/assets/javascripts/bootstrap_builders/view-port-detection.coffee
|
237
|
+
- app/assets/stylesheets/bootstrap_builders.scss
|
238
|
+
- app/assets/stylesheets/bootstrap_builders/bb-btn-responsive.scss
|
235
239
|
- app/controllers/bootstrap_builders/application_controller.rb
|
236
240
|
- app/helpers/bootstrap_builders/application_helper.rb
|
237
241
|
- app/views/layouts/bootstrap_builders/application.html.erb
|
@@ -272,7 +276,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
272
276
|
version: '0'
|
273
277
|
requirements: []
|
274
278
|
rubyforge_project:
|
275
|
-
rubygems_version: 2.
|
279
|
+
rubygems_version: 2.2.2
|
276
280
|
signing_key:
|
277
281
|
specification_version: 4
|
278
282
|
summary: A library to generate Bootstrap HTML for Rails.
|
@@ -1,13 +0,0 @@
|
|
1
|
-
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
-
// listed below.
|
3
|
-
//
|
4
|
-
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
-
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
|
6
|
-
//
|
7
|
-
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
-
// compiled file.
|
9
|
-
//
|
10
|
-
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
11
|
-
// about supported directives.
|
12
|
-
//
|
13
|
-
//= require_tree .
|
@@ -1,15 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
-
* listed below.
|
4
|
-
*
|
5
|
-
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
-
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
|
7
|
-
*
|
8
|
-
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
9
|
-
* compiled file so the styles you add here take precedence over styles defined in any styles
|
10
|
-
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
|
11
|
-
* file per style scope.
|
12
|
-
*
|
13
|
-
*= require_tree .
|
14
|
-
*= require_self
|
15
|
-
*/
|