@bobfrankston/rmfmail 1.2.70 → 1.2.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/app.bundle.js +18 -8
- package/client/app.bundle.js.map +2 -2
- package/client/app.js +14 -9
- package/client/app.js.map +1 -1
- package/client/app.ts +15 -10
- package/client/components/message-list.js +13 -3
- package/client/components/message-list.js.map +1 -1
- package/client/components/message-list.ts +13 -3
- package/client/index.html +1 -4
- package/package.json +1 -1
package/client/app.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Wires together all UI components and WebSocket connection.
|
|
4
4
|
*/
|
|
5
5
|
import { initFolderTree, refreshFolderTree, updateFolderCounts, setFolderSynced, getFolderSynced, setOutboxTotal } from "./components/folder-tree.js";
|
|
6
|
-
import { initMessageList, loadMessages, loadUnifiedInbox, loadSearchResults, reloadCurrentFolder, clearSearchMode, getSelectedMessages, markBodiesCached, getCurrentFocused, releaseFocus, removeMessagesAndReconcile, setRowFlagged, scrollFocusedIntoView, refreshPriorityIndex,
|
|
6
|
+
import { initMessageList, loadMessages, loadUnifiedInbox, loadSearchResults, reloadCurrentFolder, clearSearchMode, getSelectedMessages, markBodiesCached, getCurrentFocused, releaseFocus, removeMessagesAndReconcile, setRowFlagged, scrollFocusedIntoView, refreshPriorityIndex, revealMessage, selectAllVisible, exitMultiSelect } from "./components/message-list.js";
|
|
7
7
|
import { seenOf, flaggedOf, draftOf, setSeen, setFlagged } from "@bobfrankston/mailx-types";
|
|
8
8
|
import { initTabs, setActiveView as setActiveTabView, openTab } from "./components/tabs.js";
|
|
9
9
|
import { getCurrentMessage, initViewer, popOutCurrentMessage, printCurrentMessage, toggleFullscreenPreview, showPreviewBodyMenu, wrapHtmlBody } from "./components/message-viewer.js";
|
|
@@ -2058,14 +2058,6 @@ document.getElementById("btn-spam-report")?.addEventListener("click", async () =
|
|
|
2058
2058
|
}
|
|
2059
2059
|
});
|
|
2060
2060
|
document.getElementById("btn-compose")?.addEventListener("click", () => openCompose("new"));
|
|
2061
|
-
// Toolbar "Selection" button — opens the bulk-actions menu anchored under the
|
|
2062
|
-
// button (flag/read/move/delete + select-all/flagged/invert/clear). Rendered
|
|
2063
|
-
// via the shared context-menu component so it self-dismisses on outside click.
|
|
2064
|
-
document.getElementById("btn-selection")?.addEventListener("click", (e) => {
|
|
2065
|
-
e.stopPropagation();
|
|
2066
|
-
const r = e.currentTarget.getBoundingClientRect();
|
|
2067
|
-
void showSelectionMenu(r.left, r.bottom + 2);
|
|
2068
|
-
});
|
|
2069
2061
|
document.getElementById("btn-mark-unread")?.addEventListener("click", () => {
|
|
2070
2062
|
// Toggle \Seen on the currently-focused message. Mirrors the R
|
|
2071
2063
|
// keyboard shortcut and the right-click "Mark unread" menu item, but
|
|
@@ -3668,6 +3660,19 @@ document.addEventListener("keydown", (e) => {
|
|
|
3668
3660
|
e.preventDefault();
|
|
3669
3661
|
applyFontSize(next);
|
|
3670
3662
|
}
|
|
3663
|
+
// Escape = leave multi-select mode. Guaranteed escape hatch so the list
|
|
3664
|
+
// can never get stuck showing checkbox circles with no way to open a
|
|
3665
|
+
// message (Bob 2026-06-26). Only acts when multi-select is actually on, so
|
|
3666
|
+
// it doesn't swallow Escape from other handlers otherwise.
|
|
3667
|
+
if (e.key === "Escape" && document.getElementById("ml-body")?.classList.contains("multi-select-on")) {
|
|
3668
|
+
const t = e.target;
|
|
3669
|
+
const tag = t?.tagName;
|
|
3670
|
+
if (tag !== "INPUT" && tag !== "TEXTAREA" && tag !== "SELECT" && !t?.isContentEditable) {
|
|
3671
|
+
e.preventDefault();
|
|
3672
|
+
exitMultiSelect();
|
|
3673
|
+
return;
|
|
3674
|
+
}
|
|
3675
|
+
}
|
|
3671
3676
|
// Ctrl+A = Select all visible messages
|
|
3672
3677
|
if (e.ctrlKey && e.key === "a") {
|
|
3673
3678
|
const t = e.target;
|