mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-10 20:35:14 -05:00
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:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user