Skip to content

Commit 369bb88

Browse files
Put back interactions with settings menus
1 parent e5b4416 commit 369bb88

File tree

3 files changed

+62
-54
lines changed

3 files changed

+62
-54
lines changed

util/gh-pages/index_template.html

Lines changed: 12 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -59,86 +59,62 @@ <h1>Clippy Lints</h1>
5959
<div class="panel panel-default">
6060
<div class="panel-body row">
6161
<div id="upper-filters" class="col-12 col-md-5">
62-
<div class="btn-group" id="lint-levels">
62+
<div class="btn-group" id="lint-levels" tabindex="-1">
6363
<button type="button" class="btn btn-default dropdown-toggle">
6464
Lint levels <span class="badge" id="selected-levels">4</span> <span class="caret"></span>
6565
</button>
6666
<ul class="dropdown-menu" id="lint-levels-selector">
6767
<li class="checkbox">
68-
<label onclick="toggleLevels(true)">
69-
<input type="checkbox" class="invisible" />
70-
All
71-
</label>
68+
<button onclick="toggleElements(this, true)">All</button>
7269
</li>
7370
<li class="checkbox">
74-
<label onclick="toggleLevels(false)">
75-
<input type="checkbox" class="invisible" />
76-
None
77-
</label>
71+
<button onclick="toggleElements(this, false)">None</button>
7872
</li>
7973
<li role="separator" class="divider"></li>
8074
</ul>
8175
</div>
82-
<div class="btn-group" id="lint-groups">
76+
<div class="btn-group" id="lint-groups" tabindex="-1">
8377
<button type="button" class="btn btn-default dropdown-toggle">
8478
Lint groups <span class="badge" id="selected-groups"></span> <span class="caret"></span>
8579
</button>
8680
<ul class="dropdown-menu" id="lint-groups-selector">
8781
<li class="checkbox">
88-
<label onclick="toggleGroups(true)">
89-
<input type="checkbox" class="invisible" />
90-
All
91-
</label>
82+
<button onclick="toggleElements(this, true)">All</button>
9283
</li>
9384
<li class="checkbox">
94-
<label onclick="resetGroupsToDefault()">
95-
<input type="checkbox" class="invisible" />
96-
Default
97-
</label>
85+
<button onclick="resetGroupsToDefault()">Default</button>
9886
</li>
9987
<li class="checkbox">
100-
<label onclick="toggleGroups(false)">
101-
<input type="checkbox" class="invisible" />
102-
None
103-
</label>
88+
<button onclick="toggleElements(this, false)">None</button>
10489
</li>
10590
<li role="separator" class="divider"></li>
10691
</ul>
10792
</div>
108-
<div class="btn-group" id="version-filter">
93+
<div class="btn-group" id="version-filter" tabindex="-1">
10994
<button type="button" class="btn btn-default dropdown-toggle">
11095
Version
11196
<span id="version-filter-count" class="badge">0</span>
11297
<span class="caret"></span>
11398
</button>
11499
<ul id="version-filter-selector" class="dropdown-menu">
115100
<li class="checkbox">
116-
<label onclick="clearVersionFilters()">
117-
<input type="checkbox" class="invisible" />
118-
Clear filters
119-
</label>
101+
<button onclick="clearVersionFilters()">Clear filters</button>
120102
</li>
121103
<li role="separator" class="divider"></li>
122104
</ul>
123105
</div>
124-
<div class="btn-group", id="lint-applicabilities">
106+
<div class="btn-group", id="lint-applicabilities" tabindex="-1">
125107
<button type="button" class="btn btn-default dropdown-toggle">
126108
Applicability
127109
<span class="badge"></span>
128110
<span class="caret"></span>
129111
</button>
130112
<ul class="dropdown-menu" id="lint-applicabilities-selector">
131113
<li class="checkbox">
132-
<label onclick="toggleApplicabilities(true)">
133-
<input type="checkbox" class="invisible" />
134-
All
135-
</label>
114+
<button onclick="toggleElements(this, true)">All</button>
136115
</li>
137116
<li class="checkbox">
138-
<label onclick="toggleApplicabilities(false)">
139-
<input type="checkbox" class="invisible" />
140-
None
141-
</label>
117+
<button onclick="toggleElements(this, false)">None</button>
142118
</li>
143119
<li role="separator" class="divider"></li>
144120
</ul>

