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} +