mirror of
https://github.com/twbs/bootstrap.git
synced 2025-02-21 18:54:30 +01:00
grunt
This commit is contained in:
parent
b836371525
commit
e506e59c45
@ -141,13 +141,16 @@ var Util = function ($) {
|
|||||||
},
|
},
|
||||||
getSelectorFromElement: function getSelectorFromElement(element) {
|
getSelectorFromElement: function getSelectorFromElement(element) {
|
||||||
var selector = element.getAttribute('data-target');
|
var selector = element.getAttribute('data-target');
|
||||||
|
if (!selector || selector === '#') {
|
||||||
if (!selector) {
|
|
||||||
selector = element.getAttribute('href') || '';
|
selector = element.getAttribute('href') || '';
|
||||||
selector = /^#[a-z]/i.test(selector) ? selector : null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return selector;
|
try {
|
||||||
|
var $selector = $(selector);
|
||||||
|
return $selector.length > 0 ? selector : null;
|
||||||
|
} catch (error) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
reflow: function reflow(element) {
|
reflow: function reflow(element) {
|
||||||
return element.offsetHeight;
|
return element.offsetHeight;
|
||||||
@ -1055,7 +1058,8 @@ var Collapse = function ($) {
|
|||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
ACTIVES: '.card > .show, .card > .collapsing',
|
ACTIVES: '.card > .show, .card > .collapsing',
|
||||||
DATA_TOGGLE: '[data-toggle="collapse"]'
|
DATA_TOGGLE: '[data-toggle="collapse"]',
|
||||||
|
DATA_CHILDREN: 'data-children'
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1072,13 +1076,20 @@ var Collapse = function ($) {
|
|||||||
this._element = element;
|
this._element = element;
|
||||||
this._config = this._getConfig(config);
|
this._config = this._getConfig(config);
|
||||||
this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]')));
|
this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]')));
|
||||||
|
|
||||||
this._parent = this._config.parent ? this._getParent() : null;
|
this._parent = this._config.parent ? this._getParent() : null;
|
||||||
|
|
||||||
if (!this._config.parent) {
|
if (!this._config.parent) {
|
||||||
this._addAriaAndCollapsedClass(this._element, this._triggerArray);
|
this._addAriaAndCollapsedClass(this._element, this._triggerArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._selectorActives = Selector.ACTIVES;
|
||||||
|
if (this._parent) {
|
||||||
|
var childrenSelector = this._parent.hasAttribute(Selector.DATA_CHILDREN) ? this._parent.getAttribute(Selector.DATA_CHILDREN) : null;
|
||||||
|
if (childrenSelector !== null) {
|
||||||
|
this._selectorActives = childrenSelector + ' > .show, ' + childrenSelector + ' > .collapsing';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (this._config.toggle) {
|
if (this._config.toggle) {
|
||||||
this.toggle();
|
this.toggle();
|
||||||
}
|
}
|
||||||
@ -1111,7 +1122,7 @@ var Collapse = function ($) {
|
|||||||
var activesData = void 0;
|
var activesData = void 0;
|
||||||
|
|
||||||
if (this._parent) {
|
if (this._parent) {
|
||||||
actives = $.makeArray($(this._parent).find(Selector.ACTIVES));
|
actives = $.makeArray($(this._parent).find(this._selectorActives));
|
||||||
if (!actives.length) {
|
if (!actives.length) {
|
||||||
actives = null;
|
actives = null;
|
||||||
}
|
}
|
||||||
@ -1191,9 +1202,8 @@ var Collapse = function ($) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var dimension = this._getDimension();
|
var dimension = this._getDimension();
|
||||||
var offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight';
|
|
||||||
|
|
||||||
this._element.style[dimension] = this._element[offsetDimension] + 'px';
|
this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + 'px';
|
||||||
|
|
||||||
Util.reflow(this._element);
|
Util.reflow(this._element);
|
||||||
|
|
||||||
@ -1440,15 +1450,6 @@ var Dropdown = function ($) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
|
|
||||||
|
|
||||||
// if mobile we use a backdrop because click events don't delegate
|
|
||||||
var dropdown = document.createElement('div');
|
|
||||||
dropdown.className = ClassName.BACKDROP;
|
|
||||||
$(dropdown).insertBefore(this);
|
|
||||||
$(dropdown).on('click', Dropdown._clearMenus);
|
|
||||||
}
|
|
||||||
|
|
||||||
var relatedTarget = {
|
var relatedTarget = {
|
||||||
relatedTarget: this
|
relatedTarget: this
|
||||||
};
|
};
|
||||||
@ -1460,6 +1461,16 @@ var Dropdown = function ($) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set the backdrop only if the dropdown menu will be opened
|
||||||
|
if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
|
||||||
|
|
||||||
|
// if mobile we use a backdrop because click events don't delegate
|
||||||
|
var dropdown = document.createElement('div');
|
||||||
|
dropdown.className = ClassName.BACKDROP;
|
||||||
|
$(dropdown).insertBefore(this);
|
||||||
|
$(dropdown).on('click', Dropdown._clearMenus);
|
||||||
|
}
|
||||||
|
|
||||||
this.focus();
|
this.focus();
|
||||||
this.setAttribute('aria-expanded', true);
|
this.setAttribute('aria-expanded', true);
|
||||||
|
|
||||||
@ -1506,11 +1517,6 @@ var Dropdown = function ($) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var backdrop = $(Selector.BACKDROP)[0];
|
|
||||||
if (backdrop) {
|
|
||||||
backdrop.parentNode.removeChild(backdrop);
|
|
||||||
}
|
|
||||||
|
|
||||||
var toggles = $.makeArray($(Selector.DATA_TOGGLE));
|
var toggles = $.makeArray($(Selector.DATA_TOGGLE));
|
||||||
|
|
||||||
for (var i = 0; i < toggles.length; i++) {
|
for (var i = 0; i < toggles.length; i++) {
|
||||||
@ -1533,6 +1539,12 @@ var Dropdown = function ($) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remove backdrop only if the dropdown menu will be hidden
|
||||||
|
var backdrop = $(parent).find(Selector.BACKDROP)[0];
|
||||||
|
if (backdrop) {
|
||||||
|
backdrop.parentNode.removeChild(backdrop);
|
||||||
|
}
|
||||||
|
|
||||||
toggles[i].setAttribute('aria-expanded', 'false');
|
toggles[i].setAttribute('aria-expanded', 'false');
|
||||||
|
|
||||||
$(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
|
$(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
|
||||||
@ -2069,7 +2081,7 @@ var Modal = function ($) {
|
|||||||
var scrollDiv = document.createElement('div');
|
var scrollDiv = document.createElement('div');
|
||||||
scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
|
scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
|
||||||
document.body.appendChild(scrollDiv);
|
document.body.appendChild(scrollDiv);
|
||||||
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
|
||||||
document.body.removeChild(scrollDiv);
|
document.body.removeChild(scrollDiv);
|
||||||
return scrollbarWidth;
|
return scrollbarWidth;
|
||||||
};
|
};
|
||||||
@ -2288,10 +2300,13 @@ var ScrollSpy = function ($) {
|
|||||||
target = $(targetSelector)[0];
|
target = $(targetSelector)[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target && (target.offsetWidth || target.offsetHeight)) {
|
if (target) {
|
||||||
|
var targetBCR = target.getBoundingClientRect();
|
||||||
|
if (targetBCR.width || targetBCR.height) {
|
||||||
// todo (fat): remove sketch reliance on jQuery position/offset
|
// todo (fat): remove sketch reliance on jQuery position/offset
|
||||||
return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
|
return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}).filter(function (item) {
|
}).filter(function (item) {
|
||||||
return item;
|
return item;
|
||||||
@ -2345,7 +2360,7 @@ var ScrollSpy = function ($) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ScrollSpy.prototype._getOffsetHeight = function _getOffsetHeight() {
|
ScrollSpy.prototype._getOffsetHeight = function _getOffsetHeight() {
|
||||||
return this._scrollElement === window ? window.innerHeight : this._scrollElement.offsetHeight;
|
return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
|
||||||
};
|
};
|
||||||
|
|
||||||
ScrollSpy.prototype._process = function _process() {
|
ScrollSpy.prototype._process = function _process() {
|
||||||
@ -2521,10 +2536,10 @@ var Tab = function ($) {
|
|||||||
A: 'a',
|
A: 'a',
|
||||||
LI: 'li',
|
LI: 'li',
|
||||||
DROPDOWN: '.dropdown',
|
DROPDOWN: '.dropdown',
|
||||||
LIST: 'ul:not(.dropdown-menu), ol:not(.dropdown-menu), nav:not(.dropdown-menu)',
|
LIST: 'ul:not(.dropdown-menu), ol:not(.dropdown-menu), nav:not(.dropdown-menu), .list-group:not(.dropdown-menu)',
|
||||||
FADE_CHILD: '> .nav-item .fade, > .fade',
|
FADE_CHILD: '> .nav-item .fade, > .list-group-item .fade, > .fade',
|
||||||
ACTIVE: '.active',
|
ACTIVE: '.active',
|
||||||
ACTIVE_CHILD: '> .nav-item > .active, > .active',
|
ACTIVE_CHILD: '> .nav-item > .active, > .list-group-item > .active, > .active',
|
||||||
DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]',
|
DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]',
|
||||||
DROPDOWN_TOGGLE: '.dropdown-toggle',
|
DROPDOWN_TOGGLE: '.dropdown-toggle',
|
||||||
DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
|
DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
|
||||||
@ -2639,6 +2654,9 @@ var Tab = function ($) {
|
|||||||
Tab.prototype._transitionComplete = function _transitionComplete(element, active, isTransitioning, callback) {
|
Tab.prototype._transitionComplete = function _transitionComplete(element, active, isTransitioning, callback) {
|
||||||
if (active) {
|
if (active) {
|
||||||
$(active).removeClass(ClassName.ACTIVE);
|
$(active).removeClass(ClassName.ACTIVE);
|
||||||
|
if ($(active).hasClass('list-group-item')) {
|
||||||
|
$(active).find('a.nav-link').removeClass(ClassName.ACTIVE);
|
||||||
|
}
|
||||||
|
|
||||||
var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
|
var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
|
||||||
|
|
||||||
@ -2650,6 +2668,9 @@ var Tab = function ($) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$(element).addClass(ClassName.ACTIVE);
|
$(element).addClass(ClassName.ACTIVE);
|
||||||
|
if ($(element.parentNode).hasClass('list-group-item')) {
|
||||||
|
$(element.parentNode).addClass(ClassName.ACTIVE);
|
||||||
|
}
|
||||||
element.setAttribute('aria-expanded', true);
|
element.setAttribute('aria-expanded', true);
|
||||||
|
|
||||||
if (isTransitioning) {
|
if (isTransitioning) {
|
||||||
|
4
dist/js/bootstrap.min.js
vendored
4
dist/js/bootstrap.min.js
vendored
File diff suppressed because one or more lines are too long
@ -141,13 +141,16 @@ var Util = function ($) {
|
|||||||
},
|
},
|
||||||
getSelectorFromElement: function getSelectorFromElement(element) {
|
getSelectorFromElement: function getSelectorFromElement(element) {
|
||||||
var selector = element.getAttribute('data-target');
|
var selector = element.getAttribute('data-target');
|
||||||
|
if (!selector || selector === '#') {
|
||||||
if (!selector) {
|
|
||||||
selector = element.getAttribute('href') || '';
|
selector = element.getAttribute('href') || '';
|
||||||
selector = /^#[a-z]/i.test(selector) ? selector : null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return selector;
|
try {
|
||||||
|
var $selector = $(selector);
|
||||||
|
return $selector.length > 0 ? selector : null;
|
||||||
|
} catch (error) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
reflow: function reflow(element) {
|
reflow: function reflow(element) {
|
||||||
return element.offsetHeight;
|
return element.offsetHeight;
|
||||||
@ -1055,7 +1058,8 @@ var Collapse = function ($) {
|
|||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
ACTIVES: '.card > .show, .card > .collapsing',
|
ACTIVES: '.card > .show, .card > .collapsing',
|
||||||
DATA_TOGGLE: '[data-toggle="collapse"]'
|
DATA_TOGGLE: '[data-toggle="collapse"]',
|
||||||
|
DATA_CHILDREN: 'data-children'
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1072,13 +1076,20 @@ var Collapse = function ($) {
|
|||||||
this._element = element;
|
this._element = element;
|
||||||
this._config = this._getConfig(config);
|
this._config = this._getConfig(config);
|
||||||
this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]')));
|
this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]')));
|
||||||
|
|
||||||
this._parent = this._config.parent ? this._getParent() : null;
|
this._parent = this._config.parent ? this._getParent() : null;
|
||||||
|
|
||||||
if (!this._config.parent) {
|
if (!this._config.parent) {
|
||||||
this._addAriaAndCollapsedClass(this._element, this._triggerArray);
|
this._addAriaAndCollapsedClass(this._element, this._triggerArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._selectorActives = Selector.ACTIVES;
|
||||||
|
if (this._parent) {
|
||||||
|
var childrenSelector = this._parent.hasAttribute(Selector.DATA_CHILDREN) ? this._parent.getAttribute(Selector.DATA_CHILDREN) : null;
|
||||||
|
if (childrenSelector !== null) {
|
||||||
|
this._selectorActives = childrenSelector + ' > .show, ' + childrenSelector + ' > .collapsing';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (this._config.toggle) {
|
if (this._config.toggle) {
|
||||||
this.toggle();
|
this.toggle();
|
||||||
}
|
}
|
||||||
@ -1111,7 +1122,7 @@ var Collapse = function ($) {
|
|||||||
var activesData = void 0;
|
var activesData = void 0;
|
||||||
|
|
||||||
if (this._parent) {
|
if (this._parent) {
|
||||||
actives = $.makeArray($(this._parent).find(Selector.ACTIVES));
|
actives = $.makeArray($(this._parent).find(this._selectorActives));
|
||||||
if (!actives.length) {
|
if (!actives.length) {
|
||||||
actives = null;
|
actives = null;
|
||||||
}
|
}
|
||||||
@ -1191,9 +1202,8 @@ var Collapse = function ($) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var dimension = this._getDimension();
|
var dimension = this._getDimension();
|
||||||
var offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight';
|
|
||||||
|
|
||||||
this._element.style[dimension] = this._element[offsetDimension] + 'px';
|
this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + 'px';
|
||||||
|
|
||||||
Util.reflow(this._element);
|
Util.reflow(this._element);
|
||||||
|
|
||||||
@ -1440,15 +1450,6 @@ var Dropdown = function ($) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
|
|
||||||
|
|
||||||
// if mobile we use a backdrop because click events don't delegate
|
|
||||||
var dropdown = document.createElement('div');
|
|
||||||
dropdown.className = ClassName.BACKDROP;
|
|
||||||
$(dropdown).insertBefore(this);
|
|
||||||
$(dropdown).on('click', Dropdown._clearMenus);
|
|
||||||
}
|
|
||||||
|
|
||||||
var relatedTarget = {
|
var relatedTarget = {
|
||||||
relatedTarget: this
|
relatedTarget: this
|
||||||
};
|
};
|
||||||
@ -1460,6 +1461,16 @@ var Dropdown = function ($) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set the backdrop only if the dropdown menu will be opened
|
||||||
|
if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
|
||||||
|
|
||||||
|
// if mobile we use a backdrop because click events don't delegate
|
||||||
|
var dropdown = document.createElement('div');
|
||||||
|
dropdown.className = ClassName.BACKDROP;
|
||||||
|
$(dropdown).insertBefore(this);
|
||||||
|
$(dropdown).on('click', Dropdown._clearMenus);
|
||||||
|
}
|
||||||
|
|
||||||
this.focus();
|
this.focus();
|
||||||
this.setAttribute('aria-expanded', true);
|
this.setAttribute('aria-expanded', true);
|
||||||
|
|
||||||
@ -1506,11 +1517,6 @@ var Dropdown = function ($) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var backdrop = $(Selector.BACKDROP)[0];
|
|
||||||
if (backdrop) {
|
|
||||||
backdrop.parentNode.removeChild(backdrop);
|
|
||||||
}
|
|
||||||
|
|
||||||
var toggles = $.makeArray($(Selector.DATA_TOGGLE));
|
var toggles = $.makeArray($(Selector.DATA_TOGGLE));
|
||||||
|
|
||||||
for (var i = 0; i < toggles.length; i++) {
|
for (var i = 0; i < toggles.length; i++) {
|
||||||
@ -1533,6 +1539,12 @@ var Dropdown = function ($) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remove backdrop only if the dropdown menu will be hidden
|
||||||
|
var backdrop = $(parent).find(Selector.BACKDROP)[0];
|
||||||
|
if (backdrop) {
|
||||||
|
backdrop.parentNode.removeChild(backdrop);
|
||||||
|
}
|
||||||
|
|
||||||
toggles[i].setAttribute('aria-expanded', 'false');
|
toggles[i].setAttribute('aria-expanded', 'false');
|
||||||
|
|
||||||
$(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
|
$(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
|
||||||
@ -2069,7 +2081,7 @@ var Modal = function ($) {
|
|||||||
var scrollDiv = document.createElement('div');
|
var scrollDiv = document.createElement('div');
|
||||||
scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
|
scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
|
||||||
document.body.appendChild(scrollDiv);
|
document.body.appendChild(scrollDiv);
|
||||||
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
|
||||||
document.body.removeChild(scrollDiv);
|
document.body.removeChild(scrollDiv);
|
||||||
return scrollbarWidth;
|
return scrollbarWidth;
|
||||||
};
|
};
|
||||||
@ -2288,10 +2300,13 @@ var ScrollSpy = function ($) {
|
|||||||
target = $(targetSelector)[0];
|
target = $(targetSelector)[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target && (target.offsetWidth || target.offsetHeight)) {
|
if (target) {
|
||||||
|
var targetBCR = target.getBoundingClientRect();
|
||||||
|
if (targetBCR.width || targetBCR.height) {
|
||||||
// todo (fat): remove sketch reliance on jQuery position/offset
|
// todo (fat): remove sketch reliance on jQuery position/offset
|
||||||
return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
|
return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}).filter(function (item) {
|
}).filter(function (item) {
|
||||||
return item;
|
return item;
|
||||||
@ -2345,7 +2360,7 @@ var ScrollSpy = function ($) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ScrollSpy.prototype._getOffsetHeight = function _getOffsetHeight() {
|
ScrollSpy.prototype._getOffsetHeight = function _getOffsetHeight() {
|
||||||
return this._scrollElement === window ? window.innerHeight : this._scrollElement.offsetHeight;
|
return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
|
||||||
};
|
};
|
||||||
|
|
||||||
ScrollSpy.prototype._process = function _process() {
|
ScrollSpy.prototype._process = function _process() {
|
||||||
@ -2521,10 +2536,10 @@ var Tab = function ($) {
|
|||||||
A: 'a',
|
A: 'a',
|
||||||
LI: 'li',
|
LI: 'li',
|
||||||
DROPDOWN: '.dropdown',
|
DROPDOWN: '.dropdown',
|
||||||
LIST: 'ul:not(.dropdown-menu), ol:not(.dropdown-menu), nav:not(.dropdown-menu)',
|
LIST: 'ul:not(.dropdown-menu), ol:not(.dropdown-menu), nav:not(.dropdown-menu), .list-group:not(.dropdown-menu)',
|
||||||
FADE_CHILD: '> .nav-item .fade, > .fade',
|
FADE_CHILD: '> .nav-item .fade, > .list-group-item .fade, > .fade',
|
||||||
ACTIVE: '.active',
|
ACTIVE: '.active',
|
||||||
ACTIVE_CHILD: '> .nav-item > .active, > .active',
|
ACTIVE_CHILD: '> .nav-item > .active, > .list-group-item > .active, > .active',
|
||||||
DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]',
|
DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]',
|
||||||
DROPDOWN_TOGGLE: '.dropdown-toggle',
|
DROPDOWN_TOGGLE: '.dropdown-toggle',
|
||||||
DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
|
DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
|
||||||
@ -2639,6 +2654,9 @@ var Tab = function ($) {
|
|||||||
Tab.prototype._transitionComplete = function _transitionComplete(element, active, isTransitioning, callback) {
|
Tab.prototype._transitionComplete = function _transitionComplete(element, active, isTransitioning, callback) {
|
||||||
if (active) {
|
if (active) {
|
||||||
$(active).removeClass(ClassName.ACTIVE);
|
$(active).removeClass(ClassName.ACTIVE);
|
||||||
|
if ($(active).hasClass('list-group-item')) {
|
||||||
|
$(active).find('a.nav-link').removeClass(ClassName.ACTIVE);
|
||||||
|
}
|
||||||
|
|
||||||
var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
|
var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
|
||||||
|
|
||||||
@ -2650,6 +2668,9 @@ var Tab = function ($) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$(element).addClass(ClassName.ACTIVE);
|
$(element).addClass(ClassName.ACTIVE);
|
||||||
|
if ($(element.parentNode).hasClass('list-group-item')) {
|
||||||
|
$(element.parentNode).addClass(ClassName.ACTIVE);
|
||||||
|
}
|
||||||
element.setAttribute('aria-expanded', true);
|
element.setAttribute('aria-expanded', true);
|
||||||
|
|
||||||
if (isTransitioning) {
|
if (isTransitioning) {
|
||||||
|
4
docs/dist/js/bootstrap.min.js
vendored
4
docs/dist/js/bootstrap.min.js
vendored
File diff suppressed because one or more lines are too long
17
js/dist/collapse.js
vendored
17
js/dist/collapse.js
vendored
@ -59,7 +59,8 @@ var Collapse = function ($) {
|
|||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
ACTIVES: '.card > .show, .card > .collapsing',
|
ACTIVES: '.card > .show, .card > .collapsing',
|
||||||
DATA_TOGGLE: '[data-toggle="collapse"]'
|
DATA_TOGGLE: '[data-toggle="collapse"]',
|
||||||
|
DATA_CHILDREN: 'data-children'
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -76,13 +77,20 @@ var Collapse = function ($) {
|
|||||||
this._element = element;
|
this._element = element;
|
||||||
this._config = this._getConfig(config);
|
this._config = this._getConfig(config);
|
||||||
this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]')));
|
this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]')));
|
||||||
|
|
||||||
this._parent = this._config.parent ? this._getParent() : null;
|
this._parent = this._config.parent ? this._getParent() : null;
|
||||||
|
|
||||||
if (!this._config.parent) {
|
if (!this._config.parent) {
|
||||||
this._addAriaAndCollapsedClass(this._element, this._triggerArray);
|
this._addAriaAndCollapsedClass(this._element, this._triggerArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._selectorActives = Selector.ACTIVES;
|
||||||
|
if (this._parent) {
|
||||||
|
var childrenSelector = this._parent.hasAttribute(Selector.DATA_CHILDREN) ? this._parent.getAttribute(Selector.DATA_CHILDREN) : null;
|
||||||
|
if (childrenSelector !== null) {
|
||||||
|
this._selectorActives = childrenSelector + ' > .show, ' + childrenSelector + ' > .collapsing';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (this._config.toggle) {
|
if (this._config.toggle) {
|
||||||
this.toggle();
|
this.toggle();
|
||||||
}
|
}
|
||||||
@ -115,7 +123,7 @@ var Collapse = function ($) {
|
|||||||
var activesData = void 0;
|
var activesData = void 0;
|
||||||
|
|
||||||
if (this._parent) {
|
if (this._parent) {
|
||||||
actives = $.makeArray($(this._parent).find(Selector.ACTIVES));
|
actives = $.makeArray($(this._parent).find(this._selectorActives));
|
||||||
if (!actives.length) {
|
if (!actives.length) {
|
||||||
actives = null;
|
actives = null;
|
||||||
}
|
}
|
||||||
@ -195,9 +203,8 @@ var Collapse = function ($) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var dimension = this._getDimension();
|
var dimension = this._getDimension();
|
||||||
var offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight';
|
|
||||||
|
|
||||||
this._element.style[dimension] = this._element[offsetDimension] + 'px';
|
this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + 'px';
|
||||||
|
|
||||||
Util.reflow(this._element);
|
Util.reflow(this._element);
|
||||||
|
|
||||||
|
2
js/dist/collapse.js.map
vendored
2
js/dist/collapse.js.map
vendored
File diff suppressed because one or more lines are too long
30
js/dist/dropdown.js
vendored
30
js/dist/dropdown.js
vendored
@ -90,15 +90,6 @@ var Dropdown = function ($) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
|
|
||||||
|
|
||||||
// if mobile we use a backdrop because click events don't delegate
|
|
||||||
var dropdown = document.createElement('div');
|
|
||||||
dropdown.className = ClassName.BACKDROP;
|
|
||||||
$(dropdown).insertBefore(this);
|
|
||||||
$(dropdown).on('click', Dropdown._clearMenus);
|
|
||||||
}
|
|
||||||
|
|
||||||
var relatedTarget = {
|
var relatedTarget = {
|
||||||
relatedTarget: this
|
relatedTarget: this
|
||||||
};
|
};
|
||||||
@ -110,6 +101,16 @@ var Dropdown = function ($) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set the backdrop only if the dropdown menu will be opened
|
||||||
|
if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
|
||||||
|
|
||||||
|
// if mobile we use a backdrop because click events don't delegate
|
||||||
|
var dropdown = document.createElement('div');
|
||||||
|
dropdown.className = ClassName.BACKDROP;
|
||||||
|
$(dropdown).insertBefore(this);
|
||||||
|
$(dropdown).on('click', Dropdown._clearMenus);
|
||||||
|
}
|
||||||
|
|
||||||
this.focus();
|
this.focus();
|
||||||
this.setAttribute('aria-expanded', true);
|
this.setAttribute('aria-expanded', true);
|
||||||
|
|
||||||
@ -156,11 +157,6 @@ var Dropdown = function ($) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var backdrop = $(Selector.BACKDROP)[0];
|
|
||||||
if (backdrop) {
|
|
||||||
backdrop.parentNode.removeChild(backdrop);
|
|
||||||
}
|
|
||||||
|
|
||||||
var toggles = $.makeArray($(Selector.DATA_TOGGLE));
|
var toggles = $.makeArray($(Selector.DATA_TOGGLE));
|
||||||
|
|
||||||
for (var i = 0; i < toggles.length; i++) {
|
for (var i = 0; i < toggles.length; i++) {
|
||||||
@ -183,6 +179,12 @@ var Dropdown = function ($) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remove backdrop only if the dropdown menu will be hidden
|
||||||
|
var backdrop = $(parent).find(Selector.BACKDROP)[0];
|
||||||
|
if (backdrop) {
|
||||||
|
backdrop.parentNode.removeChild(backdrop);
|
||||||
|
}
|
||||||
|
|
||||||
toggles[i].setAttribute('aria-expanded', 'false');
|
toggles[i].setAttribute('aria-expanded', 'false');
|
||||||
|
|
||||||
$(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
|
$(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
|
||||||
|
2
js/dist/dropdown.js.map
vendored
2
js/dist/dropdown.js.map
vendored
File diff suppressed because one or more lines are too long
11
js/dist/util.js
vendored
11
js/dist/util.js
vendored
@ -111,13 +111,16 @@ var Util = function ($) {
|
|||||||
},
|
},
|
||||||
getSelectorFromElement: function getSelectorFromElement(element) {
|
getSelectorFromElement: function getSelectorFromElement(element) {
|
||||||
var selector = element.getAttribute('data-target');
|
var selector = element.getAttribute('data-target');
|
||||||
|
if (!selector || selector === '#') {
|
||||||
if (!selector) {
|
|
||||||
selector = element.getAttribute('href') || '';
|
selector = element.getAttribute('href') || '';
|
||||||
selector = /^#[a-z]/i.test(selector) ? selector : null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return selector;
|
try {
|
||||||
|
var $selector = $(selector);
|
||||||
|
return $selector.length > 0 ? selector : null;
|
||||||
|
} catch (error) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
reflow: function reflow(element) {
|
reflow: function reflow(element) {
|
||||||
return element.offsetHeight;
|
return element.offsetHeight;
|
||||||
|
2
js/dist/util.js.map
vendored
2
js/dist/util.js.map
vendored
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user