forked from adafruit/circuitpython-org
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontributing.js
63 lines (52 loc) · 1.89 KB
/
contributing.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
document.addEventListener('DOMContentLoaded', function() {
// only load on open issues page for now
var issueSelect = document.querySelector(".open-issues select");
if (!issueSelect) {
return;
}
issueSelect.onchange = issueSelectHandler;
// load issues label when using back button
window.addEventListener('popstate', loadIssues.bind(null, true));
// load issues label on page load
loadIssues();
}, false);
function loadIssues(isPopState) {
var params = new URLSearchParams(window.location.search);
var label = params.get('label');
if (!label) {
return;
}
issueSelectHandler(label, isPopState);
var issuesList = document.querySelector('.open-issues select');
issuesList.value = label;
}
function issueSelectHandler(event, isPopState) {
if (event.target) {
var selectedOption = this.options[this.selectedIndex].value;
} else {
// page loads will set the event as just the selected label from params
var selectedOption = event;
}
// don't set params on the back button
if (!isPopState) {
setIssueParams(selectedOption);
}
// hide all elements first
[].forEach.call(document.querySelectorAll('.issues-list li'), function (element) {
element.style.display = 'none';
element.parentElement.closest('li').style.display = 'none';
});
// show the selected options
var selectedOption = selectedOption === 'all' ? 'li' : `.${selectedOption}`;
var items = document.querySelectorAll(`.issues-list ${selectedOption}`);
items.forEach(function(item) {
item.style.display = 'block'
item.parentElement.closest('li').style.display = 'block';
});
}
function setIssueParams(label) {
var params = new URLSearchParams(window.location.search);
params.set("label", label);
var newUrl = `${window.location.protocol}//${window.location.host}${window.location.pathname}?${params.toString()}`;
window.history.pushState({path:newUrl}, '', newUrl);
}