generated from tpl/obsidian-sample-plugin
			Add disabled to other suggesters and enable all fields in reading log entry editor
This commit is contained in:
		
							parent
							
								
									cfcde1dc5c
								
							
						
					
					
						commit
						658713fbec
					
				| 
						 | 
				
			
			@ -15,6 +15,7 @@
 | 
			
		|||
		asString?: boolean;
 | 
			
		||||
		value?: Field | string;
 | 
			
		||||
		accepts?: string[];
 | 
			
		||||
		disabled?: boolean;
 | 
			
		||||
		onSelected?: (fieldOrName: Field | string) => void;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -24,6 +25,7 @@
 | 
			
		|||
		asString,
 | 
			
		||||
		value = $bindable(),
 | 
			
		||||
		accepts,
 | 
			
		||||
		disabled,
 | 
			
		||||
		onSelected,
 | 
			
		||||
	}: Props = $props();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -51,10 +53,10 @@
 | 
			
		|||
</script>
 | 
			
		||||
 | 
			
		||||
<TextInputSuggest
 | 
			
		||||
	{app}
 | 
			
		||||
	{id}
 | 
			
		||||
	{items}
 | 
			
		||||
	bind:value
 | 
			
		||||
	{disabled}
 | 
			
		||||
	onChange={handleChange}
 | 
			
		||||
	{onSelected}
 | 
			
		||||
/>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,7 @@
 | 
			
		|||
		property?: StringKeys<TFile>;
 | 
			
		||||
		inFolder?: string;
 | 
			
		||||
		value?: TFile | string;
 | 
			
		||||
		disabled?: boolean;
 | 
			
		||||
		onSelected?: (fileOrPath: TFile | string) => void;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -20,6 +21,7 @@
 | 
			
		|||
		property = "path",
 | 
			
		||||
		inFolder,
 | 
			
		||||
		value = $bindable(),
 | 
			
		||||
		disabled,
 | 
			
		||||
		onSelected,
 | 
			
		||||
	}: Props = $props();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -41,10 +43,10 @@
 | 
			
		|||
</script>
 | 
			
		||||
 | 
			
		||||
<TextInputSuggest
 | 
			
		||||
	{app}
 | 
			
		||||
	{id}
 | 
			
		||||
	{items}
 | 
			
		||||
	bind:value
 | 
			
		||||
	{disabled}
 | 
			
		||||
	onChange={handleChange}
 | 
			
		||||
	{onSelected}
 | 
			
		||||
/>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,7 @@
 | 
			
		|||
		property?: StringKeys<TFolder>;
 | 
			
		||||
		inFolder?: string;
 | 
			
		||||
		value?: TFolder | string;
 | 
			
		||||
		disabled?: boolean;
 | 
			
		||||
		onSelected?: (folderOrPath: TFolder | string) => void;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -20,6 +21,7 @@
 | 
			
		|||
		property = "path",
 | 
			
		||||
		inFolder,
 | 
			
		||||
		value = $bindable(),
 | 
			
		||||
		disabled,
 | 
			
		||||
		onSelected,
 | 
			
		||||
	}: Props = $props();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -41,10 +43,10 @@
 | 
			
		|||
</script>
 | 
			
		||||
 | 
			
		||||
<TextInputSuggest
 | 
			
		||||
	{app}
 | 
			
		||||
	{id}
 | 
			
		||||
	{items}
 | 
			
		||||
	bind:value
 | 
			
		||||
	{disabled}
 | 
			
		||||
	onChange={handleChange}
 | 
			
		||||
	{onSelected}
 | 
			
		||||
/>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@
 | 
			
		|||
<script lang="ts">
 | 
			
		||||
	import { clickOutside } from "@ui/directives";
 | 
			
		||||
 | 
			
		||||
	import { onMount, type Snippet } from "svelte";
 | 
			
		||||
	import { type Snippet } from "svelte";
 | 
			
		||||
	import { createPopperActions } from "svelte-popperjs";
 | 
			
		||||
 | 
			
		||||
	type T = $$Generic;
 | 
			
		||||
| 
						 | 
				
			
			@ -19,6 +19,7 @@
 | 
			
		|||
		value?: T;
 | 
			
		||||
		loading?: boolean;
 | 
			
		||||
		suggestion?: Snippet<[Item<T>]>;
 | 
			
		||||
		disabled?: boolean;
 | 
			
		||||
		onChange?: (text: string) => void | Promise<void>;
 | 
			
		||||
		onSelected?: (value: T) => void | Promise<void>;
 | 
			
		||||
	};
 | 
			
		||||
