mirror of
https://github.com/mdbootstrap/mdb-ui-kit.git
synced 2024-11-22 09:36:55 +03:00
release: 3.9.0
This commit is contained in:
parent
9640f31de2
commit
835b9260ef
|
@ -1,5 +1,5 @@
|
||||||
MDB5
|
MDB5
|
||||||
Version: FREE 3.8.1
|
Version: FREE 3.9.0
|
||||||
|
|
||||||
Documentation:
|
Documentation:
|
||||||
https://mdbootstrap.com/docs/standard/
|
https://mdbootstrap.com/docs/standard/
|
||||||
|
|
2
css/mdb.dark.min.css
vendored
2
css/mdb.dark.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
css/mdb.dark.rtl.min.css
vendored
2
css/mdb.dark.rtl.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
css/mdb.min.css
vendored
4
css/mdb.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
css/mdb.rtl.min.css
vendored
2
css/mdb.rtl.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
js/mdb.min.js
vendored
4
js/mdb.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "mdb-ui-kit",
|
"name": "mdb-ui-kit",
|
||||||
"version": "3.8.1",
|
"version": "3.9.0",
|
||||||
"main": "js/mdb.min.js",
|
"main": "js/mdb.min.js",
|
||||||
"homepage": "https://mdbootstrap.com/docs/standard/",
|
"homepage": "https://mdbootstrap.com/docs/standard/",
|
||||||
"repository": "https://github.com/mdbootstrap/mdb-ui-kit.git",
|
"repository": "https://github.com/mdbootstrap/mdb-ui-kit.git",
|
||||||
|
|
|
@ -184,7 +184,6 @@ class Collapse extends BaseComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setTransitioning(true);
|
this.setTransitioning(true);
|
||||||
|
|
||||||
const complete = () => {
|
const complete = () => {
|
||||||
this._element.classList.remove(CLASS_NAME_COLLAPSING);
|
this._element.classList.remove(CLASS_NAME_COLLAPSING);
|
||||||
this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
|
this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
|
||||||
|
|
|
@ -244,10 +244,9 @@ class ScrollSpy extends BaseComponent {
|
||||||
SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP).forEach((listGroup) => {
|
SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP).forEach((listGroup) => {
|
||||||
// Set triggered links parents as active
|
// Set triggered links parents as active
|
||||||
// With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
|
// With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
|
||||||
SelectorEngine.prev(
|
SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`).forEach(
|
||||||
listGroup,
|
(item) => item.classList.add(CLASS_NAME_ACTIVE)
|
||||||
`${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`
|
);
|
||||||
).forEach((item) => item.classList.add(CLASS_NAME_ACTIVE));
|
|
||||||
|
|
||||||
// Handle special case when .nav-link is inside .nav-item
|
// Handle special case when .nav-link is inside .nav-item
|
||||||
SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach((navItem) => {
|
SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach((navItem) => {
|
||||||
|
@ -296,9 +295,9 @@ class ScrollSpy extends BaseComponent {
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
|
// EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
|
||||||
SelectorEngine.find(SELECTOR_DATA_SPY).forEach((spy) => new ScrollSpy(spy));
|
// SelectorEngine.find(SELECTOR_DATA_SPY).forEach((spy) => new ScrollSpy(spy));
|
||||||
});
|
// });
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
|
|
|
@ -16,18 +16,23 @@ const EVENT_KEY = `.${DATA_KEY}`;
|
||||||
const DATA_API_KEY = '.data-api';
|
const DATA_API_KEY = '.data-api';
|
||||||
|
|
||||||
const EVENT_ACTIVATE_BS = 'activate.bs.scrollspy';
|
const EVENT_ACTIVATE_BS = 'activate.bs.scrollspy';
|
||||||
|
|
||||||
const EVENT_ACTIVATE = `activate${EVENT_KEY}`;
|
const EVENT_ACTIVATE = `activate${EVENT_KEY}`;
|
||||||
|
|
||||||
const SELECTOR_DATA_SPY = '[data-mdb-spy="scroll"]';
|
|
||||||
const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
|
const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
|
||||||
|
|
||||||
|
const CLASS_COLLAPSIBLE = 'collapsible-scrollspy';
|
||||||
|
const CLASS_ACTIVE = 'active';
|
||||||
|
|
||||||
|
const SELECTOR_LIST = 'ul';
|
||||||
|
const SELECTOR_DATA_SPY = '[data-mdb-spy="scroll"]';
|
||||||
|
const SELECTOR_ACTIVE = `.${CLASS_ACTIVE}`;
|
||||||
|
const SELECTOR_COLLAPSIBLE_SCROLLSPY = `.${CLASS_COLLAPSIBLE}`;
|
||||||
|
|
||||||
class ScrollSpy extends BSScrollSpy {
|
class ScrollSpy extends BSScrollSpy {
|
||||||
constructor(element, data) {
|
constructor(element, data) {
|
||||||
super(element, data);
|
super(element, data);
|
||||||
|
|
||||||
this._scrollElement = element.tagName === 'BODY' ? window : element;
|
this._scrollElement = element.tagName === 'BODY' ? window : element;
|
||||||
|
this._collapsibles = [];
|
||||||
this._init();
|
this._init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,10 +51,77 @@ class ScrollSpy extends BSScrollSpy {
|
||||||
// Private
|
// Private
|
||||||
_init() {
|
_init() {
|
||||||
this._bindActivateEvent();
|
this._bindActivateEvent();
|
||||||
|
this._getCollapsibles();
|
||||||
|
|
||||||
|
if (this._collapsibles.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._showSubsection();
|
||||||
|
this._hideSubsection();
|
||||||
|
}
|
||||||
|
|
||||||
|
_getHeight(element) {
|
||||||
|
return element.offsetHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
_hide(target) {
|
||||||
|
const itemsToHide = SelectorEngine.findOne(SELECTOR_LIST, target.parentNode);
|
||||||
|
itemsToHide.style.overflow = 'hidden';
|
||||||
|
itemsToHide.style.height = `${0}px`;
|
||||||
|
}
|
||||||
|
|
||||||
|
_show(target, destinedHeight) {
|
||||||
|
target.style.height = destinedHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
_getCollapsibles() {
|
||||||
|
const collapsibleElements = SelectorEngine.find(SELECTOR_COLLAPSIBLE_SCROLLSPY);
|
||||||
|
|
||||||
|
if (!collapsibleElements) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
collapsibleElements.forEach((collapsibleElement) => {
|
||||||
|
const listParent = collapsibleElement.parentNode;
|
||||||
|
const list = SelectorEngine.findOne(SELECTOR_LIST, listParent);
|
||||||
|
const listHeight = list.offsetHeight;
|
||||||
|
this._collapsibles.push({
|
||||||
|
element: list,
|
||||||
|
relatedTarget: collapsibleElement.getAttribute('href'),
|
||||||
|
height: `${listHeight}px`,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_showSubsection() {
|
||||||
|
const activeElements = SelectorEngine.find(SELECTOR_ACTIVE);
|
||||||
|
const actives = activeElements.filter((active) => {
|
||||||
|
return Manipulator.hasClass(active, CLASS_COLLAPSIBLE);
|
||||||
|
});
|
||||||
|
|
||||||
|
actives.forEach((active) => {
|
||||||
|
const list = SelectorEngine.findOne(SELECTOR_LIST, active.parentNode);
|
||||||
|
const height = this._collapsibles.find((collapsible) => {
|
||||||
|
return (collapsible.relatedTarget = active.getAttribute('href'));
|
||||||
|
}).height;
|
||||||
|
this._show(list, height);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_hideSubsection() {
|
||||||
|
const unactives = SelectorEngine.find(SELECTOR_COLLAPSIBLE_SCROLLSPY).filter((collapsible) => {
|
||||||
|
return Manipulator.hasClass(collapsible, 'active') === false;
|
||||||
|
});
|
||||||
|
unactives.forEach((unactive) => {
|
||||||
|
this._hide(unactive);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_bindActivateEvent() {
|
_bindActivateEvent() {
|
||||||
EventHandler.on(this._scrollElement, EVENT_ACTIVATE_BS, (e) => {
|
EventHandler.on(this._scrollElement, EVENT_ACTIVATE_BS, (e) => {
|
||||||
|
this._showSubsection();
|
||||||
|
this._hideSubsection();
|
||||||
EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {
|
EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {
|
||||||
relatedTarget: e.relatedTarget,
|
relatedTarget: e.relatedTarget,
|
||||||
});
|
});
|
||||||
|
|
|
@ -25,5 +25,10 @@
|
||||||
$scrollspy-menu-sidebar-active-border-color;
|
$scrollspy-menu-sidebar-active-border-color;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.collapsible-scrollspy ~ .nav {
|
||||||
|
transition: height 0.5s ease;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user