mirror of
https://github.com/decaf-dev/obsidian-vault-explorer.git
synced 2026-07-22 10:10:31 +00:00
feat: add toggle to search
This commit is contained in:
parent
e8be31cc85
commit
f43da081ca
2 changed files with 54 additions and 23 deletions
|
|
@ -1,36 +1,67 @@
|
|||
<script lang="ts">
|
||||
import IconButton from "src/svelte/shared/components/icon-button.svelte";
|
||||
import Stack from "src/svelte/shared/components/stack.svelte";
|
||||
import { createEventDispatcher } from "svelte";
|
||||
|
||||
export let value: string;
|
||||
|
||||
let inputRef: HTMLInputElement | null;
|
||||
let hidden: boolean = true;
|
||||
|
||||
const dispatch = createEventDispatcher();
|
||||
|
||||
function handleClearClick() {
|
||||
dispatch("clear", { value: "" });
|
||||
}
|
||||
|
||||
function handleIconClick() {
|
||||
hidden = !hidden;
|
||||
if (!hidden) {
|
||||
requestAnimationFrame(() => {
|
||||
inputRef?.focus();
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="vault-explorer-search-filter">
|
||||
<input type="text" placeholder="Search..." {value} on:input />
|
||||
{#if value.length > 0}
|
||||
<div
|
||||
tabindex="0"
|
||||
role="button"
|
||||
aria-label="Clear search"
|
||||
class="search-input-clear-button"
|
||||
on:click={() => handleClearClick()}
|
||||
on:keydown={(e) => {
|
||||
if (e.key === "Enter") {
|
||||
handleClearClick();
|
||||
}
|
||||
}}
|
||||
<Stack spacing="sm">
|
||||
<div
|
||||
class="vault-explorer-search-filter"
|
||||
style="display: {hidden ? 'none' : 'block'};"
|
||||
>
|
||||
<input
|
||||
bind:this={inputRef}
|
||||
type="text"
|
||||
placeholder="Search..."
|
||||
{value}
|
||||
on:input
|
||||
/>
|
||||
{/if}
|
||||
</div>
|
||||
{#if value.length > 0}
|
||||
<div
|
||||
tabindex="0"
|
||||
role="button"
|
||||
aria-label="Clear search"
|
||||
class="search-input-clear-button"
|
||||
on:click={() => handleClearClick()}
|
||||
on:keydown={(e) => {
|
||||
if (e.key === "Enter") {
|
||||
handleClearClick();
|
||||
}
|
||||
}}
|
||||
/>
|
||||
{/if}
|
||||
</div>
|
||||
<IconButton
|
||||
iconId="search"
|
||||
ariaLabel="Search"
|
||||
on:click={() => handleIconClick()}
|
||||
/>
|
||||
</Stack>
|
||||
|
||||
<style>
|
||||
.vault-explorer-search-filter input[type="text"] {
|
||||
width: 100%;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.vault-explorer-search-filter {
|
||||
|
|
|
|||
|
|
@ -952,13 +952,6 @@
|
|||
<Stack spacing="sm"></Stack>
|
||||
</Flex>
|
||||
</Stack>
|
||||
{#if searchFilter.isEnabled}
|
||||
<SearchFilter
|
||||
value={searchFilter.value}
|
||||
on:input={debounceSearchFilterChange}
|
||||
on:clear={() => (searchFilter.value = "")}
|
||||
/>
|
||||
{/if}
|
||||
</Stack>
|
||||
<Spacer size="md" />
|
||||
</div>
|
||||
|
|
@ -991,6 +984,13 @@
|
|||
<!-- </Stack> -->
|
||||
</div>
|
||||
<Flex>
|
||||
{#if searchFilter.isEnabled}
|
||||
<SearchFilter
|
||||
value={searchFilter.value}
|
||||
on:input={debounceSearchFilterChange}
|
||||
on:clear={() => (searchFilter.value = "")}
|
||||
/>
|
||||
{/if}
|
||||
{#if sortFilter.isEnabled}
|
||||
<SortFilter
|
||||
value={sortFilter.value}
|
||||
|
|
|
|||
Loading…
Reference in a new issue