feat: frontend autocomplete is diacritics/ligatures insensitive (#6169)

Co-authored-by: Pierre <pierre@debian.zabi.ovh>
Co-authored-by: Michael Genson <genson.michael@gmail.com>
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
This commit is contained in:
Noneangel
2025-12-05 19:44:37 +01:00
committed by GitHub
parent 6695314588
commit 71732d4766
10 changed files with 97 additions and 0 deletions

View File

@@ -16,6 +16,7 @@
v-model="fromFood"
return-object
:items="foods"
:custom-filter="normalizeFilter"
item-title="name"
:label="$t('data-pages.foods.source-food')"
/>
@@ -23,6 +24,7 @@
v-model="toFood"
return-object
:items="foods"
:custom-filter="normalizeFilter"
item-title="name"
:label="$t('data-pages.foods.target-food')"
/>
@@ -51,6 +53,7 @@
v-model="locale"
:items="locales"
item-title="name"
:custom-filter="normalizeFilter"
:label="$t('data-pages.select-language')"
class="my-3"
hide-details
@@ -108,6 +111,7 @@
v-model="createTarget.labelId"
clearable
:items="allLabels"
:custom-filter="normalizeFilter"
item-value="id"
item-title="name"
:label="$t('data-pages.foods.food-label')"
@@ -164,6 +168,7 @@
v-model="editTarget.labelId"
clearable
:items="allLabels"
:custom-filter="normalizeFilter"
item-value="id"
item-title="name"
:label="$t('data-pages.foods.food-label')"
@@ -256,6 +261,7 @@
v-model="bulkAssignLabelId"
clearable
:items="allLabels"
:custom-filter="normalizeFilter"
item-value="id"
item-title="name"
:label="$t('data-pages.foods.food-label')"
@@ -346,6 +352,7 @@ import { useUserApi } from "~/composables/api";
import type { CreateIngredientFood, IngredientFood, IngredientFoodAlias } from "~/lib/api/types/recipe";
import MultiPurposeLabel from "~/components/Domain/ShoppingList/MultiPurposeLabel.vue";
import { useLocales } from "~/composables/use-locales";
import { normalizeFilter } from "~/composables/use-utils";
import { useFoodStore, useLabelStore } from "~/composables/store";
import type { MultiPurposeLabelOut } from "~/lib/api/types/labels";
import type { VForm } from "~/types/auto-forms";
@@ -625,6 +632,7 @@ export default defineNuxtComponent({
foods,
allLabels,
validators,
normalizeFilter,
// Create
createDialog,
domNewFoodForm,

View File

@@ -109,6 +109,7 @@
<v-autocomplete
v-model="locale"
:items="locales"
:custom-filter="normalizeFilter"
item-title="name"
:label="$t('data-pages.select-language')"
class="my-3"
@@ -186,6 +187,7 @@ import { useUserApi } from "~/composables/api";
import MultiPurposeLabel from "~/components/Domain/ShoppingList/MultiPurposeLabel.vue";
import type { MultiPurposeLabelSummary } from "~/lib/api/types/labels";
import { useLocales } from "~/composables/use-locales";
import { normalizeFilter } from "~/composables/use-utils";
import { useLabelData, useLabelStore } from "~/composables/store";
export default defineNuxtComponent({
@@ -316,6 +318,7 @@ export default defineNuxtComponent({
tableHeaders,
labels: labelStore.store,
validators,
normalizeFilter,
// create
createLabel,

View File

@@ -19,6 +19,7 @@
v-model="fromUnit"
return-object
:items="store"
:custom-filter="normalizeFilter"
item-title="name"
:label="$t('data-pages.units.source-unit')"
/>
@@ -26,6 +27,7 @@
v-model="toUnit"
return-object
:items="store"
:custom-filter="normalizeFilter"
item-title="name"
:label="$t('data-pages.units.target-unit')"
/>
@@ -313,6 +315,7 @@ import { validators } from "~/composables/use-validators";
import { useUserApi } from "~/composables/api";
import type { CreateIngredientUnit, IngredientUnit, IngredientUnitAlias } from "~/lib/api/types/recipe";
import { useLocales } from "~/composables/use-locales";
import { normalizeFilter } from "~/composables/use-utils";
import { useUnitStore } from "~/composables/store";
import type { VForm } from "~/types/auto-forms";
@@ -536,6 +539,7 @@ export default defineNuxtComponent({
tableHeaders,
store,
validators,
normalizeFilter,
// Create
createDialog,
domNewUnitForm,

View File

@@ -47,6 +47,7 @@
v-model:search="search.query.value"
:label="$t('meal-plan.meal-recipe')"
:items="search.data.value"
:custom-filter="normalizeFilter"
:loading="search.loading.value"
cache-items
item-title="name"
@@ -242,6 +243,7 @@ import RecipeCardImage from "~/components/Domain/Recipe/RecipeCardImage.vue";
import type { PlanEntryType, UpdatePlanEntry } from "~/lib/api/types/meal-plan";
import { useUserApi } from "~/composables/api";
import { useHouseholdSelf } from "~/composables/use-households";
import { normalizeFilter } from "~/composables/use-utils";
import { useRecipeSearch } from "~/composables/recipes/use-recipe-search";
export default defineNuxtComponent({
@@ -416,6 +418,7 @@ export default defineNuxtComponent({
getEntryTypeText,
requiredRule,
isCreateDisabled,
normalizeFilter,
// Dialog
dialog,