JSFiddle - React, Tailwind, and code Playground
HTML
<div id="subfilterNamesContainer">
<label>
<input type="checkbox" value="X"> X
</label>
<label>
<input type="checkbox" value="A"> A
</label>
<label>
<input type="checkbox" value="A A" class="default"> A A
</label>
<label>
<input type="checkbox" value="A B" class="default"> A B
</label>
<label>
<input type="checkbox" value="F" checked="true"> F
</label>
<label>
<input type="checkbox" value="E" checked="true"> E
</label>
</div>
CSS
label {
display: block;
}
JavaScript
function sortGiveNamesFilter() {
$('#subfilterNamesContainer label').sort(function(a, b) {
var $a = $(a).find(':checkbox'),
$b = $(b).find(':checkbox');
if ($a.hasClass('default') && !$b.hasClass('default'))
return -1;
else if (!$a.hasClass('default') && $b.hasClass('default'))
return 1;
if ($a.is(':checked') && !$b.is(':checked'))
return -1;
else if (!$a.is(':checked') && $b.is(':checked'))
return 1;
if ($a.val() < $b.val())
return -1;
else if ($a.val() > $b.val())
return 1;
return 0;
}).appendTo('#subfilterNamesContainer');
$('#subfilterNamesContainer .default:last, #subfilterNamesContainer :checked:last').closest('label').after('<hr />');
}
sortGiveNamesFilter();