foundation-rails 6.2.1.0 → 6.2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/bower.json +1 -1
- data/lib/foundation/rails/version.rb +1 -1
- data/lib/generators/foundation/templates/_settings.scss +1 -1
- data/vendor/assets/js/foundation.abide.js.es6 +27 -11
- data/vendor/assets/js/foundation.accordion.js.es6 +1 -1
- data/vendor/assets/js/foundation.accordionMenu.js.es6 +10 -7
- data/vendor/assets/js/foundation.core.js.es6 +3 -3
- data/vendor/assets/js/foundation.drilldown.js.es6 +31 -23
- data/vendor/assets/js/foundation.dropdown.js.es6 +1 -1
- data/vendor/assets/js/foundation.dropdownMenu.js.es6 +34 -26
- data/vendor/assets/js/foundation.equalizer.js.es6 +27 -6
- data/vendor/assets/js/foundation.interchange.js.es6 +22 -16
- data/vendor/assets/js/foundation.magellan.js.es6 +1 -1
- data/vendor/assets/js/foundation.offcanvas.js.es6 +6 -3
- data/vendor/assets/js/foundation.responsiveToggle.js.es6 +10 -3
- data/vendor/assets/js/foundation.reveal.js.es6 +53 -35
- data/vendor/assets/js/foundation.slider.js.es6 +31 -11
- data/vendor/assets/js/foundation.sticky.js.es6 +30 -27
- data/vendor/assets/js/foundation.tabs.js.es6 +13 -5
- data/vendor/assets/js/foundation.tooltip.js.es6 +12 -6
- data/vendor/assets/js/foundation.util.box.js.es6 +1 -1
- data/vendor/assets/js/foundation.util.keyboard.js.es6 +3 -3
- data/vendor/assets/js/foundation.util.mediaQuery.js.es6 +15 -11
- data/vendor/assets/js/foundation.util.touch.js.es6 +1 -1
- data/vendor/assets/scss/components/_accordion.scss +27 -7
- data/vendor/assets/scss/components/_button-group.scss +15 -23
- data/vendor/assets/scss/components/_button.scss +5 -0
- data/vendor/assets/scss/components/_dropdown-menu.scss +16 -5
- data/vendor/assets/scss/components/_media-object.scss +8 -2
- data/vendor/assets/scss/components/_menu.scss +9 -7
- data/vendor/assets/scss/components/_reveal.scss +7 -0
- data/vendor/assets/scss/components/_title-bar.scss +1 -1
- data/vendor/assets/scss/forms/_input-group.scss +1 -0
- data/vendor/assets/scss/forms/_select.scss +2 -1
- data/vendor/assets/scss/foundation.scss +1 -1
- data/vendor/assets/scss/grid/_classes.scss +2 -1
- data/vendor/assets/scss/grid/_flex-grid.scss +1 -1
- data/vendor/assets/scss/grid/_position.scss +1 -1
- data/vendor/assets/scss/grid/_row.scss +1 -1
- data/vendor/assets/scss/settings/_settings.scss +1 -1
- data/vendor/assets/scss/util/_breakpoint.scss +4 -3
- data/vendor/assets/scss/util/_mixins.scss +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f32f3823c38823acc3571855ddeeabbdd1dd590e
|
4
|
+
data.tar.gz: d709d42eeede630436458e26a802af0b1f55e946
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0113fcb9e16914f67ab0e7565e221fe485cdee87d03dc6644663cf876021533cb57f6efdb4df65bb3fc10d5118dbc22edf51273c281dd1f43b3f4f74e384353
|
7
|
+
data.tar.gz: 120e60d9f7bbc4a2e6a6f89bef65ec893ba6ac962c8aa2136db96e1d49b312e92bc2f800f5d238aef8992aa4064dc2759417159e3152b286524946fa44a7c834
|
data/README.md
CHANGED
data/bower.json
CHANGED
@@ -200,7 +200,7 @@ $accordion-item-background-hover: $light-gray;
|
|
200
200
|
$accordion-item-padding: 1.25rem 1rem;
|
201
201
|
$accordion-content-background: $white;
|
202
202
|
$accordion-content-border: 1px solid $light-gray;
|
203
|
-
$accordion-content-color: foreground($accordion-background, $
|
203
|
+
$accordion-content-color: foreground($accordion-content-background, $body-font-color);
|
204
204
|
$accordion-content-padding: 1rem;
|
205
205
|
|
206
206
|
// 8. Accordion Menu
|
@@ -29,7 +29,7 @@ class Abide {
|
|
29
29
|
* @private
|
30
30
|
*/
|
31
31
|
_init() {
|
32
|
-
this.$inputs = this.$element.find('input, textarea, select')
|
32
|
+
this.$inputs = this.$element.find('input, textarea, select');
|
33
33
|
|
34
34
|
this._events();
|
35
35
|
}
|
@@ -83,6 +83,10 @@ class Abide {
|
|
83
83
|
var isGood = true;
|
84
84
|
|
85
85
|
switch ($el[0].type) {
|
86
|
+
case 'checkbox':
|
87
|
+
isGood = $el[0].checked;
|
88
|
+
break;
|
89
|
+
|
86
90
|
case 'select':
|
87
91
|
case 'select-one':
|
88
92
|
case 'select-multiple':
|
@@ -238,6 +242,11 @@ class Abide {
|
|
238
242
|
validator = $el.attr('data-validator'),
|
239
243
|
equalTo = true;
|
240
244
|
|
245
|
+
// don't validate ignored inputs or hidden inputs
|
246
|
+
if ($el.is('[data-abide-ignore]') || $el.is('[type="hidden"]')) {
|
247
|
+
return true;
|
248
|
+
}
|
249
|
+
|
241
250
|
switch ($el[0].type) {
|
242
251
|
case 'radio':
|
243
252
|
validated = this.validateRadio($el.attr('name'));
|
@@ -353,19 +362,24 @@ class Abide {
|
|
353
362
|
// If at least one radio in the group has the `required` attribute, the group is considered required
|
354
363
|
// Per W3C spec, all radio buttons in a group should have `required`, but we're being nice
|
355
364
|
var $group = this.$element.find(`:radio[name="${groupName}"]`);
|
356
|
-
var valid = false;
|
365
|
+
var valid = false, required = false;
|
357
366
|
|
358
|
-
//
|
359
|
-
if ($group.attr('required') === undefined) {
|
360
|
-
valid = true;
|
361
|
-
}
|
362
|
-
|
363
|
-
// For the group to be valid, at least one radio needs to be checked
|
367
|
+
// For the group to be required, at least one radio needs to be required
|
364
368
|
$group.each((i, e) => {
|
365
|
-
if ($(e).
|
366
|
-
|
369
|
+
if ($(e).attr('required')) {
|
370
|
+
required = true;
|
367
371
|
}
|
368
372
|
});
|
373
|
+
if(!required) valid=true;
|
374
|
+
|
375
|
+
if (!valid) {
|
376
|
+
// For the group to be valid, at least one radio needs to be checked
|
377
|
+
$group.each((i, e) => {
|
378
|
+
if ($(e).prop('checked')) {
|
379
|
+
valid = true;
|
380
|
+
}
|
381
|
+
});
|
382
|
+
};
|
369
383
|
|
370
384
|
return valid;
|
371
385
|
}
|
@@ -398,7 +412,9 @@ class Abide {
|
|
398
412
|
$(`.${opts.inputErrorClass}`, $form).not('small').removeClass(opts.inputErrorClass);
|
399
413
|
$(`${opts.formErrorSelector}.${opts.formErrorClass}`).removeClass(opts.formErrorClass);
|
400
414
|
$form.find('[data-abide-error]').css('display', 'none');
|
401
|
-
$(':input', $form).not(':button, :submit, :reset, :hidden, [data-abide-ignore]').val('').removeAttr('data-invalid');
|
415
|
+
$(':input', $form).not(':button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]').val('').removeAttr('data-invalid');
|
416
|
+
$(':input:radio', $form).not('[data-abide-ignore]').prop('checked',false).removeAttr('data-invalid');
|
417
|
+
$(':input:checkbox', $form).not('[data-abide-ignore]').prop('checked',false).removeAttr('data-invalid');
|
402
418
|
/**
|
403
419
|
* Fires when the form has been reset.
|
404
420
|
* @event Abide#formreset
|
@@ -203,7 +203,7 @@ class Accordion {
|
|
203
203
|
* @function
|
204
204
|
*/
|
205
205
|
destroy() {
|
206
|
-
this.$element.find('[data-tab-content]').slideUp(0).css('display', '');
|
206
|
+
this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', '');
|
207
207
|
this.$element.find('a').off('.zf.accordion');
|
208
208
|
|
209
209
|
Foundation.unregisterPlugin(this);
|
@@ -144,11 +144,11 @@ class AccordionMenu {
|
|
144
144
|
},
|
145
145
|
up: function() {
|
146
146
|
$prevElement.attr('tabindex', -1).focus();
|
147
|
-
|
147
|
+
return true;
|
148
148
|
},
|
149
149
|
down: function() {
|
150
150
|
$nextElement.attr('tabindex', -1).focus();
|
151
|
-
|
151
|
+
return true;
|
152
152
|
},
|
153
153
|
toggle: function() {
|
154
154
|
if ($element.children('[data-submenu]').length) {
|
@@ -158,7 +158,10 @@ class AccordionMenu {
|
|
158
158
|
closeAll: function() {
|
159
159
|
_this.hideAll();
|
160
160
|
},
|
161
|
-
handled: function() {
|
161
|
+
handled: function(preventDefault) {
|
162
|
+
if (preventDefault) {
|
163
|
+
e.preventDefault();
|
164
|
+
}
|
162
165
|
e.stopImmediatePropagation();
|
163
166
|
}
|
164
167
|
});
|
@@ -204,7 +207,7 @@ class AccordionMenu {
|
|
204
207
|
$target.addClass('is-active').attr({'aria-hidden': false})
|
205
208
|
.parent('.is-accordion-submenu-parent').attr({'aria-expanded': true});
|
206
209
|
|
207
|
-
Foundation.Move(this.options.slideSpeed, $target, function() {
|
210
|
+
//Foundation.Move(this.options.slideSpeed, $target, function() {
|
208
211
|
$target.slideDown(_this.options.slideSpeed, function () {
|
209
212
|
/**
|
210
213
|
* Fires when the menu is done opening.
|
@@ -212,7 +215,7 @@ class AccordionMenu {
|
|
212
215
|
*/
|
213
216
|
_this.$element.trigger('down.zf.accordionMenu', [$target]);
|
214
217
|
});
|
215
|
-
});
|
218
|
+
//});
|
216
219
|
}
|
217
220
|
|
218
221
|
/**
|
@@ -222,7 +225,7 @@ class AccordionMenu {
|
|
222
225
|
*/
|
223
226
|
up($target) {
|
224
227
|
var _this = this;
|
225
|
-
Foundation.Move(this.options.slideSpeed, $target, function(){
|
228
|
+
//Foundation.Move(this.options.slideSpeed, $target, function(){
|
226
229
|
$target.slideUp(_this.options.slideSpeed, function () {
|
227
230
|
/**
|
228
231
|
* Fires when the menu is done collapsing up.
|
@@ -230,7 +233,7 @@ class AccordionMenu {
|
|
230
233
|
*/
|
231
234
|
_this.$element.trigger('up.zf.accordionMenu', [$target]);
|
232
235
|
});
|
233
|
-
});
|
236
|
+
//});
|
234
237
|
|
235
238
|
var $menus = $target.find('[data-submenu]').slideUp(0).addBack().attr('aria-hidden', true);
|
236
239
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
"use strict";
|
4
4
|
|
5
|
-
var FOUNDATION_VERSION = '6.2.
|
5
|
+
var FOUNDATION_VERSION = '6.2.2';
|
6
6
|
|
7
7
|
// Global Foundation object
|
8
8
|
// This is attached to the window, or used as a module for AMD/Browserify
|
@@ -44,7 +44,7 @@ var Foundation = {
|
|
44
44
|
* @function
|
45
45
|
* Populates the _uuids array with pointers to each individual plugin instance.
|
46
46
|
* Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.
|
47
|
-
* Also fires the initialization event for each plugin, consolidating
|
47
|
+
* Also fires the initialization event for each plugin, consolidating repetitive code.
|
48
48
|
* @param {Object} plugin - an instance of a plugin, usually `this` in context.
|
49
49
|
* @param {String} name - the name of the plugin, passed as a camelCased string.
|
50
50
|
* @fires Plugin#init
|
@@ -69,7 +69,7 @@ var Foundation = {
|
|
69
69
|
* @function
|
70
70
|
* Removes the plugins uuid from the _uuids array.
|
71
71
|
* Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.
|
72
|
-
* Also fires the destroyed event for the plugin, consolidating
|
72
|
+
* Also fires the destroyed event for the plugin, consolidating repetitive code.
|
73
73
|
* @param {Object} plugin - an instance of a plugin, usually `this` in context.
|
74
74
|
* @fires Plugin#destroyed
|
75
75
|
*/
|
@@ -66,19 +66,19 @@ class Drilldown {
|
|
66
66
|
// this._menuLinkEvents();
|
67
67
|
// }
|
68
68
|
this.$submenuAnchors.each(function(){
|
69
|
-
var $
|
70
|
-
var $
|
69
|
+
var $link = $(this);
|
70
|
+
var $sub = $link.parent();
|
71
71
|
if(_this.options.parentLink){
|
72
72
|
$link.clone().prependTo($sub.children('[data-submenu]')).wrap('<li class="is-submenu-parent-item is-submenu-item is-drilldown-submenu-item" role="menu-item"></li>');
|
73
73
|
}
|
74
74
|
$link.data('savedHref', $link.attr('href')).removeAttr('href');
|
75
|
-
$
|
75
|
+
$link.children('[data-submenu]')
|
76
76
|
.attr({
|
77
77
|
'aria-hidden': true,
|
78
78
|
'tabindex': 0,
|
79
79
|
'role': 'menu'
|
80
80
|
});
|
81
|
-
_this._events($
|
81
|
+
_this._events($link);
|
82
82
|
});
|
83
83
|
this.$submenus.each(function(){
|
84
84
|
var $menu = $(this),
|
@@ -89,8 +89,8 @@ class Drilldown {
|
|
89
89
|
_this._back($menu);
|
90
90
|
});
|
91
91
|
if(!this.$element.parent().hasClass('is-drilldown')){
|
92
|
-
this.$wrapper = $(this.options.wrapper).addClass('is-drilldown')
|
93
|
-
this.$element.wrap(this.$wrapper);
|
92
|
+
this.$wrapper = $(this.options.wrapper).addClass('is-drilldown');
|
93
|
+
this.$wrapper = this.$element.wrap(this.$wrapper).parent().css(this._getMaxDims());
|
94
94
|
}
|
95
95
|
}
|
96
96
|
|
@@ -116,8 +116,9 @@ class Drilldown {
|
|
116
116
|
_this._show($elem.parent('li'));
|
117
117
|
|
118
118
|
if(_this.options.closeOnClick){
|
119
|
-
var $body = $('body')
|
119
|
+
var $body = $('body');
|
120
120
|
$body.off('.zf.drilldown').on('click.zf.drilldown', function(e){
|
121
|
+
if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)) { return; }
|
121
122
|
e.preventDefault();
|
122
123
|
_this._hideAll();
|
123
124
|
$body.off('.zf.drilldown');
|
@@ -132,9 +133,9 @@ class Drilldown {
|
|
132
133
|
*/
|
133
134
|
_keyboardEvents() {
|
134
135
|
var _this = this;
|
135
|
-
|
136
|
+
|
136
137
|
this.$menuItems.add(this.$element.find('.js-drilldown-back > a')).on('keydown.zf.drilldown', function(e){
|
137
|
-
|
138
|
+
|
138
139
|
var $element = $(this),
|
139
140
|
$elements = $element.parent('li').parent('ul').children('li').children('a'),
|
140
141
|
$prevElement,
|
@@ -155,7 +156,7 @@ class Drilldown {
|
|
155
156
|
$element.parent('li').one(Foundation.transitionend($element), function(){
|
156
157
|
$element.parent('li').find('ul li a').filter(_this.$menuItems).first().focus();
|
157
158
|
});
|
158
|
-
|
159
|
+
return true;
|
159
160
|
}
|
160
161
|
},
|
161
162
|
previous: function() {
|
@@ -165,15 +166,15 @@ class Drilldown {
|
|
165
166
|
$element.parent('li').parent('ul').parent('li').children('a').first().focus();
|
166
167
|
}, 1);
|
167
168
|
});
|
168
|
-
|
169
|
+
return true;
|
169
170
|
},
|
170
171
|
up: function() {
|
171
172
|
$prevElement.focus();
|
172
|
-
|
173
|
+
return true;
|
173
174
|
},
|
174
175
|
down: function() {
|
175
176
|
$nextElement.focus();
|
176
|
-
|
177
|
+
return true;
|
177
178
|
},
|
178
179
|
close: function() {
|
179
180
|
_this._back();
|
@@ -186,17 +187,19 @@ class Drilldown {
|
|
186
187
|
setTimeout(function() {
|
187
188
|
$element.parent('li').parent('ul').parent('li').children('a').first().focus();
|
188
189
|
}, 1);
|
189
|
-
});
|
190
|
-
e.preventDefault();
|
190
|
+
});
|
191
191
|
} else if ($element.is(_this.$submenuAnchors)) {
|
192
192
|
_this._show($element.parent('li'));
|
193
193
|
$element.parent('li').one(Foundation.transitionend($element), function(){
|
194
194
|
$element.parent('li').find('ul li a').filter(_this.$menuItems).first().focus();
|
195
|
-
});
|
196
|
-
e.preventDefault();
|
195
|
+
});
|
197
196
|
}
|
197
|
+
return true;
|
198
198
|
},
|
199
|
-
handled: function() {
|
199
|
+
handled: function(preventDefault) {
|
200
|
+
if (preventDefault) {
|
201
|
+
e.preventDefault();
|
202
|
+
}
|
200
203
|
e.stopImmediatePropagation();
|
201
204
|
}
|
202
205
|
});
|
@@ -262,7 +265,10 @@ class Drilldown {
|
|
262
265
|
*/
|
263
266
|
_show($elem) {
|
264
267
|
$elem.children('[data-submenu]').addClass('is-active');
|
265
|
-
|
268
|
+
/**
|
269
|
+
* Fires when the submenu has opened.
|
270
|
+
* @event Drilldown#open
|
271
|
+
*/
|
266
272
|
this.$element.trigger('open.zf.drilldown', [$elem]);
|
267
273
|
};
|
268
274
|
|
@@ -280,7 +286,7 @@ class Drilldown {
|
|
280
286
|
$elem.blur();
|
281
287
|
});
|
282
288
|
/**
|
283
|
-
* Fires when the submenu
|
289
|
+
* Fires when the submenu has closed.
|
284
290
|
* @event Drilldown#hide
|
285
291
|
*/
|
286
292
|
$elem.trigger('hide.zf.drilldown', [$elem]);
|
@@ -315,8 +321,10 @@ class Drilldown {
|
|
315
321
|
this.$element.unwrap()
|
316
322
|
.find('.js-drilldown-back, .is-submenu-parent-item').remove()
|
317
323
|
.end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu')
|
318
|
-
.end().find('[data-submenu]').removeAttr('aria-hidden tabindex role')
|
319
|
-
|
324
|
+
.end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');
|
325
|
+
this.$submenuAnchors.each(function() {
|
326
|
+
$(this).off('.zf.drilldown');
|
327
|
+
});
|
320
328
|
this.$element.find('a').each(function(){
|
321
329
|
var $link = $(this);
|
322
330
|
if($link.data('savedHref')){
|
@@ -358,4 +366,4 @@ Drilldown.defaults = {
|
|
358
366
|
// Window exports
|
359
367
|
Foundation.plugin(Drilldown, 'Drilldown');
|
360
368
|
|
361
|
-
}(jQuery);
|
369
|
+
}(jQuery);
|
@@ -71,7 +71,7 @@ class Dropdown {
|
|
71
71
|
getPositionClass() {
|
72
72
|
var verticalPosition = this.$element[0].className.match(/(top|left|right|bottom)/g);
|
73
73
|
verticalPosition = verticalPosition ? verticalPosition[0] : '';
|
74
|
-
var horizontalPosition = /float-(
|
74
|
+
var horizontalPosition = /float-(\S+)\s/.exec(this.$anchor[0].className);
|
75
75
|
horizontalPosition = horizontalPosition ? horizontalPosition[1] : '';
|
76
76
|
var position = horizontalPosition ? horizontalPosition + ' ' + verticalPosition : verticalPosition;
|
77
77
|
return position;
|
@@ -69,34 +69,36 @@ class DropdownMenu {
|
|
69
69
|
hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined'),
|
70
70
|
parClass = 'is-dropdown-submenu-parent';
|
71
71
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
72
|
+
// used for onClick and in the keyboard handlers
|
73
|
+
var handleClickFn = function(e) {
|
74
|
+
var $elem = $(e.target).parentsUntil('ul', `.${parClass}`),
|
75
|
+
hasSub = $elem.hasClass(parClass),
|
76
|
+
hasClicked = $elem.attr('data-is-click') === 'true',
|
77
|
+
$sub = $elem.children('.is-dropdown-submenu');
|
78
78
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
e.stopImmediatePropagation();
|
84
|
-
e.preventDefault();
|
85
|
-
_this._hide($elem);
|
86
|
-
}
|
87
|
-
} else {
|
88
|
-
e.preventDefault();
|
79
|
+
if (hasSub) {
|
80
|
+
if (hasClicked) {
|
81
|
+
if (!_this.options.closeOnClick || (!_this.options.clickOpen && !hasTouch) || (_this.options.forceFollow && hasTouch)) { return; }
|
82
|
+
else {
|
89
83
|
e.stopImmediatePropagation();
|
90
|
-
|
91
|
-
|
84
|
+
e.preventDefault();
|
85
|
+
_this._hide($elem);
|
92
86
|
}
|
93
|
-
} else {
|
94
|
-
|
87
|
+
} else {
|
88
|
+
e.preventDefault();
|
89
|
+
e.stopImmediatePropagation();
|
90
|
+
_this._show($elem.children('.is-dropdown-submenu'));
|
91
|
+
$elem.add($elem.parentsUntil(_this.$element, `.${parClass}`)).attr('data-is-click', true);
|
92
|
+
}
|
93
|
+
} else { return; }
|
94
|
+
};
|
95
|
+
|
96
|
+
if (this.options.clickOpen || hasTouch) {
|
97
|
+
this.$menuItems.on('click.zf.dropdownmenu touchstart.zf.dropdownmenu', handleClickFn);
|
95
98
|
}
|
96
99
|
|
97
100
|
if (!this.options.disableHover) {
|
98
101
|
this.$menuItems.on('mouseenter.zf.dropdownmenu', function(e) {
|
99
|
-
e.stopImmediatePropagation();
|
100
102
|
var $elem = $(this),
|
101
103
|
hasSub = $elem.hasClass(parClass);
|
102
104
|
|
@@ -135,20 +137,26 @@ class DropdownMenu {
|
|
135
137
|
});
|
136
138
|
|
137
139
|
var nextSibling = function() {
|
138
|
-
if (!$element.is(':last-child'))
|
140
|
+
if (!$element.is(':last-child')) {
|
141
|
+
$nextElement.children('a:first').focus();
|
142
|
+
e.preventDefault();
|
143
|
+
}
|
139
144
|
}, prevSibling = function() {
|
140
145
|
$prevElement.children('a:first').focus();
|
146
|
+
e.preventDefault();
|
141
147
|
}, openSub = function() {
|
142
148
|
var $sub = $element.children('ul.is-dropdown-submenu');
|
143
149
|
if ($sub.length) {
|
144
150
|
_this._show($sub);
|
145
151
|
$element.find('li > a:first').focus();
|
152
|
+
e.preventDefault();
|
146
153
|
} else { return; }
|
147
154
|
}, closeSub = function() {
|
148
155
|
//if ($element.is(':first-child')) {
|
149
156
|
var close = $element.parent('ul').parent('li');
|
150
|
-
|
151
|
-
|
157
|
+
close.children('a:first').focus();
|
158
|
+
_this._hide(close);
|
159
|
+
e.preventDefault();
|
152
160
|
//}
|
153
161
|
};
|
154
162
|
var functions = {
|
@@ -156,15 +164,15 @@ class DropdownMenu {
|
|
156
164
|
close: function() {
|
157
165
|
_this._hide(_this.$element);
|
158
166
|
_this.$menuItems.find('a:first').focus(); // focus to first element
|
167
|
+
e.preventDefault();
|
159
168
|
},
|
160
169
|
handled: function() {
|
161
|
-
e.preventDefault();
|
162
170
|
e.stopImmediatePropagation();
|
163
171
|
}
|
164
172
|
};
|
165
173
|
|
166
174
|
if (isTab) {
|
167
|
-
if (_this.
|
175
|
+
if (_this.$element.hasClass(_this.options.verticalClass)) { // vertical menu
|
168
176
|
if (_this.options.alignment === 'left') { // left aligned
|
169
177
|
$.extend(functions, {
|
170
178
|
down: nextSibling,
|