mootools-plus 0.1.6 → 0.2.0
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.
- data/CHANGELOG.md +7 -0
- data/README.md +41 -4
- data/lib/mootools-plus/rails/version.rb +1 -1
- data/vendor/assets/javascripts/mootools-plus.js +5 -0
- data/vendor/assets/javascripts/mootools-plus/array.js +31 -36
- data/vendor/assets/javascripts/mootools-plus/{logger.js → core/logger.js} +3 -6
- data/vendor/assets/javascripts/mootools-plus/element.js +23 -28
- data/vendor/assets/javascripts/mootools-plus/ui/dropdown.js +116 -0
- data/vendor/assets/javascripts/namespace.js +46 -0
- metadata +9 -14
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -8,7 +8,7 @@ Add the gem in your `Gemfile`:
|
|
8
8
|
|
9
9
|
```ruby
|
10
10
|
group :assets do
|
11
|
-
gem 'mootools-plus', '~> 0.
|
11
|
+
gem 'mootools-plus', '~> 0.2.0'
|
12
12
|
end
|
13
13
|
```
|
14
14
|
|
@@ -17,9 +17,7 @@ Then `bundle install` it.
|
|
17
17
|
Add mootools-plus to the asset pipeline:
|
18
18
|
|
19
19
|
```javascript
|
20
|
-
//= require mootools-plus
|
21
|
-
//= require mootools-plus/array
|
22
|
-
//= require mootools-plus/element
|
20
|
+
//= require mootools-plus
|
23
21
|
```
|
24
22
|
|
25
23
|
Enjoy!
|
@@ -142,6 +140,45 @@ Alias of Array#filter
|
|
142
140
|
|
143
141
|
Alias of Array#filterOne
|
144
142
|
|
143
|
+
### ui.Dropdown
|
144
|
+
|
145
|
+
#### Use
|
146
|
+
|
147
|
+
```haml
|
148
|
+
%div
|
149
|
+
%header
|
150
|
+
%a= 'Pipo'
|
151
|
+
%ol
|
152
|
+
%li
|
153
|
+
%a= 'item 1'
|
154
|
+
%li
|
155
|
+
%a= 'item 2'
|
156
|
+
%li
|
157
|
+
%a= 'item 3'
|
158
|
+
%li
|
159
|
+
%a= 'item 4'
|
160
|
+
%li
|
161
|
+
%a= 'item 5'
|
162
|
+
%li
|
163
|
+
%a= 'item 6'
|
164
|
+
```
|
165
|
+
|
166
|
+
```javascript
|
167
|
+
new ui.Dropdown($$('div')[0])
|
168
|
+
```
|
169
|
+
|
170
|
+
[Example](http://jsfiddle.net/9BZw9/)
|
171
|
+
|
172
|
+
#### Options
|
173
|
+
|
174
|
+
```javascript
|
175
|
+
{
|
176
|
+
panel: {
|
177
|
+
openAtStart: false // Set to true to open the dropdown at initialization
|
178
|
+
}
|
179
|
+
}
|
180
|
+
```
|
181
|
+
|
145
182
|
## Changelog
|
146
183
|
|
147
184
|
View [CHANGELOG](https://github.com/caedes/mootools-plus/blob/stable/CHANGELOG.md) of the latest stable version.
|
@@ -1,42 +1,37 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
},
|
1
|
+
Array.implement({
|
2
|
+
getFirst: function(n){
|
3
|
+
return (n || n === 0) ? this.slice(0, n) : this[0]
|
4
|
+
},
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
getLast: function(n){
|
7
|
+
if (n >= this.length) return this
|
8
|
+
return (n || n === 0) ? this.slice(this.length - n, this.length) : this[this.length - 1]
|
9
|
+
},
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
11
|
+
deleteIf: function(fn){
|
12
|
+
for (var i = 0, length = this.length; i < length; i++) {
|
13
|
+
var el = this.shift()
|
14
|
+
if (!fn.call(el)) this.push(el)
|
15
|
+
}
|
16
|
+
return this
|
17
|
+
},
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
filterOne: function(fn, bind){
|
20
|
+
return this.filter(fn, bind).getFirst()
|
21
|
+
},
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
isBlank: function(){
|
24
|
+
return this.length == 0
|
25
|
+
},
|
27
26
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
hasAny: function(){
|
28
|
+
return !this.isBlank()
|
29
|
+
}
|
30
|
+
})
|
32
31
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
}
|
40
|
-
else {
|
41
|
-
if (console && console.error) console.error('Mootools is not yet installed.')
|
42
|
-
}
|
32
|
+
Array.alias('first', 'getFirst')
|
33
|
+
Array.alias('last', 'getLast')
|
34
|
+
Array.alias('select', 'filter')
|
35
|
+
Array.alias('selectOne', 'filterOne')
|
36
|
+
Array.alias('compact', 'clean')
|
37
|
+
Array.alias('isEmpty', 'isBlank')
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
var Logger = new Class()
|
1
|
+
(function(){
|
2
|
+
var Logger = new Class('core.Logger', {})
|
3
3
|
|
4
4
|
Logger.log = function(param){
|
5
5
|
Logger.trace(param, 'log')
|
@@ -37,7 +37,4 @@ if (window.MooTools) {
|
|
37
37
|
}
|
38
38
|
}
|
39
39
|
}
|
40
|
-
}
|
41
|
-
else {
|
42
|
-
if (console && console.error) console.error('Mootools is not yet installed.')
|
43
|
-
}
|
40
|
+
})()
|
@@ -1,33 +1,28 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
},
|
1
|
+
Element.implement({
|
2
|
+
hasElement: function(tag){
|
3
|
+
return (tag == undefined) ? (this.getChildren().length > 0) : (this.getElement(tag) != null)
|
4
|
+
},
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
hasElements: function(tag){
|
7
|
+
return (tag == undefined) ? (this.getChildren().length > 0) : (this.getElements(tag).length > 1)
|
8
|
+
},
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
hasEvent: function(eventType, fn){
|
11
|
+
var myEvents = this.retrieve('events')
|
12
|
+
return myEvents && myEvents[eventType] && (fn == undefined || myEvents[eventType].keys.contains(fn))
|
13
|
+
},
|
15
14
|
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
hasParent: function(tag){
|
16
|
+
return (tag == undefined) ? (this.getParent().length > 0) : (this.getParent(tag) != null)
|
17
|
+
},
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
disable: function(){
|
20
|
+
this.set('disabled', true)
|
21
|
+
return this
|
22
|
+
},
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
}
|
31
|
-
else {
|
32
|
-
if (console && console.error) console.error('Mootools is not yet installed.')
|
33
|
-
}
|
24
|
+
enable: function(){
|
25
|
+
this.set('disabled', false)
|
26
|
+
return this
|
27
|
+
}
|
28
|
+
})
|
@@ -0,0 +1,116 @@
|
|
1
|
+
(function(){
|
2
|
+
|
3
|
+
/**
|
4
|
+
* DROPDOWN
|
5
|
+
*/
|
6
|
+
|
7
|
+
var Dropdown = new Class('ui.Dropdown', {
|
8
|
+
Implements: [Options],
|
9
|
+
|
10
|
+
options: {
|
11
|
+
header: {},
|
12
|
+
panel: {}
|
13
|
+
},
|
14
|
+
|
15
|
+
initialize: function(element, options){
|
16
|
+
this.element = element
|
17
|
+
this.options = Object.merge(this.options, options)
|
18
|
+
this.build()
|
19
|
+
this.addEvents()
|
20
|
+
this.element.store('dropdown', this)
|
21
|
+
},
|
22
|
+
|
23
|
+
build: function(){
|
24
|
+
this.header = new ui.DropdownHeader(this.element.getElement('header'), this.options.header)
|
25
|
+
this.panel = new ui.DropdownPanel(this.element.getElement('ol'), this.options.panel)
|
26
|
+
},
|
27
|
+
|
28
|
+
addEvents: function(){
|
29
|
+
this.header.addEvent('onDropdownHeaderEnter', this.panel.show.bind(this.panel))
|
30
|
+
this.header.addEvent('onDropdownHeaderLeave', this.panel.hide.bind(this.panel))
|
31
|
+
this.panel.addEvent('onDropdownPanelEnter', this.header.killTimer.bind(this.header))
|
32
|
+
this.panel.addEvent('onDropdownPanelLeave', this.panel.hide.bind(this.panel))
|
33
|
+
}
|
34
|
+
})
|
35
|
+
|
36
|
+
/**
|
37
|
+
* DROPDOWN HEADER
|
38
|
+
*/
|
39
|
+
|
40
|
+
var DropdownHeader = new Class('ui.DropdownHeader', {
|
41
|
+
Implements: [Options, Events],
|
42
|
+
|
43
|
+
options: {},
|
44
|
+
|
45
|
+
initialize: function(element, options){
|
46
|
+
this.element = element
|
47
|
+
this.options = Object.merge(this.options, options)
|
48
|
+
this.addEvents()
|
49
|
+
this.element.store('dropdown_header', this)
|
50
|
+
},
|
51
|
+
|
52
|
+
addEvents: function(){
|
53
|
+
this.element.addEvent('mouseenter', this.onMouseEnter.bind(this))
|
54
|
+
this.element.addEvent('mouseleave', this.onMouseLeave.bind(this))
|
55
|
+
},
|
56
|
+
|
57
|
+
onMouseEnter: function(event){
|
58
|
+
this.killTimer()
|
59
|
+
this.fireEvent('onDropdownHeaderEnter')
|
60
|
+
},
|
61
|
+
|
62
|
+
onMouseLeave: function(event){
|
63
|
+
this.timer = this.fireEvent.delay(500, this, 'onDropdownHeaderLeave')
|
64
|
+
},
|
65
|
+
|
66
|
+
killTimer: function(event){
|
67
|
+
if (this.timer) clearTimeout(this.timer)
|
68
|
+
}
|
69
|
+
})
|
70
|
+
|
71
|
+
/**
|
72
|
+
* DROPDOWN PANEL
|
73
|
+
*/
|
74
|
+
|
75
|
+
var DropdownPanel = new Class('ui.DropdownPanel', {
|
76
|
+
Implements: [Options, Events],
|
77
|
+
|
78
|
+
options: {
|
79
|
+
openAtStart: false
|
80
|
+
},
|
81
|
+
|
82
|
+
initialize: function(element, options){
|
83
|
+
this.element = element
|
84
|
+
this.options = Object.merge(this.options, options)
|
85
|
+
this.build()
|
86
|
+
this.addEvents()
|
87
|
+
this.element.store('dropdown_panel', this)
|
88
|
+
},
|
89
|
+
|
90
|
+
build: function(){
|
91
|
+
this.hide()
|
92
|
+
if (this.options.openAtStart) this.show()
|
93
|
+
},
|
94
|
+
|
95
|
+
addEvents: function(){
|
96
|
+
this.element.addEvent('mouseenter', this.onMouseEnter.bind(this))
|
97
|
+
this.element.addEvent('mouseleave', this.onMouseLeave.bind(this))
|
98
|
+
},
|
99
|
+
|
100
|
+
show: function(event){
|
101
|
+
this.element.show()
|
102
|
+
},
|
103
|
+
|
104
|
+
hide: function(event){
|
105
|
+
this.element.hide()
|
106
|
+
},
|
107
|
+
|
108
|
+
onMouseEnter: function(event){
|
109
|
+
this.fireEvent('onDropdownPanelEnter')
|
110
|
+
},
|
111
|
+
|
112
|
+
onMouseLeave: function(event){
|
113
|
+
this.fireEvent('onDropdownPanelLeave')
|
114
|
+
}
|
115
|
+
})
|
116
|
+
})()
|
@@ -0,0 +1,46 @@
|
|
1
|
+
(function() {
|
2
|
+
// Utility method to get and set objects that may or may not exist
|
3
|
+
var objectifier = function(splits, create, context) {
|
4
|
+
var result = context || window
|
5
|
+
for(var i = 0, s; result && (s = splits[i]); i++) {
|
6
|
+
result = (s in result ? result[s] : (create ? result[s] = {} : undefined))
|
7
|
+
}
|
8
|
+
return result
|
9
|
+
}
|
10
|
+
|
11
|
+
// Creates an object if it doesn't already exist
|
12
|
+
Object.extend('place', function(name, value, context) {
|
13
|
+
var splits = name.split("."), s = splits.pop(), result = objectifier(splits, true, context)
|
14
|
+
return result && s ? (result[s] = value) : undefined
|
15
|
+
})
|
16
|
+
|
17
|
+
// Retrieves an object if not already present
|
18
|
+
Object.extend('retrieve', function(name, create, context) {
|
19
|
+
return objectifier(name.split('.'), create, context)
|
20
|
+
})
|
21
|
+
|
22
|
+
// Checks to see if the object exists
|
23
|
+
Object.extend('exists', function(name, context) {
|
24
|
+
return Object.retrieve(name, false, context) !== undefined
|
25
|
+
})
|
26
|
+
|
27
|
+
var klass = Class;
|
28
|
+
|
29
|
+
// Redefine class
|
30
|
+
Class = function(name, params, context) {
|
31
|
+
// Find out if this is namespaced or the original method
|
32
|
+
var namespaced = arguments.length > 1
|
33
|
+
|
34
|
+
// Add the class name to the param list
|
35
|
+
if(namespaced) params.$name = name
|
36
|
+
|
37
|
+
// Create and get the original class
|
38
|
+
var original = new klass(namespaced ? params : name)
|
39
|
+
|
40
|
+
// If namespaced, set class into namespace
|
41
|
+
if(namespaced) Object.place(name, original, context)
|
42
|
+
|
43
|
+
// Return this newly created class!
|
44
|
+
return original
|
45
|
+
}
|
46
|
+
})()
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mootools-plus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-08 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &2156056380 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -24,15 +24,7 @@ dependencies:
|
|
24
24
|
version: '5.0'
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
|
-
version_requirements:
|
28
|
-
none: false
|
29
|
-
requirements:
|
30
|
-
- - ! '>='
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 3.1.0
|
33
|
-
- - <
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version: '5.0'
|
27
|
+
version_requirements: *2156056380
|
36
28
|
description: mootools-plus provides helpers and Ruby-like methods to Javascript MooTools
|
37
29
|
core classes and plus
|
38
30
|
email:
|
@@ -53,9 +45,12 @@ files:
|
|
53
45
|
- lib/mootools-plus/rails/engine.rb
|
54
46
|
- lib/mootools-plus/rails/version.rb
|
55
47
|
- mootools-plus.gemspec
|
48
|
+
- vendor/assets/javascripts/mootools-plus.js
|
56
49
|
- vendor/assets/javascripts/mootools-plus/array.js
|
50
|
+
- vendor/assets/javascripts/mootools-plus/core/logger.js
|
57
51
|
- vendor/assets/javascripts/mootools-plus/element.js
|
58
|
-
- vendor/assets/javascripts/mootools-plus/
|
52
|
+
- vendor/assets/javascripts/mootools-plus/ui/dropdown.js
|
53
|
+
- vendor/assets/javascripts/namespace.js
|
59
54
|
homepage: https://github.com/caedes/mootools-plus
|
60
55
|
licenses: []
|
61
56
|
post_install_message:
|
@@ -76,7 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
71
|
version: '0'
|
77
72
|
requirements: []
|
78
73
|
rubyforge_project:
|
79
|
-
rubygems_version: 1.8.
|
74
|
+
rubygems_version: 1.8.6
|
80
75
|
signing_key:
|
81
76
|
specification_version: 3
|
82
77
|
summary: mootools-plus provides helpers and Ruby-like methods to Javascript MooTools
|