diff --git a/manifest.json b/manifest.json
index 673281e..9c76180 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,7 +1,7 @@
{
"id": "vault-explorer",
"name": "Vault Explorer",
- "version": "1.41.1",
+ "version": "1.42.0",
"minAppVersion": "1.4.13",
"description": "Explore your vault in visual format",
"author": "DecafDev",
diff --git a/package.json b/package.json
index e730b76..cd5a4f1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "obsidian-vault-explorer",
- "version": "1.41.1",
+ "version": "1.42.0",
"description": "Explore your vault in visual format",
"main": "main.js",
"scripts": {
diff --git a/src/constants.ts b/src/constants.ts
index 218f30a..569796c 100644
--- a/src/constants.ts
+++ b/src/constants.ts
@@ -22,14 +22,6 @@ export const DEFAULT_SETTINGS: VaultExplorerPluginSettings = {
isEnabled: true,
value: "",
},
- favorites: {
- isEnabled: true,
- value: false,
- },
- timestamp: {
- isEnabled: true,
- value: "all",
- },
sort: {
isEnabled: true,
value: "file-name-asc",
@@ -94,8 +86,6 @@ export const DEFAULT_SETTINGS: VaultExplorerPluginSettings = {
enableClockUpdates: true,
enableFileIcons: false,
loadBodyTags: true,
- filterGroupsWidth: "300px",
- shouldWrapFilterGroups: false,
shouldCollapseFilters: false,
pageSize: 25,
viewOrder: [
diff --git a/src/event/types.ts b/src/event/types.ts
index 64a5ebe..5d92567 100644
--- a/src/event/types.ts
+++ b/src/event/types.ts
@@ -21,7 +21,6 @@ export enum PluginEvent {
VIEW_TOGGLE_SETTING_CHANGE = "view-toggle-setting-change",
FILE_ICONS_SETTING_CHANGE = "file-icons-setting-change",
LOAD_BODY_TAGS_SETTING_CHANGE = "load-body-tags-setting-change",
- WRAP_FILTER_GROUPS_SETTING_CHANGE = "wrap-filter-groups-setting-change",
LOAD_SOCIAL_MEDIA_IMAGE_SETTING_CHANGE = "load-social-media-image-setting-change",
SHOW_TAGS_SETTING_CHANGE = "show-tags-setting-change",
}
diff --git a/src/main.ts b/src/main.ts
index c047ce7..ddc5e5a 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -20,6 +20,7 @@ import { isVersionLessThan } from "./utils";
import License from "./svelte/shared/services/license";
import { clearSocialMediaImageCache } from "./svelte/app/services/social-media-image-cache";
import store from "./svelte/shared/services/store";
+import "./styles.css";
export default class VaultExplorerPlugin extends Plugin {
settings: VaultExplorerPluginSettings = DEFAULT_SETTINGS;
@@ -63,6 +64,22 @@ export default class VaultExplorerPlugin extends Plugin {
}
private registerEvents() {
+ this.registerEvent(
+ this.app.workspace.on("active-leaf-change", () => {
+ const explorerLeaf =
+ this.app.workspace.getActiveViewOfType(VaultExplorerView);
+ const statusBar = document.querySelector(
+ ".status-bar"
+ ) as HTMLElement | null;
+ if (!statusBar) return;
+ if (explorerLeaf) {
+ statusBar.classList.add("vault-explorer-status-bar");
+ } else {
+ statusBar.classList.remove("vault-explorer-status-bar");
+ }
+ })
+ );
+
//Callback if the file is renamed or moved
//This callback is already debounced by Obsidian
this.registerEvent(
diff --git a/src/obsidian/vault-explorer-settings-tab.ts b/src/obsidian/vault-explorer-settings-tab.ts
index a2024d3..6f7f687 100644
--- a/src/obsidian/vault-explorer-settings-tab.ts
+++ b/src/obsidian/vault-explorer-settings-tab.ts
@@ -108,20 +108,6 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab {
})
);
- new Setting(containerEl)
- .setName("Wrap filter groups")
- .addToggle((toggle) =>
- toggle
- .setValue(this.plugin.settings.shouldWrapFilterGroups)
- .onChange(async (value) => {
- this.plugin.settings.shouldWrapFilterGroups = value;
- await this.plugin.saveSettings();
- EventManager.getInstance().emit(
- PluginEvent.WRAP_FILTER_GROUPS_SETTING_CHANGE
- );
- })
- );
-
new Setting(containerEl).setName("Filters").setHeading();
new Setting(containerEl).setName("Search filter").addToggle((toggle) =>
@@ -136,36 +122,6 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab {
})
);
- new Setting(containerEl)
- .setName("Favorites filter")
- .addToggle((toggle) =>
- toggle
- .setValue(this.plugin.settings.filters.favorites.isEnabled)
- .onChange(async (value) => {
- this.plugin.settings.filters.favorites.isEnabled =
- value;
- await this.plugin.saveSettings();
- EventManager.getInstance().emit(
- PluginEvent.FILTER_TOGGLE_SETTING_CHANGE
- );
- })
- );
-
- new Setting(containerEl)
- .setName("Timestamp filter")
- .addToggle((toggle) =>
- toggle
- .setValue(this.plugin.settings.filters.timestamp.isEnabled)
- .onChange(async (value) => {
- this.plugin.settings.filters.timestamp.isEnabled =
- value;
- await this.plugin.saveSettings();
- EventManager.getInstance().emit(
- PluginEvent.FILTER_TOGGLE_SETTING_CHANGE
- );
- })
- );
-
new Setting(containerEl).setName("Sort filter").addToggle((toggle) =>
toggle
.setValue(this.plugin.settings.filters.sort.isEnabled)
diff --git a/src/styles.css b/src/styles.css
new file mode 100644
index 0000000..fc16996
--- /dev/null
+++ b/src/styles.css
@@ -0,0 +1,3 @@
+.vault-explorer-status-bar {
+ display: none;
+}
diff --git a/src/svelte/app/components/favorites-filter.svelte b/src/svelte/app/components/favorites-filter.svelte
deleted file mode 100644
index 48fa017..0000000
--- a/src/svelte/app/components/favorites-filter.svelte
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
diff --git a/src/svelte/app/components/feed-card.svelte b/src/svelte/app/components/feed-card.svelte
index aa56dfd..ccfc82d 100644
--- a/src/svelte/app/components/feed-card.svelte
+++ b/src/svelte/app/components/feed-card.svelte
@@ -35,7 +35,6 @@
export let path: string;
export let createdMillis: number;
export let content: string | null;
- export let isFavorite: boolean | null;
let ref: HTMLElement | null = null;
let enableFileIcons = false;
@@ -146,16 +145,9 @@
openInCurrentTab(plugin, path);
}
- function handleFavoriteChange(filePath: string, value: boolean) {
- dispatch("favoritePropertyChange", { filePath, value });
- }
-
function handleCardContextMenu(e: Event) {
const nativeEvent = e as MouseEvent;
- openContextMenu(plugin, path, nativeEvent, {
- isFavorite,
- onFavoriteChange: handleFavoriteChange,
- });
+ openContextMenu(plugin, path, nativeEvent, {});
}
function handleCardMouseOver(e: MouseEvent) {
diff --git a/src/svelte/app/components/feed-view.svelte b/src/svelte/app/components/feed-view.svelte
index 7c01b14..2bb67af 100644
--- a/src/svelte/app/components/feed-view.svelte
+++ b/src/svelte/app/components/feed-view.svelte
@@ -46,7 +46,6 @@
path={fileRenderData.path}
content={fileRenderData.content}
createdMillis={fileRenderData.createdMillis}
- isFavorite={fileRenderData.isFavorite}
on:favoritePropertyChange
/>
{/each}
diff --git a/src/svelte/app/components/filter-group-list.svelte b/src/svelte/app/components/filter-group-list.svelte
index 8269f8d..5ac3b48 100644
--- a/src/svelte/app/components/filter-group-list.svelte
+++ b/src/svelte/app/components/filter-group-list.svelte
@@ -3,115 +3,50 @@
import _ from "lodash";
import VaultExplorerPlugin from "src/main";
import store from "src/svelte/shared/services/store";
- import { onMount } from "svelte";
- import Wrap from "src/svelte/shared/components/wrap.svelte";
- import EventManager from "src/event/event-manager";
- import { PluginEvent } from "src/event/types";
import FilterGroup from "./filter-group.svelte";
+ import Stack from "src/svelte/shared/components/stack.svelte";
export let groups: TFilterGroup[] = [];
- let containerRef: HTMLDivElement | null = null;
- let shouldWrapFilterGroups: boolean = false;
-
- const debounceSaveContainerWidth = _.debounce(saveContainerWidth, 200);
-
let plugin: VaultExplorerPlugin;
store.plugin.subscribe((p) => {
plugin = p;
- shouldWrapFilterGroups = plugin.settings.shouldWrapFilterGroups;
});
-
- onMount(() => {
- function handleWrapFilterGroupsSettingChange() {
- shouldWrapFilterGroups = plugin.settings.shouldWrapFilterGroups;
- }
-
- EventManager.getInstance().on(
- PluginEvent.WRAP_FILTER_GROUPS_SETTING_CHANGE,
- handleWrapFilterGroupsSettingChange,
- );
- return () => {
- EventManager.getInstance().off(
- PluginEvent.WRAP_FILTER_GROUPS_SETTING_CHANGE,
- handleWrapFilterGroupsSettingChange,
- );
- };
- });
-
- onMount(() => {
- let resizeObserver: ResizeObserver;
-
- if (containerRef) {
- containerRef.style.width = plugin.settings.filterGroupsWidth;
-
- resizeObserver = new ResizeObserver(() => {
- debounceSaveContainerWidth();
- });
- resizeObserver.observe(containerRef);
- }
-
- return () => {
- resizeObserver?.disconnect();
- };
- });
-
- async function saveContainerWidth() {
- if (containerRef) {
- plugin.settings.filterGroupsWidth = containerRef.style.width;
- await plugin.saveSettings();
- }
- }
-
+
{#if groups.length > 0}
-
- {#each groups as group (group.id)}
-
- {/each}
-
+ {#each groups as group (group.id)}
+
+ {/each}
{/if}
{#if groups.length === 0}
- No groups
+ No groups to display
{/if}
-
+
diff --git a/src/svelte/app/components/filter-group.svelte b/src/svelte/app/components/filter-group.svelte
index 08e3ef5..1716e7d 100644
--- a/src/svelte/app/components/filter-group.svelte
+++ b/src/svelte/app/components/filter-group.svelte
@@ -66,18 +66,16 @@
diff --git a/src/svelte/app/components/search-filter.svelte b/src/svelte/app/components/search-filter.svelte
index c08291f..ae39c82 100644
--- a/src/svelte/app/components/search-filter.svelte
+++ b/src/svelte/app/components/search-filter.svelte
@@ -1,36 +1,67 @@
-
-
- {#if value.length > 0}
-
handleClearClick()}
- on:keydown={(e) => {
- if (e.key === "Enter") {
- handleClearClick();
- }
- }}
+
+
+
- {/if}
-
+ {#if value.length > 0}
+ handleClearClick()}
+ on:keydown={(e) => {
+ if (e.key === "Enter") {
+ handleClearClick();
+ }
+ }}
+ />
+ {/if}
+
+ handleIconClick()}
+ />
+
diff --git a/src/svelte/app/services/context-menu.ts b/src/svelte/app/services/context-menu.ts
index 7ef61cd..9609a91 100644
--- a/src/svelte/app/services/context-menu.ts
+++ b/src/svelte/app/services/context-menu.ts
@@ -7,14 +7,10 @@ export const openContextMenu = (
filePath: string,
e: MouseEvent,
{
- isFavorite,
coverImageFit,
- onFavoriteChange,
onCoverImageFitChange,
}: {
- isFavorite: boolean | null;
coverImageFit?: CoverImageFit;
- onFavoriteChange: (filePath: string, value: boolean) => void;
onCoverImageFitChange?: (
filePath: string,
value: CoverImageFit
@@ -35,25 +31,15 @@ export const openContextMenu = (
item.setTitle("Open in new window");
item.onClick(() => openInNewWindow(plugin, filePath));
});
- menu.addSeparator();
- menu.addItem((item) => {
- item.setTitle(
- isFavorite ? "Remove from favorites" : "Add to favorites"
- );
- item.onClick(() => {
- const newValue = isFavorite !== null ? !isFavorite : true;
- onFavoriteChange(filePath, newValue);
- });
- });
if (coverImageFit !== undefined && onCoverImageFitChange !== undefined) {
menu.addSeparator();
menu.addItem((item) => {
- item.setTitle("Cover image fit: cover");
+ item.setTitle("Cover");
item.setChecked(coverImageFit === "cover");
item.onClick(() => onCoverImageFitChange(filePath, "cover"));
});
menu.addItem((item) => {
- item.setTitle("Cover image fit: contain");
+ item.setTitle("Contain");
item.setChecked(coverImageFit === "contain");
item.onClick(() => onCoverImageFitChange(filePath, "contain"));
});
diff --git a/src/svelte/app/services/filters/favorite-filter.ts b/src/svelte/app/services/filters/favorite-filter.ts
deleted file mode 100644
index 4b4673c..0000000
--- a/src/svelte/app/services/filters/favorite-filter.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { FileRenderData } from "../../types";
-
-export const filterByFavorites = (
- file: FileRenderData,
- onlyFavorites: boolean
-) => {
- if (onlyFavorites) {
- return file.isFavorite;
- }
- return true;
-};
diff --git a/src/svelte/app/services/filters/timestamp-filter.ts b/src/svelte/app/services/filters/timestamp-filter.ts
deleted file mode 100644
index 55684dd..0000000
--- a/src/svelte/app/services/filters/timestamp-filter.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { TimestampFilterOption } from "src/types";
-
-interface FilterByTimestampParams {
- value: TimestampFilterOption;
- createdMillis: number;
- modifiedMillis: number;
- startOfTodayMillis: number;
- startOfThisWeekMillis: number;
- startOfLastWeekMillis: number;
-}
-
-export const filterByTimestamp = ({
- value,
- createdMillis,
- modifiedMillis,
- startOfTodayMillis,
- startOfThisWeekMillis,
- startOfLastWeekMillis,
-}: FilterByTimestampParams) => {
- if (value === "modified-this-week") {
- return modifiedMillis > startOfThisWeekMillis;
- } else if (value === "created-this-week") {
- return createdMillis > startOfThisWeekMillis;
- } else if (value === "modified-2-weeks") {
- return modifiedMillis > startOfLastWeekMillis;
- } else if (value === "created-2-weeks") {
- return createdMillis > startOfLastWeekMillis;
- } else if (value === "modified-today") {
- return modifiedMillis > startOfTodayMillis;
- } else if (value === "created-today") {
- return createdMillis > startOfTodayMillis;
- }
- return true;
-}
diff --git a/src/svelte/app/services/render-data.ts b/src/svelte/app/services/render-data.ts
index f468d08..5833755 100644
--- a/src/svelte/app/services/render-data.ts
+++ b/src/svelte/app/services/render-data.ts
@@ -46,14 +46,12 @@ export const formatFileDataForRender = ({
file,
fileId,
fileContent,
- fileFavorite,
}: {
app: App;
settings: VaultExplorerPluginSettings;
file: TFile;
fileId: string;
fileContent: string | null;
- fileFavorite: boolean | null;
}): FileRenderData => {
const { name, basename, extension, path } = file;
@@ -96,17 +94,6 @@ export const formatFileDataForRender = ({
PropertyType.TEXT
);
- let isFavorite: boolean | null;
- if (fileFavorite === null) {
- isFavorite = loadPropertyValue
(
- fileFrontmatter,
- favoriteProp,
- PropertyType.CHECKBOX
- );
- } else {
- isFavorite = fileFavorite;
- }
-
let coverImageFit: CoverImageFit | null = loadPropertyValue(
fileFrontmatter,
coverImageFitProp,
@@ -250,7 +237,6 @@ export const formatFileDataForRender = ({
content: fileContent,
tags,
imageUrl,
- isFavorite,
createdMillis,
modifiedMillis,
custom1,
diff --git a/src/svelte/app/types.ts b/src/svelte/app/types.ts
index b0b16cb..282a464 100644
--- a/src/svelte/app/types.ts
+++ b/src/svelte/app/types.ts
@@ -12,7 +12,6 @@ export interface FileRenderData {
url: string | null;
imageUrl: string | null;
tags: string[] | null;
- isFavorite: boolean | null;
createdMillis: number;
modifiedMillis: number;
custom1: string | null;
diff --git a/src/svelte/shared/components/icon-button.svelte b/src/svelte/shared/components/icon-button.svelte
index ab7cabc..28595a9 100644
--- a/src/svelte/shared/components/icon-button.svelte
+++ b/src/svelte/shared/components/icon-button.svelte
@@ -26,6 +26,7 @@
}
$: className = getClassName(noPadding);
+ $: hasSlotContent = !!$$slots.default;
-
+
+ {#if hasSlotContent}
+
+
+
+ {/if}
+