From 54070518ac1d9f5e050ec0161cb30a5dfa52c3be Mon Sep 17 00:00:00 2001 From: Sangelo Date: Wed, 12 Jun 2024 14:05:32 +0200 Subject: [PATCH] [a] fuse.js for fuzzy search --- package.json | 1 + src/lib/modules/ModCards.svelte | 54 +++++++++++++++++++-------------- yarn.lock | 5 +++ 3 files changed, 37 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index 0ce1140..763720f 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@sveltejs/adapter-node": "^1.2.4", "@sveltejs/adapter-static": "^2.0.3", "@sveltejs/kit": "^1.20.5", + "fuse.js": "^7.0.0", "nprogress": "^0.2.0", "sass": "^1.62.0", "svelte": "^3.54.0", diff --git a/src/lib/modules/ModCards.svelte b/src/lib/modules/ModCards.svelte index 93dcac4..ed6ca8a 100644 --- a/src/lib/modules/ModCards.svelte +++ b/src/lib/modules/ModCards.svelte @@ -1,5 +1,6 @@
@@ -83,7 +94,7 @@
-

Results: {search(searchQuery, mods.mods).length + search(searchQuery, mods.optional_mods).length}

+

Results: {search(searchQuery, mods.mods, fuseMods).length + search(searchQuery, mods.optional_mods, fuseOptionalMods).length}

View Optional Mods
@@ -91,12 +102,12 @@ {#if loading}

Loading...

-{:else if search(searchQuery, mods.mods).length === 0 && search(searchQuery, mods.optional_mods).length === 0} +{:else if search(searchQuery, mods.mods, fuseMods).length === 0 && search(searchQuery, mods.optional_mods, fuseOptionalMods).length === 0}

⚠️ No results found.

{:else}
- {#each Array(Math.ceil(search(searchQuery, mods.mods).length / 3)) as _, index} - {#each search(searchQuery, mods.mods).slice(index * 3, (index + 1) * 3) as mod} + {#each Array(Math.ceil(search(searchQuery, mods.mods, fuseMods).length / 3)) as _, index} + {#each search(searchQuery, mods.mods, fuseMods).slice(index * 3, (index + 1) * 3) as mod} - +

{mod.name}

{mod.description}

@@ -115,11 +126,10 @@
- Optional Mods
- {#each Array(Math.ceil(search(searchQuery, mods.optional_mods).length / 3)) as _, index} - {#each search(searchQuery, mods.optional_mods).slice(index * 3, (index + 1) * 3) as mod} + {#each Array(Math.ceil(search(searchQuery, mods.optional_mods, fuseOptionalMods).length / 3)) as _, index} + {#each search(searchQuery, mods.optional_mods, fuseOptionalMods).slice(index * 3, (index + 1) * 3) as mod} - +

{mod.name}

{mod.description}

@@ -164,7 +174,6 @@ width: 100%; display: flex; align-items: center; - // text-align: right; p { margin: 0; } @@ -180,10 +189,10 @@ .mod-card { display: flex; justify-content: center; - // align-items: center; - padding: 0.5em 1em 0.5em 1em; + padding: 0.5em 1em; max-height: 6em; overflow: hidden; + transition: max-height 0.3s ease-in-out; // Smooth transition img.mod-card-logo { height: 4em; @@ -212,8 +221,6 @@ } :global(.overflowing) { - transition: max-height 0.5s ease-in-out; - max-height: 6em; position: relative; &::after { @@ -226,6 +233,7 @@ right: 0em; z-index: 1; transition: opacity 0.25s ease-in-out; + background: linear-gradient(to bottom, transparent, rgba(255,255,255,0.8)); } &:hover { diff --git a/yarn.lock b/yarn.lock index 0d3f357..6133871 100644 --- a/yarn.lock +++ b/yarn.lock @@ -430,6 +430,11 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== +fuse.js@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-7.0.0.tgz#6573c9fcd4c8268e403b4fc7d7131ffcf99a9eb2" + integrity sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q== + glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"