bootstrap_sidebar_rails 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|