helios 0.3.0 → 0.4.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +93 -71
- data/README.md +150 -127
- data/helios.gemspec +5 -4
- data/lib/helios/backend/push-notification.rb +1 -0
- data/lib/helios/commands/link.rb +2 -0
- data/lib/helios/commands/new.rb +1 -0
- data/lib/helios/frontend/javascripts/vendor/foundation.js +163 -47
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.alerts.js +6 -4
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.clearing.js +70 -32
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.dropdown.js +87 -31
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.forms.js +360 -238
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.interchange.js +271 -0
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.joyride.js +279 -48
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.magellan.js +8 -4
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.orbit.js +59 -24
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.placeholder.js +21 -1
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.reveal.js +100 -42
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.section.js +299 -60
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.tooltips.js +26 -13
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.topbar.js +154 -59
- data/lib/helios/frontend/javascripts/vendor/foundation/index.js +17 -0
- data/lib/helios/frontend/stylesheets/screen.sass +0 -1
- data/lib/helios/frontend/templates/push-notification/devices.jst.tpl +0 -3
- data/lib/helios/templates/.gitignore.erb +32 -0
- data/lib/helios/version.rb +1 -1
- metadata +31 -14
@@ -6,12 +6,14 @@
|
|
6
6
|
Foundation.libs.tooltips = {
|
7
7
|
name: 'tooltips',
|
8
8
|
|
9
|
-
version : '4.
|
9
|
+
version : '4.2.2',
|
10
10
|
|
11
11
|
settings : {
|
12
12
|
selector : '.has-tip',
|
13
13
|
additionalInheritableClasses : [],
|
14
14
|
tooltipClass : '.tooltip',
|
15
|
+
appendTo: 'body',
|
16
|
+
'disable-for-touch': false,
|
15
17
|
tipTemplate : function (selector, content) {
|
16
18
|
return '<span data-selector="' + selector + '" class="'
|
17
19
|
+ Foundation.libs.tooltips.settings.tooltipClass.substring(1)
|
@@ -22,21 +24,26 @@
|
|
22
24
|
cache : {},
|
23
25
|
|
24
26
|
init : function (scope, method, options) {
|
27
|
+
Foundation.inherit(this, 'data_options');
|
25
28
|
var self = this;
|
26
|
-
this.scope = scope || this.scope;
|
27
29
|
|
28
30
|
if (typeof method === 'object') {
|
29
31
|
$.extend(true, this.settings, method);
|
32
|
+
} else if (typeof options !== 'undefined') {
|
33
|
+
$.extend(true, this.settings, options);
|
30
34
|
}
|
31
35
|
|
32
|
-
if (typeof method
|
36
|
+
if (typeof method !== 'string') {
|
33
37
|
if (Modernizr.touch) {
|
34
38
|
$(this.scope)
|
35
39
|
.on('click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip',
|
36
40
|
'[data-tooltip]', function (e) {
|
37
|
-
|
38
|
-
|
39
|
-
|
41
|
+
var settings = $.extend({}, self.settings, self.data_options($(this)));
|
42
|
+
if (!settings['disable-for-touch']) {
|
43
|
+
e.preventDefault();
|
44
|
+
$(settings.tooltipClass).hide();
|
45
|
+
self.showOrCreateTip($(this));
|
46
|
+
}
|
40
47
|
})
|
41
48
|
.on('click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip',
|
42
49
|
this.settings.tooltipClass, function (e) {
|
@@ -49,7 +56,7 @@
|
|
49
56
|
'[data-tooltip]', function (e) {
|
50
57
|
var $this = $(this);
|
51
58
|
|
52
|
-
if (
|
59
|
+
if (/enter|over/i.test(e.type)) {
|
53
60
|
self.showOrCreateTip($this);
|
54
61
|
} else if (e.type === 'mouseout' || e.type === 'mouseleave') {
|
55
62
|
self.hide($this);
|
@@ -79,7 +86,7 @@
|
|
79
86
|
tip = null;
|
80
87
|
|
81
88
|
if (selector) {
|
82
|
-
tip = $('span[data-selector=' + selector + ']' + this.settings.tooltipClass);
|
89
|
+
tip = $('span[data-selector="' + selector + '"]' + this.settings.tooltipClass);
|
83
90
|
}
|
84
91
|
|
85
92
|
return (typeof tip === 'object') ? tip : false;
|
@@ -98,10 +105,10 @@
|
|
98
105
|
},
|
99
106
|
|
100
107
|
create : function ($target) {
|
101
|
-
var $tip = $(this.settings.tipTemplate(this.selector($target), $('<div>').html($target.attr('title')).html())),
|
108
|
+
var $tip = $(this.settings.tipTemplate(this.selector($target), $('<div></div>').html($target.attr('title')).html())),
|
102
109
|
classes = this.inheritable_classes($target);
|
103
110
|
|
104
|
-
$tip.addClass(classes).appendTo(
|
111
|
+
$tip.addClass(classes).appendTo(this.settings.appendTo);
|
105
112
|
if (Modernizr.touch) {
|
106
113
|
$tip.append('<span class="tap-to-close">tap to close </span>');
|
107
114
|
}
|
@@ -136,10 +143,14 @@
|
|
136
143
|
tip.addClass('tip-override');
|
137
144
|
objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left);
|
138
145
|
} else {
|
139
|
-
|
146
|
+
var left = target.offset().left;
|
147
|
+
if (Foundation.rtl) {
|
148
|
+
left = target.offset().left + target.offset().width - this.outerWidth(tip);
|
149
|
+
}
|
150
|
+
objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', left, width);
|
140
151
|
tip.removeClass('tip-override');
|
141
152
|
if (classes && classes.indexOf('tip-top') > -1) {
|
142
|
-
objPos(tip, (target.offset().top - this.outerHeight(tip)), 'auto', 'auto',
|
153
|
+
objPos(tip, (target.offset().top - this.outerHeight(tip)), 'auto', 'auto', left, width)
|
143
154
|
.removeClass('tip-override');
|
144
155
|
} else if (classes && classes.indexOf('tip-left') > -1) {
|
145
156
|
objPos(tip, (target.offset().top + (this.outerHeight(target) / 2) - nubHeight*2.5), 'auto', 'auto', (target.offset().left - this.outerWidth(tip) - nubHeight), width)
|
@@ -190,6 +201,8 @@
|
|
190
201
|
$(this.settings.tooltipClass).each(function (i) {
|
191
202
|
$('[data-tooltip]').get(i).attr('title', $(this).text());
|
192
203
|
}).remove();
|
193
|
-
}
|
204
|
+
},
|
205
|
+
|
206
|
+
reflow : function () {}
|
194
207
|
};
|
195
208
|
}(Foundation.zj, this, this.document));
|
@@ -6,32 +6,36 @@
|
|
6
6
|
Foundation.libs.topbar = {
|
7
7
|
name : 'topbar',
|
8
8
|
|
9
|
-
version : '4.
|
9
|
+
version : '4.2.3',
|
10
10
|
|
11
11
|
settings : {
|
12
12
|
index : 0,
|
13
13
|
stickyClass : 'sticky',
|
14
|
-
|
14
|
+
custom_back_text: true,
|
15
|
+
back_text: 'Back',
|
16
|
+
is_hover: true,
|
17
|
+
scrolltop : true, // jump to top when sticky nav menu toggle is clicked
|
15
18
|
init : false
|
16
19
|
},
|
17
20
|
|
18
|
-
init : function (
|
21
|
+
init : function (section, method, options) {
|
22
|
+
Foundation.inherit(this, 'data_options');
|
19
23
|
var self = this;
|
20
|
-
this.scope = scope || this.scope;
|
21
24
|
|
22
25
|
if (typeof method === 'object') {
|
23
26
|
$.extend(true, this.settings, method);
|
27
|
+
} else if (typeof options !== 'undefined') {
|
28
|
+
$.extend(true, this.settings, options);
|
24
29
|
}
|
25
30
|
|
26
|
-
if (typeof method
|
31
|
+
if (typeof method !== 'string') {
|
27
32
|
|
28
|
-
$('
|
33
|
+
$('.top-bar, [data-topbar]').each(function () {
|
34
|
+
$.extend(true, self.settings, self.data_options($(this)));
|
29
35
|
self.settings.$w = $(window);
|
30
36
|
self.settings.$topbar = $(this);
|
31
37
|
self.settings.$section = self.settings.$topbar.find('section');
|
32
38
|
self.settings.$titlebar = self.settings.$topbar.children('ul').first();
|
33
|
-
|
34
|
-
|
35
39
|
self.settings.$topbar.data('index', 0);
|
36
40
|
|
37
41
|
var breakpoint = $("<div class='top-bar-js-breakpoint'/>").insertAfter(self.settings.$topbar);
|
@@ -58,78 +62,157 @@
|
|
58
62
|
|
59
63
|
events : function () {
|
60
64
|
var self = this;
|
61
|
-
|
65
|
+
var offst = this.outerHeight($('.top-bar, [data-topbar]'));
|
62
66
|
$(this.scope)
|
63
|
-
.
|
64
|
-
|
67
|
+
.off('.fndtn.topbar')
|
68
|
+
.on('click.fndtn.topbar', '.top-bar .toggle-topbar, [data-topbar] .toggle-topbar', function (e) {
|
69
|
+
var topbar = $(this).closest('.top-bar, [data-topbar]'),
|
65
70
|
section = topbar.find('section, .section'),
|
66
71
|
titlebar = topbar.children('ul').first();
|
67
72
|
|
68
|
-
if (!self.settings.$topbar.data('height')) self.largestUL();
|
69
|
-
|
70
73
|
e.preventDefault();
|
71
74
|
|
72
75
|
if (self.breakpoint()) {
|
76
|
+
if (!self.rtl) {
|
77
|
+
section.css({left: '0%'});
|
78
|
+
section.find('>.name').css({left: '100%'});
|
79
|
+
} else {
|
80
|
+
section.css({right: '0%'});
|
81
|
+
section.find('>.name').css({right: '100%'});
|
82
|
+
}
|
83
|
+
|
84
|
+
section.find('li.moved').removeClass('moved');
|
85
|
+
topbar.data('index', 0);
|
86
|
+
|
73
87
|
topbar
|
74
88
|
.toggleClass('expanded')
|
75
|
-
.css('
|
89
|
+
.css('height', '');
|
76
90
|
}
|
77
91
|
|
78
92
|
if (!topbar.hasClass('expanded')) {
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
93
|
+
if (topbar.hasClass('fixed')) {
|
94
|
+
topbar.parent().addClass('fixed');
|
95
|
+
topbar.removeClass('fixed');
|
96
|
+
$('body').css('padding-top',offst);
|
97
|
+
}
|
98
|
+
} else if (topbar.parent().hasClass('fixed')) {
|
99
|
+
topbar.parent().removeClass('fixed');
|
100
|
+
topbar.addClass('fixed');
|
101
|
+
$('body').css('padding-top','0');
|
102
|
+
|
103
|
+
if (self.settings.scrolltop) {
|
104
|
+
window.scrollTo(0,0);
|
105
|
+
}
|
83
106
|
}
|
84
107
|
})
|
85
108
|
|
86
|
-
.on('
|
87
|
-
|
88
|
-
|
89
|
-
|
109
|
+
.on('mouseenter mouseleave', '.top-bar li', function (e) {
|
110
|
+
if (!self.settings.is_hover) return;
|
111
|
+
|
112
|
+
if (/enter|over/i.test(e.type)) {
|
113
|
+
$(this).addClass('hover');
|
114
|
+
} else {
|
115
|
+
$(this).removeClass('hover');
|
116
|
+
}
|
117
|
+
})
|
118
|
+
|
119
|
+
.on('click.fndtn.topbar', '.top-bar li.has-dropdown', function (e) {
|
120
|
+
if (self.breakpoint()) return;
|
90
121
|
|
91
|
-
|
122
|
+
var li = $(this),
|
123
|
+
target = $(e.target),
|
124
|
+
topbar = li.closest('[data-topbar], .top-bar'),
|
125
|
+
is_hover = topbar.data('topbar');
|
126
|
+
|
127
|
+
if (self.settings.is_hover && !Modernizr.touch) return;
|
128
|
+
|
129
|
+
e.stopImmediatePropagation();
|
130
|
+
|
131
|
+
if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) {
|
92
132
|
e.preventDefault();
|
93
133
|
}
|
94
134
|
|
135
|
+
if (li.hasClass('hover')) {
|
136
|
+
li
|
137
|
+
.removeClass('hover')
|
138
|
+
.find('li')
|
139
|
+
.removeClass('hover');
|
140
|
+
} else {
|
141
|
+
li.addClass('hover');
|
142
|
+
}
|
143
|
+
})
|
144
|
+
|
145
|
+
.on('click.fndtn.topbar', '.top-bar .has-dropdown>a, [data-topbar] .has-dropdown>a', function (e) {
|
95
146
|
if (self.breakpoint()) {
|
147
|
+
e.preventDefault();
|
148
|
+
|
96
149
|
var $this = $(this),
|
150
|
+
topbar = $this.closest('.top-bar, [data-topbar]'),
|
151
|
+
section = topbar.find('section, .section'),
|
152
|
+
titlebar = topbar.children('ul').first(),
|
153
|
+
dropdownHeight = $this.next('.dropdown').outerHeight(),
|
97
154
|
$selectedLi = $this.closest('li');
|
98
155
|
|
99
156
|
topbar.data('index', topbar.data('index') + 1);
|
100
157
|
$selectedLi.addClass('moved');
|
101
|
-
section.css({left: -(100 * topbar.data('index')) + '%'});
|
102
|
-
section.find('>.name').css({left: 100 * topbar.data('index') + '%'});
|
103
158
|
|
104
|
-
|
105
|
-
.
|
106
|
-
|
107
|
-
|
159
|
+
if (!self.rtl) {
|
160
|
+
section.css({left: -(100 * topbar.data('index')) + '%'});
|
161
|
+
section.find('>.name').css({left: 100 * topbar.data('index') + '%'});
|
162
|
+
} else {
|
163
|
+
section.css({right: -(100 * topbar.data('index')) + '%'});
|
164
|
+
section.find('>.name').css({right: 100 * topbar.data('index') + '%'});
|
165
|
+
}
|
166
|
+
|
167
|
+
topbar.css('height', self.outerHeight($this.siblings('ul'), true) + self.outerHeight(titlebar, true));
|
108
168
|
}
|
109
|
-
|
169
|
+
});
|
110
170
|
|
111
171
|
$(window).on('resize.fndtn.topbar', function () {
|
112
|
-
if (!
|
113
|
-
$('.top-bar
|
172
|
+
if (!self.breakpoint()) {
|
173
|
+
$('.top-bar, [data-topbar]')
|
174
|
+
.css('height', '')
|
175
|
+
.removeClass('expanded')
|
176
|
+
.find('li')
|
177
|
+
.removeClass('hover');
|
114
178
|
}
|
115
179
|
}.bind(this));
|
116
180
|
|
181
|
+
$('body').on('click.fndtn.topbar', function (e) {
|
182
|
+
var parent = $(e.target).closest('[data-topbar], .top-bar');
|
183
|
+
|
184
|
+
if (parent.length > 0) {
|
185
|
+
return;
|
186
|
+
}
|
187
|
+
|
188
|
+
$('.top-bar li, [data-topbar] li').removeClass('hover');
|
189
|
+
});
|
190
|
+
|
117
191
|
// Go up a level on Click
|
118
|
-
$(this.scope).on('click.fndtn', '.top-bar .has-dropdown .back', function (e) {
|
192
|
+
$(this.scope).on('click.fndtn', '.top-bar .has-dropdown .back, [data-topbar] .has-dropdown .back', function (e) {
|
119
193
|
e.preventDefault();
|
120
194
|
|
121
195
|
var $this = $(this),
|
122
|
-
topbar = $this.closest('.top-bar'),
|
196
|
+
topbar = $this.closest('.top-bar, [data-topbar]'),
|
197
|
+
titlebar = topbar.children('ul').first(),
|
123
198
|
section = topbar.find('section, .section'),
|
124
199
|
$movedLi = $this.closest('li.moved'),
|
125
200
|
$previousLevelUl = $movedLi.parent();
|
126
201
|
|
127
202
|
topbar.data('index', topbar.data('index') - 1);
|
128
|
-
|
129
|
-
|
203
|
+
|
204
|
+
if (!self.rtl) {
|
205
|
+
section.css({left: -(100 * topbar.data('index')) + '%'});
|
206
|
+
section.find('>.name').css({left: 100 * topbar.data('index') + '%'});
|
207
|
+
} else {
|
208
|
+
section.css({right: -(100 * topbar.data('index')) + '%'});
|
209
|
+
section.find('>.name').css({right: 100 * topbar.data('index') + '%'});
|
210
|
+
}
|
130
211
|
|
131
212
|
if (topbar.data('index') === 0) {
|
132
|
-
topbar.css('
|
213
|
+
topbar.css('height', '');
|
214
|
+
} else {
|
215
|
+
topbar.css('height', self.outerHeight($previousLevelUl, true) + self.outerHeight(titlebar, true));
|
133
216
|
}
|
134
217
|
|
135
218
|
setTimeout(function () {
|
@@ -139,7 +222,7 @@
|
|
139
222
|
},
|
140
223
|
|
141
224
|
breakpoint : function () {
|
142
|
-
return $(
|
225
|
+
return $(document).width() <= this.settings.breakPoint || $('html').hasClass('lt-ie9');
|
143
226
|
},
|
144
227
|
|
145
228
|
assemble : function () {
|
@@ -150,8 +233,20 @@
|
|
150
233
|
this.settings.$section.find('.has-dropdown>a').each(function () {
|
151
234
|
var $link = $(this),
|
152
235
|
$dropdown = $link.siblings('.dropdown'),
|
153
|
-
|
236
|
+
url = $link.attr('href');
|
237
|
+
|
238
|
+
if (url && url.length > 1) {
|
239
|
+
var $titleLi = $('<li class="title back js-generated"><h5><a href="#"></a></h5></li><li><a class="parent-link js-generated" href="' + url + '">' + $link.text() +'</a></li>');
|
240
|
+
} else {
|
241
|
+
var $titleLi = $('<li class="title back js-generated"><h5><a href="#"></a></h5></li>');
|
242
|
+
}
|
243
|
+
|
154
244
|
// Copy link to subnav
|
245
|
+
if (self.settings.custom_back_text == true) {
|
246
|
+
$titleLi.find('h5>a').html('« ' + self.settings.back_text);
|
247
|
+
} else {
|
248
|
+
$titleLi.find('h5>a').html('« ' + $link.html());
|
249
|
+
}
|
155
250
|
$dropdown.prepend($titleLi);
|
156
251
|
});
|
157
252
|
|
@@ -162,21 +257,13 @@
|
|
162
257
|
this.sticky();
|
163
258
|
},
|
164
259
|
|
165
|
-
|
166
|
-
var
|
167
|
-
largest = uls.first(),
|
168
|
-
total = 0,
|
260
|
+
height : function (ul) {
|
261
|
+
var total = 0,
|
169
262
|
self = this;
|
170
263
|
|
171
|
-
|
172
|
-
if ($(this).children('li').length > largest.children('li').length) {
|
173
|
-
largest = $(this);
|
174
|
-
}
|
175
|
-
});
|
176
|
-
|
177
|
-
largest.children('li').each(function () { total += self.outerHeight($(this), true); });
|
264
|
+
ul.find('> li').each(function () { total += self.outerHeight($(this), true); });
|
178
265
|
|
179
|
-
|
266
|
+
return total;
|
180
267
|
},
|
181
268
|
|
182
269
|
sticky : function () {
|
@@ -184,18 +271,24 @@
|
|
184
271
|
if ($(klass).length > 0) {
|
185
272
|
var distance = $(klass).length ? $(klass).offset().top: 0,
|
186
273
|
$window = $(window);
|
187
|
-
var offst = this.outerHeight($('
|
188
|
-
|
274
|
+
var offst = this.outerHeight($('.top-bar'));
|
275
|
+
//Whe resize elements of the page on windows resize. Must recalculate distance
|
276
|
+
$(window).resize(function() {
|
277
|
+
clearTimeout(t_top);
|
278
|
+
t_top = setTimeout (function() {
|
279
|
+
distance = $(klass).offset().top;
|
280
|
+
},105);
|
281
|
+
});
|
189
282
|
$window.scroll(function() {
|
190
|
-
if ($window.scrollTop()
|
191
|
-
|
192
|
-
|
283
|
+
if ($window.scrollTop() > (distance)) {
|
284
|
+
$(klass).addClass("fixed");
|
285
|
+
$('body').css('padding-top',offst);
|
193
286
|
}
|
194
287
|
|
195
|
-
|
288
|
+
else if ($window.scrollTop() <= distance) {
|
196
289
|
$(klass).removeClass("fixed");
|
197
290
|
$('body').css('padding-top','0');
|
198
|
-
|
291
|
+
}
|
199
292
|
});
|
200
293
|
}
|
201
294
|
},
|
@@ -203,6 +296,8 @@
|
|
203
296
|
off : function () {
|
204
297
|
$(this.scope).off('.fndtn.topbar');
|
205
298
|
$(window).off('.fndtn.topbar');
|
206
|
-
}
|
299
|
+
},
|
300
|
+
|
301
|
+
reflow : function () {}
|
207
302
|
};
|
208
303
|
}(Foundation.zj, this, this.document));
|
@@ -0,0 +1,17 @@
|
|
1
|
+
/*
|
2
|
+
=require foundation/foundation
|
3
|
+
=require foundation/foundation.alerts
|
4
|
+
=require foundation/foundation.clearing
|
5
|
+
=require foundation/foundation.cookie
|
6
|
+
=require foundation/foundation.dropdown
|
7
|
+
=require foundation/foundation.forms
|
8
|
+
=require foundation/foundation.joyride
|
9
|
+
=require foundation/foundation.magellan
|
10
|
+
=require foundation/foundation.orbit
|
11
|
+
=require foundation/foundation.reveal
|
12
|
+
=require foundation/foundation.section
|
13
|
+
=require foundation/foundation.tooltips
|
14
|
+
=require foundation/foundation.topbar
|
15
|
+
=require foundation/foundation.interchange
|
16
|
+
=require foundation/foundation.placeholder
|
17
|
+
*/
|