diff --git a/frontend/components/Domain/Household/GroupMealPlanRuleForm.vue b/frontend/components/Domain/Household/GroupMealPlanRuleForm.vue
index bb4d37d6c..bd8257fa7 100644
--- a/frontend/components/Domain/Household/GroupMealPlanRuleForm.vue
+++ b/frontend/components/Domain/Household/GroupMealPlanRuleForm.vue
@@ -5,12 +5,12 @@
style="gap: 10px"
>
@@ -19,15 +19,15 @@
{{ $t('meal-plan.this-rule-will-apply', {
- dayCriteria: inputDay === "unset" ? $t('meal-plan.to-all-days') : $t('meal-plan.on-days', [inputDay]),
- mealTypeCriteria: inputEntryType === "unset" ? $t('meal-plan.for-all-meal-types') : $t('meal-plan.for-type-meal-types', [inputEntryType]),
+ dayCriteria: day === "unset" ? $t('meal-plan.to-all-days') : $t('meal-plan.on-days', [day]),
+ mealTypeCriteria: entryType === "unset" ? $t('meal-plan.for-all-meal-types') : $t('meal-plan.for-type-meal-types', [entryType]),
}) }}
@@ -39,20 +39,17 @@ import { Organizer } from "~/lib/api/types/non-generated";
import type { QueryFilterJSON } from "~/lib/api/types/response";
interface Props {
- day?: string;
- entryType?: string;
- queryFilterString?: string;
queryFilter?: QueryFilterJSON | null;
showHelp?: boolean;
}
const props = withDefaults(defineProps(), {
- day: "unset",
- entryType: "unset",
- queryFilterString: "",
queryFilter: null,
showHelp: false,
});
-const emit = defineEmits(["update:day", "update:entry-type", "update:query-filter-string"]);
+
+const day = defineModel("day", { default: "unset" });
+const entryType = defineModel("entryType", { default: "unset" });
+const queryFilterString = defineModel("queryFilterString", { default: "" });
const i18n = useI18n();
@@ -75,35 +72,9 @@ const MEAL_DAY_OPTIONS = [
{ title: i18n.t("meal-plan.day-any"), value: "unset" },
];
-const inputDay = computed({
- get: () => {
- return props.day;
- },
- set: (val) => {
- emit("update:day", val);
- },
-});
-
-const inputEntryType = computed({
- get: () => {
- return props.entryType;
- },
- set: (val) => {
- emit("update:entry-type", val);
- },
-});
-
-const inputQueryFilterString = computed({
- get: () => {
- return props.queryFilterString;
- },
- set: (val) => {
- emit("update:query-filter-string", val);
- },
-});
-
function handleQueryFilterInput(value: string | undefined) {
- inputQueryFilterString.value = value || "";
+ console.warn("handleQueryFilterInput called with value:", value);
+ queryFilterString.value = value || "";
}
const fieldDefs: FieldDefinition[] = [
diff --git a/frontend/components/Domain/QueryFilterBuilder.vue b/frontend/components/Domain/QueryFilterBuilder.vue
index a86e822ab..272321d00 100644
--- a/frontend/components/Domain/QueryFilterBuilder.vue
+++ b/frontend/components/Domain/QueryFilterBuilder.vue
@@ -147,7 +147,7 @@
:model-value="field.value"
type="number"
variant="underlined"
- @:model-value="setFieldValue(field, index, $event)"
+ @update:model-value="setFieldValue(field, index, $event)"
/>
@@ -414,6 +419,12 @@ function setFieldValues(field: FieldWithId, index: number, values: FieldValue[])
fields.value[index].values = values;
}
+function setFieldOrganizers(field: FieldWithId, index: number, organizers: OrganizerBase[]) {
+ fields.value[index].organizers = organizers;
+ // Sync the values array with the organizers array
+ fields.value[index].values = organizers.map(org => org.id?.toString() || "").filter(id => id);
+}
+
function removeField(index: number) {
fields.value.splice(index, 1);
state.datePickers.splice(index, 1);