Skip to content

Commit 2bf06be

Browse files
committed
Autosize preset buttons final.
1 parent 9815e0f commit 2bf06be

2 files changed

Lines changed: 47 additions & 39 deletions

File tree

src/ui/ui.css

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -199,17 +199,18 @@ input.preset:active, input.preset:focus, input.preset:hover {
199199

200200
#presets-sizer {
201201
visibility: hidden;
202-
203-
overflow: hidden !important;
204-
border: 1px solid red;
202+
position: absolute;
203+
display: block;
204+
width: 5000px;
205+
height: 500px;
206+
top: -5000px;
205207
}
206208

207-
#presets-sizer td.site {
208-
display: none;
209-
}
210-
#presets-sizer span.url {
209+
#presets-sizer span.preset {
211210
display: block;
211+
212212
}
213+
213214
.presets input.preset:checked, #presets input.preset, #presets-sizer input.preset {
214215
opacity: 1;
215216
transform: none;

src/ui/ui.js

Lines changed: 39 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -215,38 +215,6 @@ var UI = (() => {
215215
}
216216

217217

218-
if (!document.getElementById("presets-sizer")) {
219-
// adapt button to label if needed
220-
let sizer = table.cloneNode(true);
221-
sizer.id = "presets-sizer";
222-
document.body.appendChild(sizer);
223-
let presetWidth = sizer.querySelector("input.preset").offsetWidth;
224-
let labelWidth = 0;
225-
for (let l of sizer.querySelectorAll("label.preset")) {
226-
let lw = l.offsetWidth;
227-
debug("lw", l.textContent, lw);
228-
if (lw > labelWidth) labelWidth = lw;
229-
}
230-
231-
debug(`Preset: %s Label: %s`, presetWidth, labelWidth);
232-
labelWidth += 16;
233-
if (presetWidth < labelWidth) {
234-
for (let ss of document.styleSheets) {
235-
if (ss.href.endsWith("/ui.css")) {
236-
for (let r of ss.cssRules) {
237-
if (/input\.preset:checked.*min-width:/.test(r.cssText)) {
238-
r.style.minWidth = (labelWidth) + "px";
239-
break;
240-
}
241-
}
242-
}
243-
}
244-
}
245-
246-
sizer.style.visibility = "visible";
247-
// setTimeout( () => sizer.style.display = "none");
248-
}
249-
250218
}
251219

252220
// URL
@@ -278,6 +246,44 @@ var UI = (() => {
278246
return row;
279247
}
280248

249+
correctSize() {
250+
if (!(UI.mobile || document.getElementById("presets-sizer"))) {
251+
// adapt button to label if needed
252+
let presets = document.querySelector(".presets");
253+
let sizer = document.createElement("div");
254+
sizer.id = "presets-sizer";
255+
sizer.appendChild(presets.cloneNode(true));
256+
document.body.appendChild(sizer);
257+
setTimeout(async () => {
258+
let presetWidth = sizer.querySelector("input.preset").offsetWidth;
259+
let labelWidth = 0;
260+
for (let l of sizer.querySelectorAll("label.preset")) {
261+
let lw = l.offsetWidth;
262+
debug("lw", l.textContent, lw);
263+
if (lw > labelWidth) labelWidth = lw;
264+
}
265+
266+
debug(`Preset: %s Label: %s`, presetWidth, labelWidth);
267+
labelWidth += 16;
268+
if (presetWidth < labelWidth) {
269+
for (let ss of document.styleSheets) {
270+
if (ss.href.endsWith("/ui.css")) {
271+
for (let r of ss.cssRules) {
272+
if (/input\.preset:checked.*min-width:/.test(r.cssText)) {
273+
r.style.minWidth = (labelWidth) + "px";
274+
break;
275+
}
276+
}
277+
}
278+
}
279+
}
280+
281+
sizer.style.display = "none";
282+
283+
}, 100);
284+
}
285+
}
286+
281287
allSiteRows() {
282288
return this.table.querySelectorAll("tr.site");
283289
}
@@ -440,6 +446,7 @@ var UI = (() => {
440446
root.addEventListener("change", this, true);
441447
root.wiredBy = this;
442448
}
449+
this.correctSize();
443450
return root;
444451
}
445452

0 commit comments

Comments
 (0)