| 
						 | 
				
			
			@ -29,6 +30,7 @@
 | 
			
		|||
		value = $bindable(),
 | 
			
		||||
		loading = false,
 | 
			
		||||
		suggestion,
 | 
			
		||||
		disabled,
 | 
			
		||||
		onChange,
 | 
			
		||||
		onSelected,
 | 
			
		||||
	}: Props = $props();
 | 
			
		||||
| 
						 | 
				
			
			@ -165,7 +167,8 @@
 | 
			
		|||
			onfocusin={() => (expanded = true)}
 | 
			
		||||
			aria-controls={`${id}-list`}
 | 
			
		||||
			aria-autocomplete="list"
 | 
			
		||||
			aria-expanded={expanded}
 | 
			
		||||
			aria-expanded={expanded && !disabled}
 | 
			
		||||
			{disabled}
 | 
			
		||||
		/>
 | 
			
		||||
		<!-- svelte-ignore a11y_no_static_element_interactions -->
 | 
			
		||||
		<div
 | 
			
		||||
| 
						 | 
				
			
			@ -175,7 +178,7 @@
 | 
			
		|||
			onkeydown={(e) => e.key === "Enter" && clearSearch()}
 | 
			
		||||
		></div>
 | 
			
		||||
	</div>
 | 
			
		||||
	{#if expanded}
 | 
			
		||||
	{#if expanded && !disabled}
 | 
			
		||||
		<div id={`${id}-list`} class="suggestion-container" use:popperContent>
 | 
			
		||||
			<ul bind:this={listEl} role="listbox" class="suggestion">
 | 
			
		||||
				{#each items as item, index}
 | 
			
		||||
| 
						 | 
				
			
			@ -200,3 +203,10 @@
 | 
			
		|||
		</div>
 | 
			
		||||
	{/if}
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<style>
 | 
			
		||||
	input:disabled {
 | 
			
		||||
		color: var(--text-muted);
 | 
			
		||||
		cursor: not-allowed;
 | 
			
		||||
	}
 | 
			
		||||
</style>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,8 @@
 | 
			
		|||
	import FileSuggest from "@ui/components/suggesters/FileSuggest.svelte";
 | 
			
		||||
	import { v4 as uuidv4 } from "uuid";
 | 
			
		||||
 | 
			
		||||
	const INPUT_DATETIME_FORMAT = "YYYY-MM-DDTHH:mm";
 | 
			
		||||
 | 
			
		||||
	interface Props {
 | 
			
		||||
		plugin: BookTrackerPlugin;
 | 
			
		||||
		entry?: ReadingLogEntry;
 | 
			
		||||
| 
						 | 
				
			
			@ -17,7 +19,11 @@
 | 
			
		|||
	let pagesRead = $state(entry?.pagesRead ?? 0);
 | 
			
		||||
	let pagesReadTotal = $state(entry?.pagesReadTotal ?? 0);
 | 
			
		||||
	let pagesRemaining = $state(entry?.pagesRemaining ?? 0);
 | 
			
		||||
	let createdAt = $state(entry?.createdAt?.toDate() ?? new Date());
 | 
			
		||||
	let createdAt = $state(
 | 
			
		||||
		entry?.createdAt?.format(INPUT_DATETIME_FORMAT) ??
 | 
			
		||||
			// @ts-expect-error Moment is provided by Obsidian
 | 
			
		||||
			moment().format(INPUT_DATETIME_FORMAT),
 | 
			
		||||
	);
 | 
			
		||||
 | 
			
		||||
	// Source: https://github.com/sveltejs/svelte/discussions/14220#discussioncomment-11188219
 | 
			
		||||
	function watch<T>(
 | 
			
		||||
| 
						 | 
				
			
			@ -100,7 +106,6 @@
 | 
			
		|||
				name="createdAt"
 | 
			
		||||
				id="createdAt"
 | 
			
		||||
				bind:value={createdAt}
 | 
			
		||||
				disabled={editMode}
 | 
			
		||||
			/>
 | 
			
		||||
		</div>
 | 
			
		||||
		<button type="submit">Submit</button>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue