@bobfrankston/rmfmail 1.1.186 → 1.1.187
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 +11 -4
- package/client/app.bundle.js.map +2 -2
- package/client/app.js +30 -6
- package/client/app.js.map +1 -1
- package/client/app.ts +29 -4
- package/package.json +3 -3
- /package/packages/mailx-imap/{node_modules.npmglobalize-stash-57684 → node_modules.npmglobalize-stash-38560}/.package-lock.json +0 -0
package/client/app.ts
CHANGED
|
@@ -3425,15 +3425,40 @@ document.addEventListener("pointerdown", (e) => {
|
|
|
3425
3425
|
// its own handler will run after this and toggle, otherwise we'd
|
|
3426
3426
|
// close-then-reopen-then-close.
|
|
3427
3427
|
if (target.closest("#btn-view, #btn-settings, #rail-view, #rail-settings, #rail-menu-backdrop")) return;
|
|
3428
|
-
|
|
3429
|
-
|
|
3428
|
+
// Re-query the dropdown elements FRESH on every pointerdown rather than
|
|
3429
|
+
// using the module-load-time references. If anything re-rendered the
|
|
3430
|
+
// toolbar (theme change, update banner, settings-applied repaint) the
|
|
3431
|
+
// cached node is detached and `.hidden = true` on it does nothing while
|
|
3432
|
+
// the live element stays visible — the "menu won't close until I restart
|
|
3433
|
+
// the app" bug (Bob 2026-05-28). Querying live makes it robust against
|
|
3434
|
+
// element replacement.
|
|
3435
|
+
const viewDd = document.getElementById("view-dropdown");
|
|
3436
|
+
const settingsDd2 = document.getElementById("settings-dropdown");
|
|
3437
|
+
if (viewDd && !viewDd.hidden && !target.closest("#view-menu") && !target.closest("#view-dropdown")) {
|
|
3438
|
+
hideDropdownHard(viewDd);
|
|
3430
3439
|
}
|
|
3431
|
-
if (
|
|
3432
|
-
|
|
3440
|
+
if (settingsDd2 && !settingsDd2.hidden && !target.closest("#settings-menu") && !target.closest("#settings-dropdown")) {
|
|
3441
|
+
hideDropdownHard(settingsDd2);
|
|
3433
3442
|
}
|
|
3443
|
+
document.getElementById("rail-menu-backdrop")?.remove();
|
|
3434
3444
|
refreshToolbarOverlayShield();
|
|
3435
3445
|
}, true);
|
|
3436
3446
|
|
|
3447
|
+
/** Hide a toolbar/rail dropdown so it STAYS hidden regardless of how it was
|
|
3448
|
+
* opened. `.hidden = true` alone isn't enough when the rail path left inline
|
|
3449
|
+
* `position:fixed; display/visibility` styles on the element — an inline
|
|
3450
|
+
* `display` would override the `[hidden]` UA rule and the menu would stay
|
|
3451
|
+
* visible until an app restart cleared the element (Bob 2026-05-28 "click
|
|
3452
|
+
* outside the settings menu but it does not go away"). Clear the inline
|
|
3453
|
+
* style block too so nothing can keep it on screen. */
|
|
3454
|
+
function hideDropdownHard(dd: HTMLElement): void {
|
|
3455
|
+
dd.hidden = true;
|
|
3456
|
+
// Wipe rail-modal inline styles (position/top/left/transform/zIndex/…).
|
|
3457
|
+
// Safe for the toolbar path too — its position comes from CSS classes,
|
|
3458
|
+
// not inline styles, so clearing inline leaves it correct.
|
|
3459
|
+
dd.style.cssText = "";
|
|
3460
|
+
}
|
|
3461
|
+
|
|
3437
3462
|
// Click-to-dismiss for the toolbar dropdowns relies on `pointerdown` firing
|
|
3438
3463
|
// on the parent document. Clicks inside the compose iframe stay in the
|
|
3439
3464
|
// iframe's document and never bubble out, so a Settings/View menu opened
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bobfrankston/rmfmail",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.187",
|
|
4
4
|
"description": "Local-first email client with IMAP sync and standalone native app",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "bin/mailx.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@bobfrankston/iflow-direct": "^0.1.51",
|
|
40
40
|
"@bobfrankston/mailx-host": "^0.1.13",
|
|
41
|
-
"@bobfrankston/mailx-imap": "^0.1.
|
|
41
|
+
"@bobfrankston/mailx-imap": "^0.1.70",
|
|
42
42
|
"@bobfrankston/mailx-store-web": "^0.1.26",
|
|
43
43
|
"@bobfrankston/mailx-sync": "^0.1.19",
|
|
44
44
|
"@bobfrankston/miscinfo": "^1.0.12",
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
"dependencies": {
|
|
119
119
|
"@bobfrankston/iflow-direct": "^0.1.51",
|
|
120
120
|
"@bobfrankston/mailx-host": "^0.1.13",
|
|
121
|
-
"@bobfrankston/mailx-imap": "^0.1.
|
|
121
|
+
"@bobfrankston/mailx-imap": "^0.1.70",
|
|
122
122
|
"@bobfrankston/mailx-store-web": "^0.1.26",
|
|
123
123
|
"@bobfrankston/mailx-sync": "^0.1.19",
|
|
124
124
|
"@bobfrankston/miscinfo": "^1.0.12",
|