71 lines
2.2 KiB
JavaScript
Executable File
71 lines
2.2 KiB
JavaScript
Executable File
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
(function () {
|
|
'use strict';
|
|
|
|
$(document)
|
|
.on('click.dropdown', function (event) {
|
|
if (!$(event.target).is('[data-toggle=dropdown].active, ' +
|
|
'[data-toggle=dropdown].active *, ' +
|
|
'[data-toggle=dropdown].active + .dropdown-menu, ' +
|
|
'[data-toggle=dropdown].active + .dropdown-menu *,' +
|
|
'[data-toggle=dropdown].active + [data-target="dropdown"],' +
|
|
'[data-toggle=dropdown].active + [data-target="dropdown"] *')
|
|
) {
|
|
$('[data-toggle=dropdown].active').trigger('close.dropdown');
|
|
}
|
|
})
|
|
.on('keyup.dropdown', function (event) {
|
|
if (event.keyCode === 27) { // escape key
|
|
$('[data-toggle=dropdown].active').trigger('close.dropdown');
|
|
}
|
|
});
|
|
|
|
/** @function dropdown */
|
|
$.fn.dropdown = function (options) {
|
|
options = $.extend({
|
|
parent: null,
|
|
btnArrow: '.arrow',
|
|
activeClass: 'active'
|
|
}, options);
|
|
|
|
return this.each(function () {
|
|
var elem = $(this);
|
|
|
|
elem.off('open.dropdown, close.dropdown, click.dropdown');
|
|
elem.on('open.dropdown', function () {
|
|
elem.addClass(options.activeClass)
|
|
.parent()
|
|
.addClass(options.activeClass);
|
|
|
|
elem.find(options.btnArrow).text('\u25b2'); // arrow up
|
|
});
|
|
|
|
elem.on('close.dropdown', function () {
|
|
elem.removeClass(options.activeClass)
|
|
.parent()
|
|
.removeClass(options.activeClass);
|
|
|
|
elem.find(options.btnArrow).text('\u25bc'); // arrow down
|
|
});
|
|
|
|
elem.on('click.dropdown', function () {
|
|
var isActive = elem.hasClass('active');
|
|
|
|
$('[data-toggle=dropdown].active').trigger('close.dropdown');
|
|
elem.trigger(isActive ? 'close.dropdown' : 'open.dropdown');
|
|
|
|
return false;
|
|
});
|
|
});
|
|
};
|
|
|
|
$(function () {
|
|
$('[data-toggle=dropdown]').dropdown();
|
|
});
|
|
|
|
})();
|