@bobfrankston/rmfmail 1.2.296 → 1.2.298
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/.commitmsg +28 -24
- package/client/android-bootstrap.bundle.js.map +2 -2
- package/client/app.bundle.js +20 -0
- package/client/app.bundle.js.map +2 -2
- package/client/app.js +27 -1
- package/client/app.js.map +1 -1
- package/client/app.ts +25 -1
- package/client/compose/compose.bundle.js.map +2 -2
- package/client/compose/compose.js +7 -4
- package/client/compose/compose.js.map +1 -1
- package/client/compose/compose.ts +7 -4
- package/client/index.html +5 -0
- package/client/styles/components.css +22 -5
- package/npmchanges.md +67 -0
- package/package.json +7 -7
- package/packages/mailx-imap/index.d.ts +1 -0
- package/packages/mailx-imap/index.d.ts.map +1 -1
- package/packages/mailx-imap/index.js +34 -4
- package/packages/mailx-imap/index.js.map +1 -1
- package/packages/mailx-imap/index.ts +32 -5
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-service/index.d.ts.map +1 -1
- package/packages/mailx-service/index.js +10 -0
- package/packages/mailx-service/index.js.map +1 -1
- package/packages/mailx-service/index.ts +10 -0
- package/packages/mailx-service/package.json +1 -1
- package/packages/mailx-settings/package.json +1 -1
- package/packages/mailx-store/package.json +1 -1
- package/packages/mailx-store-web/package.json +1 -1
- package/packages/mailx-types/index.d.ts +10 -4
- package/packages/mailx-types/index.d.ts.map +1 -1
- package/packages/mailx-types/index.js.map +1 -1
- package/packages/mailx-types/index.ts +10 -4
- package/packages/mailx-types/package.json +1 -1
- /package/packages/mailx-imap/{node_modules.npmglobalize-stash-40440 → node_modules.npmglobalize-stash-39180}/.package-lock.json +0 -0
package/client/app.ts
CHANGED
|
@@ -2157,7 +2157,7 @@ document.getElementById("btn-flag")?.addEventListener("click", async () => {
|
|
|
2157
2157
|
try {
|
|
2158
2158
|
await updateFlags(sel.accountId, sel.uid, sel.flags, (sel as any).folderId);
|
|
2159
2159
|
messageState.updateMessageFlags(sel.accountId, sel.uid, sel.flags, (sel as any).folderId);
|
|
2160
|
-
// Row owns its own DOM
|
|
2160
|
+
// Row owns its own DOM — go through the row object so class + star
|
|
2161
2161
|
// update atomically and the list/preview stay in sync.
|
|
2162
2162
|
setRowFlagged(sel.accountId, sel.uid, !wasFlagged, (sel as any).folderId);
|
|
2163
2163
|
} catch (e: unknown) {
|
|
@@ -5537,6 +5537,27 @@ function syncFilterFlaggedButton(): void {
|
|
|
5537
5537
|
btn.setAttribute("aria-pressed", optFlagged?.checked ? "true" : "false");
|
|
5538
5538
|
}
|
|
5539
5539
|
|
|
5540
|
+
/** Name the active list filter above the list, and make the name the way out
|
|
5541
|
+
* of it. The filter used to announce itself by tinting every row — which is
|
|
5542
|
+
* how the list says "selected", so a filtered list read as a selected one
|
|
5543
|
+
* (Bob 2026-08-29: "if I press * on search it shouldn't automatically select
|
|
5544
|
+
* those letters, just show them"). Names which filter, not "a filter is on". */
|
|
5545
|
+
function syncFilterChip(): void {
|
|
5546
|
+
const chip = document.getElementById("ml-filter-chip");
|
|
5547
|
+
if (!chip) return;
|
|
5548
|
+
const flagged = !!(document.getElementById("opt-flagged") as HTMLInputElement | null)?.checked;
|
|
5549
|
+
const priority = !!(document.getElementById("opt-priority-only") as HTMLInputElement | null)?.checked;
|
|
5550
|
+
const names = [flagged ? "flagged (★) messages" : "", priority ? "priority senders" : ""].filter(Boolean);
|
|
5551
|
+
if (!names.length) { chip.hidden = true; return; }
|
|
5552
|
+
chip.hidden = false;
|
|
5553
|
+
chip.textContent = "Showing " + names.join(" and ") + " only — click to show everything";
|
|
5554
|
+
chip.title = "Clear the list filter";
|
|
5555
|
+
}
|
|
5556
|
+
|
|
5557
|
+
document.getElementById("ml-filter-chip")?.addEventListener("click", () => {
|
|
5558
|
+
document.dispatchEvent(new CustomEvent("mailx-clear-list-filters"));
|
|
5559
|
+
});
|
|
5560
|
+
|
|
5540
5561
|
function applyFlaggedFilter(on: boolean): void {
|
|
5541
5562
|
try { logClientEvent("applyFlaggedFilter", { on, caller: new Error().stack?.split("\n").slice(2, 5).join(" | ") }); } catch { /* */ }
|
|
5542
5563
|
if (optFlagged) optFlagged.checked = on;
|
|
@@ -5545,6 +5566,7 @@ function applyFlaggedFilter(on: boolean): void {
|
|
|
5545
5566
|
else body?.classList.remove("flagged-only");
|
|
5546
5567
|
localStorage.setItem("mailx-flagged", String(on));
|
|
5547
5568
|
syncFilterFlaggedButton();
|
|
5569
|
+
syncFilterChip();
|
|
5548
5570
|
reloadCurrentFolder();
|
|
5549
5571
|
}
|
|
5550
5572
|
|
|
@@ -5559,6 +5581,7 @@ document.getElementById("btn-filter-flagged")?.addEventListener("click", () => {
|
|
|
5559
5581
|
// Initial paint of the button's pressed state (covers the localStorage-restored
|
|
5560
5582
|
// value loaded earlier in this file).
|
|
5561
5583
|
syncFilterFlaggedButton();
|
|
5584
|
+
syncFilterChip();
|
|
5562
5585
|
|
|
5563
5586
|
// Priority-senders-only filter — same pattern as flagged-only. Adds
|
|
5564
5587
|
// .priority-only to the list body; CSS hides any row without .priority.
|
|
@@ -5572,6 +5595,7 @@ if (optPriorityOnly) {
|
|
|
5572
5595
|
if (optPriorityOnly.checked) body?.classList.add("priority-only");
|
|
5573
5596
|
else body?.classList.remove("priority-only");
|
|
5574
5597
|
localStorage.setItem("mailx-priority-only", String(optPriorityOnly.checked));
|
|
5598
|
+
syncFilterChip();
|
|
5575
5599
|
});
|
|
5576
5600
|
}
|
|
5577
5601
|
|