Skip to content

Commit 842caf7

Browse files
committed
Made preset buttons automatically sized according to their (localized) content.
1 parent 74e20bb commit 842caf7

3 files changed

Lines changed: 54 additions & 5 deletions

File tree

src/_locales/en/messages.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@
435435
"message": "U"
436436
},
437437
"Untrusted": {
438-
"message": "Untrusted"
438+
"message": "Untrusted superca"
439439
},
440440
"UntrustedPagesAdj": {
441441
"message": "untrusted"

src/ui/ui.css

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,15 @@ input.preset:active, input.preset:focus, input.preset:hover {
197197
border-radius: .5em;
198198
}
199199

200-
.presets input.preset:checked, #presets input.preset {
200+
#presets-sizer {
201+
visibility: hidden;
202+
width: 10px;
203+
height: 1px;
204+
overflow: hidden !important;
205+
border: 1px solid red;
206+
}
207+
208+
.presets input.preset:checked, #presets input.preset, #presets-sizer input.preset {
201209
opacity: 1;
202210
transform: none;
203211
min-width: 9.38em;
@@ -226,7 +234,6 @@ input.preset:active, input.preset:focus, input.preset:hover {
226234
left: 0em;
227235
padding-left: 2.5em;
228236

229-
transition: 0.2s all;
230237
}
231238

232239
.presets input.preset[value^="T"] + label {
@@ -235,10 +242,17 @@ input.preset:active, input.preset:focus, input.preset:hover {
235242

236243
.presets input.preset:checked + label, #presets .presets label {
237244
opacity: 1;
238-
width: 60%;
245+
width: 80%;
239246
display: inline-block;
240247
}
241248

249+
#presets-sizer .presets label {
250+
position: static;
251+
display: block;
252+
width: auto;
253+
overflow: visible;
254+
}
255+
242256
button.options {
243257
-moz-appearance: none;
244258
border: none;

src/ui/ui.js

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ var UI = (() => {
187187

188188
initRow(table = this.table) {
189189
let row = table.querySelector("tr.site");
190-
190+
debug("initRow: ", new Error().stack);
191191
// PRESETS
192192
{
193193
let presets = row.querySelector(".presets");
@@ -212,7 +212,42 @@ var UI = (() => {
212212
clone.querySelector(".options").remove();
213213
}
214214
presets.appendChild(clone);
215+
215216
}
217+
218+
219+
if (!document.getElementById("presets-sizer")) {
220+
// adapt button to label if needed
221+
let sizer = table.cloneNode(true);
222+
sizer.id = "presets-sizer";
223+
document.body.appendChild(sizer);
224+
let presetWidth = sizer.querySelector("input.preset").offsetWidth;
225+
let labelWidth = 0;
226+
for (let l of sizer.querySelectorAll("label.preset")) {
227+
let lw = l.offsetWidth;
228+
debug("lw", lw);
229+
if (lw > labelWidth) labelWidth = lw;
230+
}
231+
232+
debug(`Preset: %s Label: %s`, presetWidth, labelWidth);
233+
labelWidth += 16;
234+
if (presetWidth < labelWidth) {
235+
for (let ss of document.styleSheets) {
236+
if (ss.href.endsWith("/ui.css")) {
237+
for (let r of ss.cssRules) {
238+
if (/input\.preset:checked.*min-width:/.test(r.cssText)) {
239+
r.style.minWidth = (labelWidth) + "px";
240+
break;
241+
}
242+
}
243+
}
244+
}
245+
}
246+
247+
sizer.style.visibility = "visible";
248+
// setTimeout( () => sizer.style.display = "none");
249+
}
250+
216251
}
217252

218253
// URL

0 commit comments

Comments
 (0)