diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index db821321b63..2e8de8afb15 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -12,7 +12,7 @@ repos:
exclude: ^tests/data/
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
- rev: v0.8.1
+ rev: v0.8.2
hooks:
- id: ruff
- id: ruff-format
diff --git a/frontend/components/global/CrudTable.vue b/frontend/components/global/CrudTable.vue
index 1c7bfe3c9c2..6e427220df1 100644
--- a/frontend/components/global/CrudTable.vue
+++ b/frontend/components/global/CrudTable.vue
@@ -99,6 +99,8 @@ export interface TableHeaders {
value: string;
show: boolean;
align?: string;
+ sortable?: boolean;
+ sort?: (a: any, b: any) => number;
}
export interface BulkAction {
diff --git a/frontend/components/global/SafeMarkdown.vue b/frontend/components/global/SafeMarkdown.vue
index 030080a4e38..7979ff8bac2 100644
--- a/frontend/components/global/SafeMarkdown.vue
+++ b/frontend/components/global/SafeMarkdown.vue
@@ -48,3 +48,20 @@ export default defineComponent({
},
});
+
+
diff --git a/frontend/pages/group/data/foods.vue b/frontend/pages/group/data/foods.vue
index cb41a09bd2d..bdc2c484859 100644
--- a/frontend/pages/group/data/foods.vue
+++ b/frontend/pages/group/data/foods.vue
@@ -290,6 +290,7 @@ import MultiPurposeLabel from "~/components/Domain/ShoppingList/MultiPurposeLabe
import { useLocales } from "~/composables/use-locales";
import { useFoodStore, useLabelStore } from "~/composables/store";
import { VForm } from "~/types/vuetify";
+import { MultiPurposeLabelOut } from "~/lib/api/types/labels";
export default defineComponent({
components: { MultiPurposeLabel, RecipeDataAliasManagerDialog },
@@ -325,6 +326,11 @@ export default defineComponent({
text: i18n.tc("shopping-list.label"),
value: "label",
show: true,
+ sort: (label1: MultiPurposeLabelOut | null, label2: MultiPurposeLabelOut | null) => {
+ const label1Name = label1?.name || "";
+ const label2Name = label2?.name || "";
+ return label1Name.localeCompare(label2Name);
+ },
},
{
text: i18n.tc("tool.on-hand"),
diff --git a/frontend/pages/household/mealplan/planner/edit.vue b/frontend/pages/household/mealplan/planner/edit.vue
index a94f446618a..0730705d3a9 100644
--- a/frontend/pages/household/mealplan/planner/edit.vue
+++ b/frontend/pages/household/mealplan/planner/edit.vue
@@ -13,6 +13,7 @@
)"
color="primary"
:icon="$globals.icons.foods"
+ :submit-disabled="isCreateDisabled"
@submit="
if (newMeal.existing) {
actions.updateOne(newMeal);
@@ -22,7 +23,6 @@
resetDialog();
"
@close="resetDialog()"
- :submitDisabled="isCreateDisabled"
>
=0.29.24)"]
[[package]]
name = "httpx"
-version = "0.28.0"
+version = "0.28.1"
description = "The next generation HTTP client."
optional = false
python-versions = ">=3.8"
files = [
- {file = "httpx-0.28.0-py3-none-any.whl", hash = "sha256:dc0b419a0cfeb6e8b34e85167c0da2671206f5095f1baa9663d23bcfd6b535fc"},
- {file = "httpx-0.28.0.tar.gz", hash = "sha256:0858d3bab51ba7e386637f22a61d8ccddaeec5f3fe4209da3a6168dbb91573e0"},
+ {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"},
+ {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"},
]
[package.dependencies]
@@ -1451,13 +1451,13 @@ pyyaml = ">=5.1"
[[package]]
name = "mkdocs-material"
-version = "9.5.47"
+version = "9.5.48"
description = "Documentation that simply works"
optional = false
python-versions = ">=3.8"
files = [
- {file = "mkdocs_material-9.5.47-py3-none-any.whl", hash = "sha256:53fb9c9624e7865da6ec807d116cd7be24b3cb36ab31b1d1d1a9af58c56009a2"},
- {file = "mkdocs_material-9.5.47.tar.gz", hash = "sha256:fc3b7a8e00ad896660bd3a5cc12ca0cb28bdc2bcbe2a946b5714c23ac91b0ede"},
+ {file = "mkdocs_material-9.5.48-py3-none-any.whl", hash = "sha256:b695c998f4b939ce748adbc0d3bff73fa886a670ece948cf27818fa115dc16f8"},
+ {file = "mkdocs_material-9.5.48.tar.gz", hash = "sha256:a582531e8b34f4c7ed38c29d5c44763053832cf2a32f7409567e0c74749a47db"},
]
[package.dependencies]
@@ -1584,13 +1584,13 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"]
[[package]]
name = "openai"
-version = "1.56.2"
+version = "1.57.2"
description = "The official Python library for the openai API"
optional = false
python-versions = ">=3.8"
files = [
- {file = "openai-1.56.2-py3-none-any.whl", hash = "sha256:82d0c48f9504e04c7797e9b799dcf7f49a246d99b6cbfd90f3193ea80815b69e"},
- {file = "openai-1.56.2.tar.gz", hash = "sha256:17312af69bc7670d4048f98ab5849f8784d98c39ac64fcde19406e3774a0c1e5"},
+ {file = "openai-1.57.2-py3-none-any.whl", hash = "sha256:f7326283c156fdee875746e7e54d36959fb198eadc683952ee05e3302fbd638d"},
+ {file = "openai-1.57.2.tar.gz", hash = "sha256:5f49fd0f38e9f2131cda7deb45dafdd1aee4f52a637e190ce0ecf40147ce8cee"},
]
[package.dependencies]