framework7-without-localstorage
Version:
Full featured mobile HTML framework for building iOS & Android apps
60 lines • 2.37 kB
JavaScript
/*===============================================================================
************ Accordion ************
===============================================================================*/
app.accordionToggle = function (item) {
item = $(item);
if (item.length === 0) return;
if (item.hasClass('accordion-item-expanded')) app.accordionClose(item);
else app.accordionOpen(item);
};
app.accordionOpen = function (item) {
item = $(item);
var list = item.parents('.accordion-list').eq(0);
var content = item.children('.accordion-item-content');
if (content.length === 0) content = item.find('.accordion-item-content');
var expandedItem = list.length > 0 && item.parent().children('.accordion-item-expanded');
if (expandedItem.length > 0) {
app.accordionClose(expandedItem);
}
content.css('height', content[0].scrollHeight + 'px').transitionEnd(function () {
if (item.hasClass('accordion-item-expanded')) {
content.transition(0);
content.css('height', 'auto');
var clientLeft = content[0].clientLeft;
content.transition('');
item.trigger('opened accordion:opened');
}
else {
content.css('height', '');
item.trigger('closed accordion:closed');
}
});
item.trigger('open accordion:open');
item.addClass('accordion-item-expanded');
};
app.accordionClose = function (item) {
item = $(item);
var content = item.children('.accordion-item-content');
if (content.length === 0) content = item.find('.accordion-item-content');
item.removeClass('accordion-item-expanded');
content.transition(0);
content.css('height', content[0].scrollHeight + 'px');
// Relayout
var clientLeft = content[0].clientLeft;
// Close
content.transition('');
content.css('height', '').transitionEnd(function () {
if (item.hasClass('accordion-item-expanded')) {
content.transition(0);
content.css('height', 'auto');
var clientLeft = content[0].clientLeft;
content.transition('');
item.trigger('opened accordion:opened');
}
else {
content.css('height', '');
item.trigger('closed accordion:closed');
}
});
item.trigger('close accordion:close');
};