Commit c5c4b62b authored by Heinrich Lee Yu's avatar Heinrich Lee Yu

Remove jQuery overhead in labels select rendering

parent e76e1e80
...@@ -199,8 +199,8 @@ export default class LabelsSelect { ...@@ -199,8 +199,8 @@ export default class LabelsSelect {
.catch(() => flash(__('Error fetching labels.'))); .catch(() => flash(__('Error fetching labels.')));
}, },
renderRow: function(label, instance) { renderRow: function(label, instance) {
var $a, var linkEl,
$li, listItemEl,
color, color,
colorEl, colorEl,
indeterminate, indeterminate,
...@@ -209,12 +209,11 @@ export default class LabelsSelect { ...@@ -209,12 +209,11 @@ export default class LabelsSelect {
spacing, spacing,
i, i,
marked, marked,
dropdownName,
dropdownValue; dropdownValue;
$li = $('<li>');
$a = $('<a href="#">');
selectedClass = []; selectedClass = [];
removesAll = label.id <= 0 || label.id == null; removesAll = label.id <= 0 || label.id == null;
if ($dropdown.hasClass('js-filter-bulk-update')) { if ($dropdown.hasClass('js-filter-bulk-update')) {
indeterminate = $dropdown.data('indeterminate') || []; indeterminate = $dropdown.data('indeterminate') || [];
marked = $dropdown.data('marked') || []; marked = $dropdown.data('marked') || [];
...@@ -233,7 +232,6 @@ export default class LabelsSelect { ...@@ -233,7 +232,6 @@ export default class LabelsSelect {
} }
} else { } else {
if (this.id(label)) { if (this.id(label)) {
dropdownName = $dropdown.data('fieldName');
dropdownValue = this.id(label) dropdownValue = this.id(label)
.toString() .toString()
.replace(/'/g, "\\'"); .replace(/'/g, "\\'");
...@@ -241,7 +239,7 @@ export default class LabelsSelect { ...@@ -241,7 +239,7 @@ export default class LabelsSelect {
if ( if (
$form.find( $form.find(
"input[type='hidden'][name='" + "input[type='hidden'][name='" +
dropdownName + this.fieldName +
"'][value='" + "'][value='" +
dropdownValue + dropdownValue +
"']", "']",
...@@ -251,25 +249,34 @@ export default class LabelsSelect { ...@@ -251,25 +249,34 @@ export default class LabelsSelect {
} }
} }
if ($dropdown.hasClass('js-multiselect') && removesAll) { if (this.multiSelect && removesAll) {
selectedClass.push('dropdown-clear-active'); selectedClass.push('dropdown-clear-active');
} }
} }
if (label.color) { if (label.color) {
colorEl = colorEl =
"<span class='dropdown-label-box' style='background: " + label.color + "'></span>"; "<span class='dropdown-label-box' style='background: " + label.color + "'></span>";
} else { } else {
colorEl = ''; colorEl = '';
} }
linkEl = document.createElement('a');
linkEl.href = '#';
// We need to identify which items are actually labels // We need to identify which items are actually labels
if (label.id) { if (label.id) {
selectedClass.push('label-item'); selectedClass.push('label-item');
$a.attr('data-label-id', label.id); linkEl.dataset.labelId = label.id;
} }
$a.addClass(selectedClass.join(' ')).html(`${colorEl} ${_.escape(label.title)}`); linkEl.className = selectedClass.join(' ');
linkEl.innerHTML = `${colorEl} ${_.escape(label.title)}`;
listItemEl = document.createElement('li');
listItemEl.appendChild(linkEl);
return $li.html($a); return listItemEl;
}, },
search: { search: {
fields: ['title'], fields: ['title'],
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment