Переглянути джерело

feat: model search support

Timothy J. Baek 11 місяців тому
батько
коміт
f755f5e512
1 змінених файлів з 48 додано та 1 видалено
  1. 48 1
      src/lib/components/workspace/Models.svelte

+ 48 - 1
src/lib/components/workspace/Models.svelte

@@ -20,6 +20,8 @@
 	let importFiles;
 	let modelsImportInputElement: HTMLInputElement;
 
+	let searchValue = '';
+
 	const deleteModelHandler = async (model) => {
 		console.log(model.info);
 		if (!model?.info) {
@@ -97,6 +99,49 @@
 
 <div class=" text-lg font-semibold mb-3">{$i18n.t('Models')}</div>
 
+<div class=" flex w-full space-x-2">
+	<div class="flex flex-1">
+		<div class=" self-center ml-1 mr-3">
+			<svg
+				xmlns="http://www.w3.org/2000/svg"
+				viewBox="0 0 20 20"
+				fill="currentColor"
+				class="w-4 h-4"
+			>
+				<path
+					fill-rule="evenodd"
+					d="M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z"
+					clip-rule="evenodd"
+				/>
+			</svg>
+		</div>
+		<input
+			class=" w-full text-sm pr-4 py-1 rounded-r-xl outline-none bg-transparent"
+			bind:value={searchValue}
+			placeholder={$i18n.t('Search Models')}
+		/>
+	</div>
+
+	<div>
+		<a
+			class=" px-2 py-2 rounded-xl border border-gray-200 dark:border-gray-600 dark:border-0 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 transition font-medium text-sm flex items-center space-x-1"
+			href="/workspace/models/create"
+		>
+			<svg
+				xmlns="http://www.w3.org/2000/svg"
+				viewBox="0 0 16 16"
+				fill="currentColor"
+				class="w-4 h-4"
+			>
+				<path
+					d="M8.75 3.75a.75.75 0 0 0-1.5 0v3.5h-3.5a.75.75 0 0 0 0 1.5h3.5v3.5a.75.75 0 0 0 1.5 0v-3.5h3.5a.75.75 0 0 0 0-1.5h-3.5v-3.5Z"
+				/>
+			</svg>
+		</a>
+	</div>
+</div>
+<hr class=" dark:border-gray-850 my-2.5" />
+
 <a class=" flex space-x-4 cursor-pointer w-full mb-2 px-3 py-2" href="/workspace/models/create">
 	<div class=" self-center w-10">
 		<div
@@ -121,7 +166,9 @@
 <hr class=" dark:border-gray-850" />
 
 <div class=" my-2 mb-5">
-	{#each $models as model}
+	{#each $models.filter((m) => searchValue === '' || m.name
+				.toLowerCase()
+				.includes(searchValue.toLowerCase())) as model}
 		<div
 			class=" flex space-x-4 cursor-pointer w-full px-3 py-2 dark:hover:bg-white/5 hover:bg-black/5 rounded-xl"
 		>