util/gh-pages/script.js

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,14 @@ function handleShortcut(ev) {
151151
document.addEventListener("keypress", handleShortcut);
152152
document.addEventListener("keydown", handleShortcut);
153153

154+
function toggleElements(element, value) {
155+
// `element` is always a button in a `li` in a `ul`. We want the `input` in the `ul`.
156+
onEachLazy(
157+
element.parentElement.parentElement.getElementsByTagName("input"),
158+
el => el.checked = value,
159+
);
160+
}
161+
154162
function changeSetting(elem) {
155163
if (elem.id === "disable-shortcuts") {
156164
disableShortcuts = elem.checked;
@@ -227,6 +235,30 @@ function toggleExpansion(expand) {
227235
);
228236
}
229237

238+
function clearVersionFilters() {
239+
onEachLazy(document.querySelectorAll("#version-filter-count input"), el => el.value = "");
240+
}
241+
242+
const GROUPS_FILTER_DEFAULT = {
243+
cargo: true,
244+
complexity: true,
245+
correctness: true,
246+
deprecated: false,
247+
nursery: true,
248+
pedantic: true,
249+
perf: true,
250+
restriction: true,
251+
style: true,
252+
suspicious: true,
253+
};
254+
255+
function resetGroupsToDefault() {
256+
onEachLazy(document.querySelectorAll("#lint-groups-selector input"), el => {
257+
const key = el.getAttribute("data-value");
258+
el.checked = GROUPS_FILTER_DEFAULT[key];
259+
});
260+
}
261+
230262
function generateListOfOptions(list, elementId) {
231263
let html = '';
232264
let nbEnabled = 0;
@@ -235,7 +267,7 @@ function generateListOfOptions(list, elementId) {
235267
html += `\
236268
<li class="checkbox">\
237269
<label class="text-capitalize">\
238-
<input type="checkbox"${attr}/>${key}\
270+
<input type="checkbox" data-value="${key}"${attr}/>${key}\
239271
</label>\
240272
</li>`;
241273
if (value) {
@@ -255,12 +287,12 @@ function setupDropdown(elementId) {
255287
const button = document.querySelector(`#${elementId} > button`);
256288
button.onclick = () => elem.classList.toggle("open");
257289

258-
onEachLazy(elem.children, child => {
259-
child.onblur = event => handleBlur(event, elementId);
260-
});
261-
onEachLazy(elem.querySelectorAll("input"), child => {
290+
const setBlur = child => {
262291
child.onblur = event => handleBlur(event, elementId);
263-
});
292+
};
293+
onEachLazy(elem.children, setBlur);
294+
onEachLazy(elem.querySelectorAll("input"), setBlur);
295+
onEachLazy(elem.querySelectorAll("ul button"), setBlur);
264296
}
265297

266298
function generateSettings() {
@@ -270,18 +302,6 @@ function generateSettings() {
270302
generateListOfOptions(LEVEL_FILTERS_DEFAULT, "lint-levels");
271303

272304
// Generate lint groups.
273-
const GROUPS_FILTER_DEFAULT = {
274-
cargo: true,
275-
complexity: true,
276-
correctness: true,
277-
deprecated: false,
278-
nursery: true,
279-
pedantic: true,
280-
perf: true,
281-
restriction: true,
282-
style: true,
283-
suspicious: true,
284-
};
285305
generateListOfOptions(GROUPS_FILTER_DEFAULT, "lint-groups");
286306

287307
const APPLICABILITIES_FILTER_DEFAULT = {

util/gh-pages/style.css

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,18 @@ L4.75,12h2.5l0.5393066-2.1572876 c0.2276001-0.1062012,0.4459839-0.2269287,0.649
327327
display: flex;
328328
}
329329

330+
ul.dropdown-menu li.checkbox > button {
331+
border: 0;
332+
width: 100%;
333+
background: var(--theme-popup-bg);
334+
color: var(--fg);
335+
}
336+
337+
ul.dropdown-menu li.checkbox > button:hover {
338+
background: var(--theme-hover);
339+
box-shadow: none;
340+
}
341+
330342
#version-filter {
331343
min-width: available;
332344
}

0 commit comments

Comments
 (0)