Last comment on letter+ FIX marginal issue + vite build options

This commit is contained in:
Simon Martens
2024-01-27 00:30:28 +01:00
parent d1994ad9fb
commit cc740d6150
5 changed files with 95 additions and 69 deletions

View File

@@ -72,7 +72,7 @@
</div>
</div>
<div class="ha-register-body">
<div id="ha-register-body" class="ha-register-body">
@foreach (var k in Model.ParsedComments) {
<div class="ha-comment">
<div class="ha-headcomment">@Html.Raw(k.ParsedComment)</div>

View File

@@ -7,6 +7,7 @@ export default defineConfig({
entry: resolve(__dirname, 'wwwroot/js/main.js'),
name: 'HaWeb',
fileName: 'scripts',
formats: ['es']
},
outDir: resolve(__dirname, 'wwwroot/dist/'),
}

View File

@@ -58,7 +58,7 @@
}
.ha-text .ha-marginalbox {
@apply bg-slate-50 dark:bg-slate-900
@apply bg-slate-50 dark:bg-slate-900 duration-200
}
.ha-text .ha-marginalbox.ha-expanded-box .ha-marginallist {
@@ -172,7 +172,7 @@
}
.ha-text .ha-marginalbox {
@apply hidden overflow-hidden select-none hover:select-auto hyphenate pl-1 md:inline-block absolute left-full ml-6 desktop:ml-10 mt-1 w-[16rem] desktop:w-[28rem] text-sm leading-tight rounded-sm font-sans
@apply hidden whitespace-normal overflow-hidden select-none hover:select-auto hyphenate pl-1 md:inline-block absolute left-full ml-6 desktop:ml-10 mt-1 w-[16rem] desktop:w-[28rem] text-sm leading-tight rounded-sm font-sans
}
.ha-text .ha-marginalbox .ha-marginallist {

View File

@@ -1,5 +1,8 @@
// Script for auto collapsing marginal boxes
const startup_marginals = function () {
let debounce_resize;
let collapsedboxes = [];
const getLineHeight = function (element) {
var temp = document.createElement(element.nodeName),
ret;
@@ -11,18 +14,22 @@ const startup_marginals = function () {
return ret;
};
const collapsebox = function (element, height, lineheight) {
const collapsebox = function (element, height, lineheight, setheight = true) {
element.style.maxHeight = height + "px";
element.classList.add("ha-collapsed-box");
element.classList.remove("ha-expanded-box");
setTimeout(function () {
element.classList.remove("transition-all");
}, 130);
};
const uncollapsebox = function (element) {
element.classList.add("transition-all");
element.classList.remove("ha-collapsed-box");
element.classList.add("ha-expanded-box");
};
const addbuttoncaollapsebox = function (element, height, hoverfunction) {
const addbuttoncaollapsebox = function (element, height, hoverfunction, topmove) {
let btn = document.createElement("div");
btn.classList.add("ha-btn-collapsed-box");
@@ -36,10 +43,16 @@ const startup_marginals = function () {
ev.stopPropagation();
if (element.classList.contains("ha-collapsed-box")) {
uncollapsebox(element);
if (topmove > 0) element.style.bottom = "0px";
btn.classList.add("ha-close-btn-collapsed-box");
btn.classList.add("ha-collapsed-box-manually-toggled");
} else {
collapsebox(element, height);
if (topmove > 0) {
collapsebox(element, height, 0, false);
element.style.bottom = "unset";
} else {
collapsebox(element, height, 0, true);
}
btn.classList.remove("ha-close-btn-collapsed-box");
btn.classList.remove("ha-collapsed-box-manually-toggled");
}
@@ -53,6 +66,7 @@ const startup_marginals = function () {
timer = setTimeout(function () {
if (element.classList.contains("ha-collapsed-box")) {
uncollapsebox(element);
if (topmove > 0) element.style.bottom = "0px";
btn.classList.add("ha-close-btn-collapsed-box");
}
}, 80);
@@ -67,7 +81,12 @@ const startup_marginals = function () {
element.classList.contains("ha-expanded-box") &&
!btn.classList.contains("ha-collapsed-box-manually-toggled")
) {
collapsebox(element, height);
if (topmove > 0) {
collapsebox(element, height, 0, false);
element.style.bottom = "unset";
} else {
collapsebox(element, height, 0, true);
}
btn.classList.remove("ha-close-btn-collapsed-box");
}
});
@@ -75,7 +94,11 @@ const startup_marginals = function () {
element.parentNode.insertBefore(btn, element);
};
const overlappingcollapsebox = function (selector, hoverfunction) {
const overlappingcollapsebox = function (selector, hoverfunction, containerid) {
let container = document.getElementById(containerid);
if (!container) return;
container.classList.add("overflow-hidden");
let containerrect = document.getElementById(containerid).getBoundingClientRect();;
let boxes = document.querySelectorAll(selector);
let lineheight = 1;
@@ -84,11 +107,17 @@ const startup_marginals = function () {
}
for (var i = 0; i < boxes.length; i++) {
if (i < boxes.length - 1) {
let element = boxes[i];
let thisrect = element.getBoundingClientRect();
let overlap = -2;
let topmove = 0;
if (thisrect.bottom > containerrect.bottom) {
overlap = thisrect.bottom - containerrect.bottom;
topmove = thisrect.bottom - containerrect.bottom;
} else if (i < boxes.length - 1) {
let nextrect = boxes[i + 1].getBoundingClientRect();
let overlap = thisrect.bottom - nextrect.top;
overlap = thisrect.bottom - nextrect.top;
}
if (
// -1 for catching lines that perfectly close up on each other
overlap >= -1 &&
@@ -123,18 +152,19 @@ const startup_marginals = function () {
requestAnimationFrame(() => {
collapsedboxes.push(element);
collapsebox(element, newlength, lineheight);
addbuttoncaollapsebox(element, newlength, hoverfunction);
if (topmove > 0) collapsebox(element, newlength, lineheight, false);
else collapsebox(element, newlength, lineheight, true);
addbuttoncaollapsebox(element, newlength, hoverfunction, topmove);
});
}
}
}
};
const marginalboxwidthset = function () {
let lt = document.getElementById("ha-letterbody");
const marginalboxwidthset = function (containerid, classes) {
let lt = document.getElementById(containerid);
if (lt !== null) {
let mg = lt.querySelectorAll(".ha-text .ha-marginalbox");
let mg = lt.querySelectorAll(classes);
if (mg.length > 0) {
let ltbcr = lt.getBoundingClientRect();
let mgbcr = mg[0].getBoundingClientRect();
@@ -145,19 +175,10 @@ const startup_marginals = function () {
}
}
}
}
const collapseboxes = function () {
overlappingcollapsebox(".ha-neuzeit .ha-letlinks", true);
overlappingcollapsebox(".ha-forschung .ha-letlinks", true);
overlappingcollapsebox(".ha-commentlist .ha-letlinks", true);
overlappingcollapsebox(".ha-text .ha-marginalbox", true);
};
let collapsedboxes = [];
const clearcollapsedboxes = function () {
let elements = document.querySelectorAll(".ha-text .ha-marginalbox");
let elements = document.querySelectorAll(".ha-marginalbox");
elements.forEach(element => {
element.removeAttribute("style");
});
@@ -171,23 +192,28 @@ const startup_marginals = function () {
elements.forEach(element => {
element.remove();
});
}
};
const resetall = function () {
clearcollapsedboxes();
marginalboxwidthset();
marginalboxwidthset("ha-letterbody", ".ha-marginalbox");
marginalboxwidthset("ha-register-body", ".ha-letlinks");
startup_marginals();
}
};
const collapseboxes = function () {
overlappingcollapsebox(".ha-letlinks", true, "ha-register-body");
overlappingcollapsebox(".ha-marginalbox", true, "ha-letterbody");
};
marginalboxwidthset();
collapseboxes();
var doit;
window.addEventListener("resize", function () {
clearTimeout(doit);
doit = setTimeout(resetall, 17);
clearTimeout(debounce_resize);
debounce_resize = setTimeout(resetall, 17);
});
marginalboxwidthset("ha-letterbody", ".ha-marginalbox");
marginalboxwidthset("ha-register-body", ".ha-letlinks");
collapseboxes();
};
export { startup_marginals };

View File

@@ -42,7 +42,6 @@ const startup_websocket = function () {
var msg = JSON.parse(event.data);
if (msg.ValidationState != null) {
stateValidation = msg.ValidationState;
console.log(msg.ValidationState);
switch (msg.ValidationState) {
case 0:
commsNot.classList.remove("loading");