-
-
-
-
-
- {#if loading}
+
+
+
+
+ {#if loading}
{#each Array(6) as _, i (i)}
@@ -263,7 +261,7 @@
{
loading = true;
error = null;
@@ -312,13 +310,17 @@
/>
{/if}
{:else if activeTab === 'backgrounds'}
-
+
{/if}
- {/if}
-
-
+ {/if}
+
+
{#if showSignInOverlay}
(showSignInOverlay = false)} />
{/if}
-
\ No newline at end of file
+
diff --git a/src/plugins/built-in/globalSearch/src/core/styles.css b/src/plugins/built-in/globalSearch/src/core/styles.css
index c49489a6..e442b4ab 100644
--- a/src/plugins/built-in/globalSearch/src/core/styles.css
+++ b/src/plugins/built-in/globalSearch/src/core/styles.css
@@ -75,12 +75,12 @@
}
p {
+ display: flex;
+ align-self: stretch;
+ align-items: center;
font-size: 14px;
- margin-left: 8px;
- margin-right: 48px;
- height: 100%;
- margin-bottom: 0;
- line-height: 32px;
+ margin: 0 48px 0 8px;
+ line-height: 1;
font-weight: 400;
}
}
@@ -146,7 +146,7 @@
transform: translateX(-100%);
}
100% {
- transform: translateX(100%);
+ transform: translateX(300%);
}
}
@@ -289,4 +289,4 @@
.dark .search-progress-text.is-active.is-rough {
color: #fca5a5;
-}
\ No newline at end of file
+}
diff --git a/src/plugins/built-in/messageFolders/index.ts b/src/plugins/built-in/messageFolders/index.ts
index 3c61dce0..4c6fa969 100644
--- a/src/plugins/built-in/messageFolders/index.ts
+++ b/src/plugins/built-in/messageFolders/index.ts
@@ -167,6 +167,7 @@ const messageFoldersPlugin = {
let activeFolderId: string | null = null;
let messageListObserver: MutationObserver | null = null;
+ let observedMessageList: Element | null = null;
let sidebarObserver: MutationObserver | null = null;
let actionsObserver: MutationObserver | null = null;
let openDropdown: HTMLElement | null = null;
@@ -218,9 +219,6 @@ const messageFoldersPlugin = {
}
};
- const isMessageInAnyCustomFolder = (messageId: string): boolean =>
- getAssignedFolderIds(messageId, getAssignments()).length > 0;
-
const shouldShowBadgesInList = (): boolean => {
return api.settings.showTagsInAllMessages || activeFolderId !== null;
};
@@ -837,19 +835,8 @@ const messageFoldersPlugin = {
const messageItems = getMessageListItems();
const moreBtn = document.querySelector("[class*='MessageList__MessageList___'] ol > button");
if (activeFolderId === null) {
- if (api.settings.hideFolderedMessagesInAll) {
- for (const li of messageItems) {
- const msgId = li.getAttribute("data-message");
- if (msgId && isMessageInAnyCustomFolder(msgId)) {
- li.classList.add("bsplus-folder-hidden");
- } else {
- li.classList.remove("bsplus-folder-hidden");
- }
- }
- } else {
- for (const li of messageItems) {
- li.classList.remove("bsplus-folder-hidden");
- }
+ for (const li of messageItems) {
+ li.classList.remove("bsplus-folder-hidden");
}
if (moreBtn) (moreBtn as HTMLElement).classList.remove("bsplus-folder-hidden");
return;
@@ -868,14 +855,29 @@ const messageFoldersPlugin = {
const setupMessageListObserver = () => {
const messageList = document.querySelector("[class*='MessageList__MessageList___'] ol");
- if (!messageList || messageListObserver) return;
- messageListObserver = new MutationObserver(() => {
+ if (!messageList || messageList === observedMessageList) return;
+ messageListObserver?.disconnect();
+ observedMessageList = messageList;
+ messageListObserver = new MutationObserver((mutations) => {
+ const messageRowsChanged = mutations.some((mutation) =>
+ mutation.type === "childList"
+ ? mutation.target === messageList
+ : mutation.target instanceof Element &&
+ mutation.target.parentElement === messageList &&
+ mutation.target.matches("li[data-message]"),
+ );
+ if (!messageRowsChanged) return;
applyBadges();
applyFolderFilter();
attachDragListeners();
attachContextMenuListeners();
});
- messageListObserver.observe(messageList, { childList: true, subtree: false });
+ messageListObserver.observe(messageList, {
+ childList: true,
+ subtree: true,
+ attributes: true,
+ attributeFilter: ["class", "data-message"],
+ });
};
const attachContextMenuListeners = () => {
@@ -925,6 +927,7 @@ const messageFoldersPlugin = {
renderSidebarFolders();
attachNativeSidebarListeners();
}
+ setupMessageListObserver();
});
sidebarObserver.observe(sidebar, { childList: true, subtree: true });
}
@@ -937,12 +940,6 @@ const messageFoldersPlugin = {
applyBadges();
}),
);
- unregisters.push(
- api.settings.onChange("hideFolderedMessagesInAll", () => {
- applyFolderFilter();
- }),
- );
-
return () => {
for (const u of unregisters) u.unregister();
messageListObserver?.disconnect();
diff --git a/src/plugins/built-in/messageFolders/lazy.ts b/src/plugins/built-in/messageFolders/lazy.ts
index afe3c1c4..292cb920 100644
--- a/src/plugins/built-in/messageFolders/lazy.ts
+++ b/src/plugins/built-in/messageFolders/lazy.ts
@@ -9,12 +9,6 @@ const settings = defineSettings({
description:
"When off, folder tags are not shown on the message list until you select a folder.",
}),
- hideFolderedMessagesInAll: booleanSetting({
- default: true,
- title: "Hide foldered messages in All Messages",
- description:
- "When on, messages assigned to a custom folder are hidden from the inbox until you open that folder.",
- }),
});
export default defineLazyPlugin({
diff --git a/src/plugins/syncablePluginDefaults.ts b/src/plugins/syncablePluginDefaults.ts
index 8c73576f..e438e1fa 100644
--- a/src/plugins/syncablePluginDefaults.ts
+++ b/src/plugins/syncablePluginDefaults.ts
@@ -27,7 +27,6 @@ export const SYNCABLE_PLUGIN_SETTING_DEFAULTS: Record<
"background-music": { volume: 0.5, pauseOnHidden: true },
messageFolders: {
showTagsInAllMessages: true,
- hideFolderedMessagesInAll: true,
},
"enhanced-navigation": { autoScrollOnClick: false },
"global-search": {
diff --git a/src/seqta/ui/renderStore.ts b/src/seqta/ui/renderStore.ts
index 9d2d7b04..b7ce53b3 100644
--- a/src/seqta/ui/renderStore.ts
+++ b/src/seqta/ui/renderStore.ts
@@ -1,39 +1,9 @@
-import { unmount } from "svelte";
-
-let remove: () => void;
-
export async function OpenStorePage(): Promise
{
- remove = await renderStore();
-}
-
-export async function renderStore() {
- const [{ default: renderSvelte }, { default: Store }] = await Promise.all([
- import("@/interface/main"),
- import("@/interface/pages/store.svelte"),
- ]);
-
- const container =
- document.querySelector("#container") ??
- document.getElementById("content") ??
- document.body;
-
- document.getElementById("store")?.remove();
-
- const child = document.createElement("div");
- child.id = "store";
- container.appendChild(child);
-
- const shadow = child.attachShadow({ mode: "open" });
- const app = renderSvelte(Store, shadow);
-
- return () => unmount(app);
-}
-
-export function closeStore() {
- document.getElementById("store")!.classList.add("hide");
-
- setTimeout(() => {
- remove();
- document.getElementById("store")!.remove();
- }, 500);
+ const [{ requestSettingsDestination }, { openSettingsPopup }] =
+ await Promise.all([
+ import("@/seqta/utils/settingsNavigation"),
+ import("@/seqta/utils/setupSettingsButton"),
+ ]);
+ requestSettingsDestination({ page: "themes", view: "store" });
+ await openSettingsPopup();
}
diff --git a/src/seqta/utils/Adders/AddExtensionSettings.ts b/src/seqta/utils/Adders/AddExtensionSettings.ts
index a73e54ee..5436b63e 100644
--- a/src/seqta/utils/Adders/AddExtensionSettings.ts
+++ b/src/seqta/utils/Adders/AddExtensionSettings.ts
@@ -52,7 +52,12 @@ async function loadSettingsUi(extensionPopup: HTMLElement): Promise {
const mount = () => renderSvelte(Settings, shadow);
if ("requestIdleCallback" in window) {
- requestIdleCallback(mount);
+ await new Promise((resolve) => {
+ requestIdleCallback(() => {
+ mount();
+ resolve();
+ });
+ });
} else {
mount();
}
diff --git a/src/seqta/utils/Closers/closeExtensionPopup.ts b/src/seqta/utils/Closers/closeExtensionPopup.ts
index c8d16a38..20d67f22 100644
--- a/src/seqta/utils/Closers/closeExtensionPopup.ts
+++ b/src/seqta/utils/Closers/closeExtensionPopup.ts
@@ -11,14 +11,23 @@ export const closeExtensionPopup = (extensionPopup?: HTMLElement) => {
extensionPopup.classList.add("hide");
if (settingsState.animations) {
+ const panel = extensionPopup.shadowRoot?.querySelector(
+ "[data-settings-panel]",
+ );
animate(1, 0, {
onUpdate: (progress) => {
extensionPopup.style.opacity = Math.max(0, progress).toString();
},
- type: "spring",
- stiffness: 520,
- damping: 20,
+ duration: 0.18,
+ ease: "easeIn",
});
+ if (panel) {
+ animate(
+ panel,
+ { scale: [1, 0], opacity: [1, 0] },
+ { duration: 0.18, ease: "easeIn" },
+ );
+ }
} else {
extensionPopup.style.opacity = "0";
}
diff --git a/src/seqta/utils/Loaders/LoadEngageHomePage.ts b/src/seqta/utils/Loaders/LoadEngageHomePage.ts
index db523db6..1f91643a 100644
--- a/src/seqta/utils/Loaders/LoadEngageHomePage.ts
+++ b/src/seqta/utils/Loaders/LoadEngageHomePage.ts
@@ -311,10 +311,10 @@ export async function loadEngageHomePage(): Promise {
const engageHomeBody = stringToHTML(/* html */ `