altinn-designsystem
Version:
Altinn Design system based on Pattern Lab.
56 lines (47 loc) • 1.66 kB
JavaScript
/* globals compareTo */
var sortListAlphanumerically = function(src, sortIndex) {
var $list = $(src).closest('.a-list-container').find('.a-list');
var rows = $list.find('li:not(.a-list-header)');
var reverse;
var active = $(src).hasClass('a-active');
if (!active) {
$(src).closest('.a-list-container').find('.a-list-sortHeader').removeClass('a-active')
.removeClass('a-js-reverse-sort');
$(src).addClass('a-active');
} else {
$(src).toggleClass('a-js-reverse-sort');
}
reverse = $(src).hasClass('a-js-reverse-sort');
rows.sort(function(a, b) {
var A = $($($($(a).children()[0]).children()[sortIndex]).find('.a-js-sortValue')[0]).text()
.toUpperCase();
var B = $($($($(b).children()[0]).children()[sortIndex]).find('.a-js-sortValue')[0]).text()
.toUpperCase();
return reverse ? compareTo(B, A) : compareTo(A, B);
});
$.each(rows, function(index, row) {
if ($(row).find('.a-js-sortValue').length > 0) {
$list.append(row);
}
});
// handles load more row
$.each(rows, function(index, row) {
if ($(row).find('.a-js-sortValue').length === 0) {
$list.append(row);
}
});
};
var defaultListSort = function() {
$('.a-list-container').each(function() {
var sortHeader = $(this).find('.a-list-sortHeader')[0];
var index = $(sortHeader).index();
sortListAlphanumerically(sortHeader, index);
});
};
var addListSortHandler = function() {
$('.a-list-sortHeader').on('click', function() {
var index = $(this).index();
sortListAlphanumerically(this, index);
});
defaultListSort();
};