bootstrap_sidebar_rails 0.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 +7 -0
- data/README.md +37 -0
- data/lib/bootstrap_sidebar_rails/version.rb +3 -0
- data/lib/bootstrap_sidebar_rails.rb +8 -0
- data/vendor/assets/javascripts/sidebar.js +130 -0
- data/vendor/assets/stylesheets/sidebar.css +164 -0
- metadata +63 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c4169e57aa5290e78209a27d2d2b8a39b773c64b
|
4
|
+
data.tar.gz: 2b2371068094d68a99e1cd50b98b453ca33c7030
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 029a6d5c31518af4f2b4f8763975738435fe9e375ee4c27ae037095792c445e61385bfc92b55e1886c19843a94e48469257167bc0b119e5bb9a1f9c302258d93
|
7
|
+
data.tar.gz: 87cd6064b9682e6fa10b35d6112b792014ff9ed2ed4df11d94f2e94279a633732d67a5a33aadf8f573fae18af7660068fcbac08b307927c6239a11d48cec3bab
|
data/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Bootstrap Sidebar Rails
|
2
|
+
|
3
|
+
It wraps the https://github.com/asyraf9/bootstrap-sidebar library in a rails engine for simple use with the asset pipeline. The gem includes the development (non-minified) source for ease of exploration. The asset pipeline will minify in production.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'bootstrap_sidebar_rails'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install bootstrap_sidebar_rails
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
Add the following directive to your Javascript manifest file (application.js):
|
22
|
+
```
|
23
|
+
//= require sidebar
|
24
|
+
```
|
25
|
+
|
26
|
+
and to the CSS manifest (application.css)
|
27
|
+
|
28
|
+
```
|
29
|
+
*= require sidebar
|
30
|
+
```
|
31
|
+
## Contributing
|
32
|
+
|
33
|
+
1. Fork it ( https://github.com/valerykalashnikov/bootstrap_sidebar_rails/fork )
|
34
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
35
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
36
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
37
|
+
5. Create a new Pull Request
|
@@ -0,0 +1,130 @@
|
|
1
|
+
/* ========================================================================
|
2
|
+
* Bootstrap: sidebar.js v0.1
|
3
|
+
* ========================================================================
|
4
|
+
* Copyright 2011-2014 Asyraf Abdul Rahman
|
5
|
+
* Licensed under MIT
|
6
|
+
* ======================================================================== */
|
7
|
+
|
8
|
+
+function ($) {
|
9
|
+
'use strict';
|
10
|
+
|
11
|
+
// SIDEBAR PUBLIC CLASS DEFINITION
|
12
|
+
// ================================
|
13
|
+
|
14
|
+
var Sidebar = function (element, options) {
|
15
|
+
this.$element = $(element)
|
16
|
+
this.options = $.extend({}, Sidebar.DEFAULTS, options)
|
17
|
+
this.transitioning = null
|
18
|
+
|
19
|
+
if (this.options.parent) this.$parent = $(this.options.parent)
|
20
|
+
if (this.options.toggle) this.toggle()
|
21
|
+
}
|
22
|
+
|
23
|
+
Sidebar.DEFAULTS = {
|
24
|
+
toggle: true
|
25
|
+
}
|
26
|
+
|
27
|
+
Sidebar.prototype.show = function () {
|
28
|
+
if (this.transitioning || this.$element.hasClass('sidebar-open')) return
|
29
|
+
|
30
|
+
|
31
|
+
var startEvent = $.Event('show.bs.sidebar')
|
32
|
+
this.$element.trigger(startEvent);
|
33
|
+
if (startEvent.isDefaultPrevented()) return
|
34
|
+
|
35
|
+
this.$element
|
36
|
+
.addClass('sidebar-open')
|
37
|
+
|
38
|
+
this.transitioning = 1
|
39
|
+
|
40
|
+
var complete = function () {
|
41
|
+
this.$element
|
42
|
+
this.transitioning = 0
|
43
|
+
this.$element.trigger('shown.bs.sidebar')
|
44
|
+
}
|
45
|
+
|
46
|
+
if(!$.support.transition) return complete.call(this)
|
47
|
+
|
48
|
+
this.$element
|
49
|
+
.one($.support.transition.end, $.proxy(complete, this))
|
50
|
+
.emulateTransitionEnd(400)
|
51
|
+
}
|
52
|
+
|
53
|
+
Sidebar.prototype.hide = function () {
|
54
|
+
if (this.transitioning || !this.$element.hasClass('sidebar-open')) return
|
55
|
+
|
56
|
+
var startEvent = $.Event('hide.bs.sidebar')
|
57
|
+
this.$element.trigger(startEvent)
|
58
|
+
if(startEvent.isDefaultPrevented()) return
|
59
|
+
|
60
|
+
this.$element
|
61
|
+
.removeClass('sidebar-open')
|
62
|
+
|
63
|
+
this.transitioning = 1
|
64
|
+
|
65
|
+
var complete = function () {
|
66
|
+
this.transitioning = 0
|
67
|
+
this.$element
|
68
|
+
.trigger('hidden.bs.sidebar')
|
69
|
+
}
|
70
|
+
|
71
|
+
if (!$.support.transition) return complete.call(this)
|
72
|
+
|
73
|
+
this.$element
|
74
|
+
.one($.support.transition.end, $.proxy(complete, this))
|
75
|
+
.emulateTransitionEnd(400)
|
76
|
+
}
|
77
|
+
|
78
|
+
Sidebar.prototype.toggle = function () {
|
79
|
+
this[this.$element.hasClass('sidebar-open') ? 'hide' : 'show']()
|
80
|
+
}
|
81
|
+
|
82
|
+
var old = $.fn.sidebar
|
83
|
+
|
84
|
+
$.fn.sidebar = function (option) {
|
85
|
+
return this.each(function (){
|
86
|
+
var $this = $(this)
|
87
|
+
var data = $this.data('bs.sidebar')
|
88
|
+
var options = $.extend({}, Sidebar.DEFAULTS, $this.data(), typeof options == 'object' && option)
|
89
|
+
|
90
|
+
if (!data && options.toggle && option == 'show') option = !option
|
91
|
+
if (!data) $this.data('bs.sidebar', (data = new Sidebar(this, options)))
|
92
|
+
if (typeof option == 'string') data[option]()
|
93
|
+
})
|
94
|
+
}
|
95
|
+
|
96
|
+
$.fn.sidebar.Constructor = Sidebar
|
97
|
+
|
98
|
+
$.fn.sidebar.noConflict = function () {
|
99
|
+
$.fn.sidebar = old
|
100
|
+
return this
|
101
|
+
}
|
102
|
+
|
103
|
+
$(document).on('click.bs.sidebar.data-api', '[data-toggle="sidebar"]', function (e) {
|
104
|
+
var $this = $(this), href
|
105
|
+
var target = $this.attr('data-target')
|
106
|
+
|| e.preventDefault()
|
107
|
+
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')
|
108
|
+
var $target = $(target)
|
109
|
+
var data = $target.data('bs.sidebar')
|
110
|
+
var option = data ? 'toggle' : $this.data()
|
111
|
+
|
112
|
+
$target.sidebar(option)
|
113
|
+
})
|
114
|
+
|
115
|
+
$('html').on('click.bs.sidebar.autohide', function(event){
|
116
|
+
var $this = $(event.target);
|
117
|
+
var isButtonOrSidebar = $this.is('.sidebar, [data-toggle="sidebar"]') || $this.parents('.sidebar, [data-toggle="sidebar"]').length;
|
118
|
+
if (isButtonOrSidebar) {
|
119
|
+
return;
|
120
|
+
} else {
|
121
|
+
var $target = $('.sidebar');
|
122
|
+
$target.each(function(i, trgt) {
|
123
|
+
var $trgt = $(trgt);
|
124
|
+
if($trgt.data('bs.sidebar') && $trgt.hasClass('sidebar-open')) {
|
125
|
+
$trgt.sidebar('hide');
|
126
|
+
}
|
127
|
+
})
|
128
|
+
}
|
129
|
+
});
|
130
|
+
}(jQuery);
|
@@ -0,0 +1,164 @@
|
|
1
|
+
/* All the default sidebar styles */
|
2
|
+
/* toggle button settings */
|
3
|
+
/* Note: this disables the navbar-toggle class's hide function. set visibility with the boostrap visible/hidden classes */
|
4
|
+
/* Note: this also disables the navbar-header class positioning settings in small screens. */
|
5
|
+
.navbar.navbar-static .navbar-header {
|
6
|
+
float: left;
|
7
|
+
}
|
8
|
+
|
9
|
+
.navbar .navbar-toggle.toggle-left {
|
10
|
+
float: left;
|
11
|
+
margin-left: 15px;
|
12
|
+
}
|
13
|
+
|
14
|
+
.navbar .navbar-toggle.toggle-right {
|
15
|
+
float: right;
|
16
|
+
margin-right: 15px;
|
17
|
+
}
|
18
|
+
|
19
|
+
.navbar .navbar-toggle.toggle-sidebar, [data-toggle="sidebar"] {
|
20
|
+
display: block;
|
21
|
+
}
|
22
|
+
|
23
|
+
/* sidebar settings */
|
24
|
+
.sidebar {
|
25
|
+
position: fixed;
|
26
|
+
display: block;
|
27
|
+
top: 51px;
|
28
|
+
bottom: 0;
|
29
|
+
z-index: 1000;
|
30
|
+
min-height: 100%;
|
31
|
+
max-height: none;
|
32
|
+
overflow: auto;
|
33
|
+
}
|
34
|
+
|
35
|
+
.sidebar-left {
|
36
|
+
left: 0;
|
37
|
+
}
|
38
|
+
|
39
|
+
.sidebar-right {
|
40
|
+
right: 0;
|
41
|
+
}
|
42
|
+
|
43
|
+
/* css to override hiding the sidebar according to different screen sizes */
|
44
|
+
.row .sidebar.sidebar-left.sidebar-xs-show {
|
45
|
+
left: 0;
|
46
|
+
-webkit-transform: translate(0,0);
|
47
|
+
-ms-transform: translate(0,0);
|
48
|
+
-o-transform: translate(0,0);
|
49
|
+
-moz-transform: translate(0,0);
|
50
|
+
transform: translate(0,0);
|
51
|
+
}
|
52
|
+
|
53
|
+
/*right sidebar is untested */
|
54
|
+
.row .sidebar.sidebar-right.sidebar-xs-show {
|
55
|
+
right: 0;
|
56
|
+
-webkit-transform: translate(0,0);
|
57
|
+
-ms-transform: translate(0,0);
|
58
|
+
-o-transform: translate(0,0);
|
59
|
+
-moz-transform: translate(0,0);
|
60
|
+
transform: translate(0,0);
|
61
|
+
}
|
62
|
+
|
63
|
+
@media (min-width: 768px) {
|
64
|
+
.row .sidebar.sidebar-left.sidebar-sm-show {
|
65
|
+
left: 0;
|
66
|
+
-webkit-transform: translate(0,0);
|
67
|
+
-ms-transform: translate(0,0);
|
68
|
+
-o-transform: translate(0,0);
|
69
|
+
-moz-transform: translate(0,0);
|
70
|
+
transform: translate(0,0);
|
71
|
+
}
|
72
|
+
|
73
|
+
/*right sidebar is untested */
|
74
|
+
.row .sidebar.sidebar-right.sidebar-sm-show {
|
75
|
+
right: 0;
|
76
|
+
-webkit-transform: translate(0,0);
|
77
|
+
-ms-transform: translate(0,0);
|
78
|
+
-o-transform: translate(0,0);
|
79
|
+
-moz-transform: translate(0,0);
|
80
|
+
transform: translate(0,0);
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
@media (min-width: 992px) {
|
85
|
+
.row .sidebar.sidebar-left.sidebar-md-show {
|
86
|
+
left: 0;
|
87
|
+
-webkit-transform: translate(0,0);
|
88
|
+
-ms-transform: translate(0,0);
|
89
|
+
-o-transform: translate(0,0);
|
90
|
+
-moz-transform: translate(0,0);
|
91
|
+
transform: translate(0,0);
|
92
|
+
}
|
93
|
+
|
94
|
+
.row .sidebar.sidebar-right.sidebar-md-show {
|
95
|
+
right: 0;
|
96
|
+
-webkit-transform: translate(0,0);
|
97
|
+
-ms-transform: translate(0,0);
|
98
|
+
-o-transform: translate(0,0);
|
99
|
+
-moz-transform: translate(0,0);
|
100
|
+
transform: translate(0,0);
|
101
|
+
}
|
102
|
+
}
|
103
|
+
|
104
|
+
@media (min-width: 1170px) {
|
105
|
+
.row .sidebar.sidebar-left.sidebar-lg-show {
|
106
|
+
left: 0;
|
107
|
+
-webkit-transform: translate(0,0);
|
108
|
+
-moz-transform: translate(0,0);
|
109
|
+
-ms-transform: translate(0,0);
|
110
|
+
-o-transform: translate(0,0);
|
111
|
+
transform: translate(0,0);
|
112
|
+
}
|
113
|
+
|
114
|
+
.row .sidebar.sidebar-right.sidebar-lg-show {
|
115
|
+
right: 0;
|
116
|
+
-webkit-transform: translate(0,0);
|
117
|
+
-moz-transform: translate(0,0);
|
118
|
+
-ms-transform: translate(0,0);
|
119
|
+
-o-transform: translate(0,0);
|
120
|
+
transform: translate(0,0);
|
121
|
+
}
|
122
|
+
}
|
123
|
+
|
124
|
+
/* animation class - optional: without it the sidebar would just pop in and out*/
|
125
|
+
.sidebar-animate {
|
126
|
+
-webkit-transition: -webkit-transform 300ms ease;
|
127
|
+
-moz-transition: -moz-transform 300ms ease;
|
128
|
+
-o-transition: transform 300ms ease;
|
129
|
+
transition: transform 300ms ease;
|
130
|
+
}
|
131
|
+
|
132
|
+
/* Left panel positioning classes */
|
133
|
+
.sidebar.sidebar-left {
|
134
|
+
-webkit-transform: translate(-100%,0);
|
135
|
+
-moz-transform: translate(-100%,0);
|
136
|
+
-ms-transform: translate(-100%,0);
|
137
|
+
-o-transform: translate(-100%,0);
|
138
|
+
transform: translate(-100%,0);
|
139
|
+
}
|
140
|
+
|
141
|
+
.sidebar.sidebar-left.sidebar-open {
|
142
|
+
-webkit-transform: translate(0,0);
|
143
|
+
-moz-transform: translate(0,0);
|
144
|
+
-ms-transform: translate(0,0);
|
145
|
+
-o-transform: translate(0,0);
|
146
|
+
transform: translate(0,0);
|
147
|
+
}
|
148
|
+
|
149
|
+
/* TODO: TEST THIS! Right panel positioning classes*/
|
150
|
+
.sidebar.sidebar-right {
|
151
|
+
-webkit-transform: translate(-100%,0);
|
152
|
+
-moz-transform: translate(-100%,0);
|
153
|
+
-ms-transform: translate(-100%,0);
|
154
|
+
-o-transform: translate(-100%,0);
|
155
|
+
transform: translate(-100%,0);
|
156
|
+
}
|
157
|
+
|
158
|
+
.sidebar.sidebar-right.sidebar-open {
|
159
|
+
-webkit-transform: translate(0,0);
|
160
|
+
-moz-transform: translate(0,0);
|
161
|
+
-ms-transform: translate(0,0);
|
162
|
+
-o-transform: translate(0,0);
|
163
|
+
transform: translate(0,0);
|
164
|
+
}
|
metadata
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bootstrap_sidebar_rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Valery Kalashnikov
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-12-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: railties
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.1'
|
27
|
+
description: Bootstrap-sidebar Rails
|
28
|
+
email:
|
29
|
+
- kalashnikov.valeri@gmail.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- README.md
|
35
|
+
- lib/bootstrap_sidebar_rails.rb
|
36
|
+
- lib/bootstrap_sidebar_rails/version.rb
|
37
|
+
- vendor/assets/javascripts/sidebar.js
|
38
|
+
- vendor/assets/stylesheets/sidebar.css
|
39
|
+
homepage: ''
|
40
|
+
licenses:
|
41
|
+
- MIT
|
42
|
+
metadata: {}
|
43
|
+
post_install_message:
|
44
|
+
rdoc_options: []
|
45
|
+
require_paths:
|
46
|
+
- lib
|
47
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '0'
|
52
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
requirements: []
|
58
|
+
rubyforge_project:
|
59
|
+
rubygems_version: 2.2.2
|
60
|
+
signing_key:
|
61
|
+
specification_version: 4
|
62
|
+
summary: The bootstrap-sidebar JavaScript library ready to play with Rails
|
63
|
+
test_files: []
|