angular-masonry-rails 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +22 -0
- data/README.md +24 -0
- data/lib/angular-masonry-rails.rb +11 -0
- data/lib/angular-masonry-rails/engine.rb +6 -0
- data/lib/angular-masonry-rails/sprockets.rb +3 -0
- data/lib/angular-masonry-rails/version.rb +5 -0
- data/vendor/assets/javascripts/angular-masonry.js +139 -0
- metadata +51 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a8408b4ff8405cbb973fac7f4cf62c76443798fb
|
4
|
+
data.tar.gz: 65bb61e2ac58682478cba692b0118b5e347fee21
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 57e0f6d0b780a81ae7a0d9e96e02e1f7f266ed5573b785c46a3c99ed251bc1e3e15978467775a5e3b200fe0ba769fc5cfeb4e1fee127c4f6aaab3f6885d51df7
|
7
|
+
data.tar.gz: ddaffaa0facf53adba7d756cd0f1657ace78f8bd97420413a647ffc55fcc14917ee5999fa8af5a9478efd7ffc564f8f56dfa3ce5fc5a221d4adf2f783370112d
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 Andrew H. Yi
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# angular-masonry-rails
|
2
|
+
|
3
|
+
angular-masonry-rails wraps the [Angular Masonry](https://github.com/passy/angular-masonry) library for use in Rails 4.0 and above. Assets will minify automatically during production.
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'angular-masonry-rails'
|
11
|
+
```
|
12
|
+
|
13
|
+
Add the following directive to your JavaScript manifest file (application.js):
|
14
|
+
|
15
|
+
//= require angular-masonry
|
16
|
+
|
17
|
+
## Contributing
|
18
|
+
|
19
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/AndrewHYi/angular-masonry-rails. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
|
20
|
+
|
21
|
+
|
22
|
+
## License
|
23
|
+
|
24
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
@@ -0,0 +1,139 @@
|
|
1
|
+
/*!
|
2
|
+
* angular-masonry 0.11.0
|
3
|
+
* Pascal Hartig, weluse GmbH, http://weluse.de/
|
4
|
+
* License: MIT
|
5
|
+
*/
|
6
|
+
(function () {
|
7
|
+
'use strict';
|
8
|
+
angular.module('wu.masonry', []).controller('MasonryCtrl', [
|
9
|
+
'$scope',
|
10
|
+
'$element',
|
11
|
+
'$timeout',
|
12
|
+
function controller($scope, $element, $timeout) {
|
13
|
+
var bricks = {};
|
14
|
+
var destroyed = false;
|
15
|
+
var self = this;
|
16
|
+
var timeout = null;
|
17
|
+
this.preserveOrder = false;
|
18
|
+
this.loadImages = true;
|
19
|
+
|
20
|
+
this.scheduleMasonry = function scheduleMasonry() {
|
21
|
+
$element.masonry('layout')
|
22
|
+
}
|
23
|
+
|
24
|
+
function defaultLoaded($element) {
|
25
|
+
$element.addClass('loaded');
|
26
|
+
}
|
27
|
+
this.appendBrick = function appendBrick(element, id) {
|
28
|
+
if (destroyed) {
|
29
|
+
return;
|
30
|
+
}
|
31
|
+
function _append() {
|
32
|
+
if (Object.keys(bricks).length === 0) {
|
33
|
+
$element.masonry('resize');
|
34
|
+
}
|
35
|
+
if (bricks[id] === undefined) {
|
36
|
+
// Keep track of added elements.
|
37
|
+
bricks[id] = true;
|
38
|
+
defaultLoaded(element);
|
39
|
+
$element.masonry('appended', element, true);
|
40
|
+
}
|
41
|
+
}
|
42
|
+
function _layout() {
|
43
|
+
self.scheduleMasonry('layout');
|
44
|
+
}
|
45
|
+
if (!self.loadImages) {
|
46
|
+
_append();
|
47
|
+
_layout();
|
48
|
+
} else if (self.preserveOrder) {
|
49
|
+
_append();
|
50
|
+
element.imagesLoaded(_layout);
|
51
|
+
} else {
|
52
|
+
element.imagesLoaded(function imagesLoaded() {
|
53
|
+
_append();
|
54
|
+
_layout();
|
55
|
+
});
|
56
|
+
}
|
57
|
+
};
|
58
|
+
this.removeBrick = function removeBrick(id, element) {
|
59
|
+
if (destroyed) {
|
60
|
+
return;
|
61
|
+
}
|
62
|
+
delete bricks[id];
|
63
|
+
$element.masonry('remove', element);
|
64
|
+
this.scheduleMasonry('layout');
|
65
|
+
};
|
66
|
+
this.destroy = function destroy() {
|
67
|
+
destroyed = true;
|
68
|
+
if ($element.data('masonry')) {
|
69
|
+
// Gently uninitialize if still present
|
70
|
+
$element.masonry('destroy');
|
71
|
+
}
|
72
|
+
$scope.$emit('masonry.destroyed');
|
73
|
+
bricks = [];
|
74
|
+
};
|
75
|
+
this.reload = function reload() {
|
76
|
+
$element.masonry();
|
77
|
+
$scope.$emit('masonry.reloaded');
|
78
|
+
};
|
79
|
+
}
|
80
|
+
]).directive('masonry', function masonryDirective() {
|
81
|
+
return {
|
82
|
+
restrict: 'AE',
|
83
|
+
controller: 'MasonryCtrl',
|
84
|
+
link: {
|
85
|
+
pre: function preLink(scope, element, attrs, ctrl) {
|
86
|
+
var $element = angular.element(element)
|
87
|
+
var attrOptions = scope.$eval(attrs.masonry || attrs.masonryOptions);
|
88
|
+
var options = angular.extend({
|
89
|
+
itemSelector: attrs.itemSelector || '.masonry-brick',
|
90
|
+
columnWidth: parseInt(attrs.columnWidth, 10) || attrs.columnWidth
|
91
|
+
}, attrOptions || {});
|
92
|
+
element.masonry(options);
|
93
|
+
var loadImages = scope.$eval(attrs.loadImages);
|
94
|
+
ctrl.loadImages = loadImages !== false;
|
95
|
+
var preserveOrder = scope.$eval(attrs.preserveOrder);
|
96
|
+
ctrl.preserveOrder = preserveOrder !== false && attrs.preserveOrder !== undefined;
|
97
|
+
var reloadOnShow = scope.$eval(attrs.reloadOnShow);
|
98
|
+
if (reloadOnShow !== false && attrs.reloadOnShow !== undefined) {
|
99
|
+
scope.$watch(function () {
|
100
|
+
return element.prop('offsetParent');
|
101
|
+
}, function (isVisible, wasVisible) {
|
102
|
+
if (isVisible && !wasVisible) {
|
103
|
+
ctrl.reload();
|
104
|
+
}
|
105
|
+
});
|
106
|
+
}
|
107
|
+
scope.$emit('masonry.created', element);
|
108
|
+
scope.$on('$destroy', ctrl.destroy);
|
109
|
+
}
|
110
|
+
}
|
111
|
+
};
|
112
|
+
}).directive('masonryBrick', function masonryBrickDirective() {
|
113
|
+
return {
|
114
|
+
restrict: 'AC',
|
115
|
+
require: '^masonry',
|
116
|
+
scope: true,
|
117
|
+
link: {
|
118
|
+
pre: function preLink(scope, element, attrs, ctrl) {
|
119
|
+
var id = scope.$id, index;
|
120
|
+
ctrl.appendBrick(element, id);
|
121
|
+
element.on('$destroy', function () {
|
122
|
+
ctrl.removeBrick(id, element);
|
123
|
+
});
|
124
|
+
scope.$on('masonry.reload', function () {
|
125
|
+
ctrl.scheduleMasonry('reloadItems');
|
126
|
+
ctrl.scheduleMasonry('layout');
|
127
|
+
});
|
128
|
+
scope.$watch('$index', function () {
|
129
|
+
if (index !== undefined && index !== scope.$index) {
|
130
|
+
ctrl.scheduleMasonry('reloadItems');
|
131
|
+
ctrl.scheduleMasonry('layout');
|
132
|
+
}
|
133
|
+
index = scope.$index;
|
134
|
+
});
|
135
|
+
}
|
136
|
+
}
|
137
|
+
};
|
138
|
+
});
|
139
|
+
}());
|
metadata
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: angular-masonry-rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.11.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Andrew H Yi
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-10-20 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Rails wrapper for AngularJS Masonry directive
|
14
|
+
email:
|
15
|
+
- andrew.yi50@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- MIT-LICENSE
|
21
|
+
- README.md
|
22
|
+
- lib/angular-masonry-rails.rb
|
23
|
+
- lib/angular-masonry-rails/engine.rb
|
24
|
+
- lib/angular-masonry-rails/sprockets.rb
|
25
|
+
- lib/angular-masonry-rails/version.rb
|
26
|
+
- vendor/assets/javascripts/angular-masonry.js
|
27
|
+
homepage: https://github.com/AndrewHYi/angular-masonry-rails
|
28
|
+
licenses:
|
29
|
+
- MIT
|
30
|
+
metadata: {}
|
31
|
+
post_install_message:
|
32
|
+
rdoc_options: []
|
33
|
+
require_paths:
|
34
|
+
- lib
|
35
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
requirements: []
|
46
|
+
rubyforge_project:
|
47
|
+
rubygems_version: 2.4.5.1
|
48
|
+
signing_key:
|
49
|
+
specification_version: 4
|
50
|
+
summary: Rails wrapper for AngularJS Masonry directive
|
51
|
+
test_files: []
|