jquery-ioslist-rails 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad820eefba11ed3ff06ef5c95789fd3b05f2d722
|
4
|
+
data.tar.gz: ee71eed803665cc1fd2f3b6b85b81f5ab5cc98cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb95a1b5858bd8167f72d90bffa19ccedf3f406e779f4008c9645c3d5f29f65a9118fcdb352d1f7b0261dd2681366721cf7e953ee02f154ff112487832fe1e00
|
7
|
+
data.tar.gz: ed14197b310df3880832975d42fa4b66938dc644e98c07d277613cae03cd70c920357a6ffbd7c129657e914032dc61b6fa565e68c7a1dabfa6a2afb5ee81623d
|
data/README.md
CHANGED
@@ -22,20 +22,7 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
30
|
-
|
31
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
32
|
-
|
33
|
-
## Contributing
|
34
|
-
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/jquery-ioslist-rails. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
36
|
-
|
37
|
-
|
38
|
-
## License
|
39
|
-
|
40
|
-
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
41
|
-
|
25
|
+
Add to your application.js
|
26
|
+
```
|
27
|
+
//= require jquery.ioslist
|
28
|
+
```
|
Binary file
|
data/lib/jquery/ioslist/rails.rb
CHANGED
@@ -1,14 +1,8 @@
|
|
1
|
-
require "jquery/ioslist/rails/version"
|
2
|
-
|
3
1
|
module Jquery
|
4
2
|
module Ioslist
|
5
3
|
module Rails
|
6
|
-
|
7
|
-
|
8
|
-
app.config.assets.precompile += ['jquery.isolist.js']
|
9
|
-
app.config.assets.precompile += ['jquery.isolist.css']
|
10
|
-
end
|
11
|
-
end
|
4
|
+
require 'jquery/ioslist/rails/engine'
|
5
|
+
require 'jquery/ioslist/rails/version'
|
12
6
|
end
|
13
7
|
end
|
14
8
|
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
/*! iOSList - v2.0.0 - * https://brianhadaway.github.io/iOSList
|
2
|
+
* Copyright (c) 2014 Brian Hadaway; Licensed MIT */(function($, window, document, undefined) {
|
3
|
+
var IosList = function(elem, options) {
|
4
|
+
this.$elem = $(elem);
|
5
|
+
this.$elem.data('instance', this);
|
6
|
+
this.init(options);
|
7
|
+
};
|
8
|
+
|
9
|
+
IosList.prototype = {
|
10
|
+
defaults: {
|
11
|
+
classes: {
|
12
|
+
animated: 'ioslist-animated',
|
13
|
+
container: 'ioslist-wrapper',
|
14
|
+
hidden: 'ioslist-hidden',
|
15
|
+
stationaryHeader: 'ioslist-fake-header'
|
16
|
+
},
|
17
|
+
selectors: {
|
18
|
+
groupContainer: '.ioslist-group-container',
|
19
|
+
groupHeader: '.ioslist-group-header',
|
20
|
+
stationaryHeader: 'h2'
|
21
|
+
}
|
22
|
+
},
|
23
|
+
|
24
|
+
init: function(options) {
|
25
|
+
var scope = this,
|
26
|
+
isIOS = navigator.userAgent.match(/ipad|iphone|ipod/gi) ? true : false;
|
27
|
+
|
28
|
+
//set defaults
|
29
|
+
this.options = $.extend(true, {}, this.defaults, (options || {}));
|
30
|
+
this.elems = [];
|
31
|
+
//indicate that this is an ioslist
|
32
|
+
this.$elem.addClass('ioslist');
|
33
|
+
//wrap all the children
|
34
|
+
this.$elem.children().wrapAll(["<div class='", this.options.classes.container, "' data-ios='", isIOS, "'></div>"].join(''));
|
35
|
+
this.$elem.prepend(['<', this.options.selectors.stationaryHeader, '/>'].join(''));
|
36
|
+
this.$listWrapper = this.$elem.find('.' + this.options.classes.container);
|
37
|
+
this.$fakeHeader = this.$elem.find(this.options.selectors.stationaryHeader).eq(0);
|
38
|
+
this.$fakeHeader.addClass(this.options.classes.stationaryHeader);
|
39
|
+
|
40
|
+
this.$elem.find(this.options.selectors.groupContainer).each(function(index, elem) {
|
41
|
+
var $tmp_list = scope.$elem.find(scope.options.selectors.groupContainer).eq(index),
|
42
|
+
$tmp_header = $tmp_list.find(scope.options.selectors.groupHeader).eq(0),
|
43
|
+
$tmp_listHeight = $tmp_list.height(),
|
44
|
+
$tmp_listOffset = $tmp_list.position().top;
|
45
|
+
scope.elems.push({
|
46
|
+
'list': $tmp_list,
|
47
|
+
'header': $tmp_header,
|
48
|
+
'listHeight': $tmp_listHeight,
|
49
|
+
'headerText': $tmp_header.text(),
|
50
|
+
'headerHeight': $tmp_header.outerHeight(),
|
51
|
+
'listOffset': $tmp_listOffset,
|
52
|
+
'listBottom': $tmp_listHeight + $tmp_listOffset
|
53
|
+
});
|
54
|
+
});
|
55
|
+
|
56
|
+
this.$fakeHeader.text(this.elems[0].headerText);
|
57
|
+
|
58
|
+
this.$listWrapper.scroll(function() {
|
59
|
+
scope.testPosition();
|
60
|
+
});
|
61
|
+
|
62
|
+
},
|
63
|
+
|
64
|
+
testPosition: function() {
|
65
|
+
var currentTop = this.$listWrapper.scrollTop(),
|
66
|
+
topElement, offscreenElement, topElementBottom, i = 0;
|
67
|
+
|
68
|
+
while ((this.elems[i].listOffset - currentTop) <= 0) {
|
69
|
+
topElement = this.elems[i];
|
70
|
+
topElementBottom = topElement.listBottom - currentTop;
|
71
|
+
if (topElementBottom < -topElement.headerHeight) {
|
72
|
+
offscreenElement = topElement;
|
73
|
+
}
|
74
|
+
i++;
|
75
|
+
if (i >= this.elems.length) {
|
76
|
+
break;
|
77
|
+
}
|
78
|
+
}
|
79
|
+
|
80
|
+
if (topElementBottom < 0 && topElementBottom > -topElement.headerHeight) {
|
81
|
+
this.$fakeHeader.addClass(this.options.classes.hidden);
|
82
|
+
$(topElement.list).addClass(this.options.classes.animated);
|
83
|
+
} else {
|
84
|
+
this.$fakeHeader.removeClass(this.options.classes.hidden);
|
85
|
+
if (topElement) {
|
86
|
+
$(topElement.list).removeClass(this.options.classes.animated);
|
87
|
+
}
|
88
|
+
}
|
89
|
+
|
90
|
+
if (topElement) {
|
91
|
+
this.$fakeHeader.text(topElement.headerText);
|
92
|
+
}
|
93
|
+
}
|
94
|
+
};
|
95
|
+
|
96
|
+
$.fn.ioslist = function(options, args) {
|
97
|
+
if (typeof options === 'string') {
|
98
|
+
return this.each(function() {
|
99
|
+
$(this).data('instance')[options](args);
|
100
|
+
});
|
101
|
+
} else {
|
102
|
+
return this.each(function() {
|
103
|
+
new IosList(this, options);
|
104
|
+
});
|
105
|
+
}
|
106
|
+
};
|
107
|
+
|
108
|
+
})(jQuery, window, document);
|
@@ -0,0 +1,88 @@
|
|
1
|
+
.ioslist-wrapper{
|
2
|
+
height: 100%;
|
3
|
+
overflow-x: hidden;
|
4
|
+
overflow-y: auto;
|
5
|
+
position: absolute;
|
6
|
+
width: 100%;
|
7
|
+
}
|
8
|
+
|
9
|
+
|
10
|
+
.ioslist-group-container {
|
11
|
+
margin: 0;
|
12
|
+
min-height: 1px;
|
13
|
+
overflow: hidden;
|
14
|
+
padding: 24px 0 0 0;
|
15
|
+
position: relative;
|
16
|
+
}
|
17
|
+
.ioslist-group-header, .ioslist-fake-header {
|
18
|
+
background: #B8C1C8;
|
19
|
+
border-bottom: 1px solid #989EA4;
|
20
|
+
border-top: 1px solid #717D85;
|
21
|
+
color: #FFF;
|
22
|
+
font: normal 18px/21px Helvetica, Arial, sans-serif;
|
23
|
+
margin: 0;
|
24
|
+
padding: 2px 0 0 12px;
|
25
|
+
position: absolute;
|
26
|
+
text-shadow: 0 1px #646A6E;
|
27
|
+
-moz-text-shadow: 0 1px #646A6E;
|
28
|
+
-webkit-text-shadow: 0 1px #646A6E;
|
29
|
+
}
|
30
|
+
.ioslist-group-header {
|
31
|
+
bottom: auto;
|
32
|
+
min-height: 1px;
|
33
|
+
top: 0;
|
34
|
+
width: 273px;
|
35
|
+
}
|
36
|
+
.ioslist-fake-header {
|
37
|
+
width: 273px;
|
38
|
+
z-index: 1000;
|
39
|
+
}
|
40
|
+
|
41
|
+
.ioslist-fake-header.ioslist-hidden {
|
42
|
+
visibility: hidden;
|
43
|
+
}
|
44
|
+
.ioslist-group-container.ioslist-animated .ioslist-group-header {
|
45
|
+
bottom: 0;
|
46
|
+
top: auto;
|
47
|
+
}
|
48
|
+
|
49
|
+
/* Demo Styling */
|
50
|
+
body {
|
51
|
+
font: normal 20px Helvetica, Arial, sans-serif;
|
52
|
+
margin: 0;
|
53
|
+
}
|
54
|
+
|
55
|
+
#list1 {
|
56
|
+
height: 300px;
|
57
|
+
margin: 100px;
|
58
|
+
overflow: visible;
|
59
|
+
position: relative;
|
60
|
+
width: 300px;
|
61
|
+
zoom: 1;
|
62
|
+
}
|
63
|
+
|
64
|
+
.ioslist ul, .ioslist dl {
|
65
|
+
list-style: none;
|
66
|
+
margin: 0;
|
67
|
+
padding: 0;
|
68
|
+
}
|
69
|
+
|
70
|
+
.ioslist li, .ioslist dt {
|
71
|
+
font: normal 20px/45px Helvetica, Arial, sans-serif;
|
72
|
+
margin: 0;
|
73
|
+
padding: 0 0 0 12px;
|
74
|
+
white-space: nowrap;
|
75
|
+
}
|
76
|
+
|
77
|
+
.ioslist li + li, .ioslist dd + dt {
|
78
|
+
border-top: 1px solid #CCC;
|
79
|
+
}
|
80
|
+
|
81
|
+
.ioslist dd {
|
82
|
+
padding: 0 12px;
|
83
|
+
}
|
84
|
+
|
85
|
+
[data-ios="true"] .ioslist-group-header,
|
86
|
+
[data-ios="true"] .ioslist-fake-header {
|
87
|
+
width: 288px; /*scrollbars aren't visible in iOS devices, so make the headers wider */
|
88
|
+
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jquery-ioslist-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kirill
|
@@ -69,9 +69,12 @@ files:
|
|
69
69
|
- Rakefile
|
70
70
|
- bin/console
|
71
71
|
- bin/setup
|
72
|
+
- jquery-ioslist-rails-0.1.0.gem
|
72
73
|
- jquery-ioslist-rails.gemspec
|
73
74
|
- lib/jquery/ioslist/rails.rb
|
74
75
|
- lib/jquery/ioslist/rails/version.rb
|
76
|
+
- vendor/assets/javascripts/jquery.ioslist.js
|
77
|
+
- vendor/assets/stylesheets/jquery.isolist.css
|
75
78
|
homepage: https://github.com/cderche/jquery-ioslist-rails
|
76
79
|
licenses:
|
77
80
|
- MIT
|