mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-10-31 02:03:35 -04:00 
			
		
		
		
	fix: Improve UX for new households/userrs (#4653)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
This commit is contained in:
		| @@ -276,7 +276,8 @@ | |||||||
|     "admin-group-management": "Admin Group Management", |     "admin-group-management": "Admin Group Management", | ||||||
|     "admin-group-management-text": "Changes to this group will be reflected immediately.", |     "admin-group-management-text": "Changes to this group will be reflected immediately.", | ||||||
|     "group-id-value": "Group Id: {0}", |     "group-id-value": "Group Id: {0}", | ||||||
|     "total-households": "Total Households" |     "total-households": "Total Households", | ||||||
|  |     "you-must-select-a-group-before-selecting-a-household": "You must select a group before selecting a household" | ||||||
|   }, |   }, | ||||||
|   "household": { |   "household": { | ||||||
|     "household": "Household", |     "household": "Household", | ||||||
|   | |||||||
| @@ -4,25 +4,29 @@ | |||||||
|       v-model="createDialog" |       v-model="createDialog" | ||||||
|       :title="$t('household.create-household')" |       :title="$t('household.create-household')" | ||||||
|       :icon="$globals.icons.household" |       :icon="$globals.icons.household" | ||||||
|       @submit="createHousehold(createHouseholdForm.data)" |  | ||||||
|     > |     > | ||||||
|       <template #activator> </template> |       <template #activator> </template> | ||||||
|       <v-card-text> |       <v-card-text> | ||||||
|         <v-select |         <v-form ref="refNewHouseholdForm"> | ||||||
|           v-if="groups" |           <v-select | ||||||
|           v-model="createHouseholdForm.data.groupId" |             v-if="groups" | ||||||
|           :items="groups" |             v-model="createHouseholdForm.data.groupId" | ||||||
|           rounded |             :items="groups" | ||||||
|           class="rounded-lg" |             rounded | ||||||
|           item-text="name" |             class="rounded-lg" | ||||||
|           item-value="id" |             item-text="name" | ||||||
|           :return-object="false" |             item-value="id" | ||||||
|           filled |             :return-object="false" | ||||||
|           :label="$tc('household.household-group')" |             filled | ||||||
|           :rules="[validators.required]" |             :label="$tc('household.household-group')" | ||||||
|         /> |             :rules="[validators.required]" | ||||||
|         <AutoForm v-model="createHouseholdForm.data" :update-mode="updateMode" :items="createHouseholdForm.items" /> |           /> | ||||||
|  |           <AutoForm v-model="createHouseholdForm.data" :update-mode="updateMode" :items="createHouseholdForm.items" /> | ||||||
|  |         </v-form> | ||||||
|       </v-card-text> |       </v-card-text> | ||||||
|  |       <template #custom-card-action> | ||||||
|  |         <BaseButton type="submit" @click="handleCreateSubmit"> {{ $t("general.create") }} </BaseButton> | ||||||
|  |       </template> | ||||||
|     </BaseDialog> |     </BaseDialog> | ||||||
|  |  | ||||||
|     <BaseDialog |     <BaseDialog | ||||||
| @@ -92,12 +96,13 @@ | |||||||
| </template> | </template> | ||||||
|  |  | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| import { defineComponent, reactive, toRefs, useContext, useRouter } from "@nuxtjs/composition-api"; | import { defineComponent, reactive, ref, toRefs, useContext, useRouter } from "@nuxtjs/composition-api"; | ||||||
| import { fieldTypes } from "~/composables/forms"; | import { fieldTypes } from "~/composables/forms"; | ||||||
| import { useGroups } from "~/composables/use-groups"; | import { useGroups } from "~/composables/use-groups"; | ||||||
| import { useAdminHouseholds } from "~/composables/use-households"; | import { useAdminHouseholds } from "~/composables/use-households"; | ||||||
| import { validators } from "~/composables/use-validators"; | import { validators } from "~/composables/use-validators"; | ||||||
| import { HouseholdInDB } from "~/lib/api/types/household"; | import { HouseholdInDB } from "~/lib/api/types/household"; | ||||||
|  | import { VForm } from "~/types/vuetify"; | ||||||
|  |  | ||||||
| export default defineComponent({ | export default defineComponent({ | ||||||
|   layout: "admin", |   layout: "admin", | ||||||
| @@ -105,10 +110,12 @@ export default defineComponent({ | |||||||
|     const { i18n } = useContext(); |     const { i18n } = useContext(); | ||||||
|     const { groups } = useGroups(); |     const { groups } = useGroups(); | ||||||
|     const { households, refreshAllHouseholds, deleteHousehold, createHousehold } = useAdminHouseholds(); |     const { households, refreshAllHouseholds, deleteHousehold, createHousehold } = useAdminHouseholds(); | ||||||
|  |     const refNewHouseholdForm = ref<VForm | null>(null); | ||||||
|  |  | ||||||
|     const state = reactive({ |     const state = reactive({ | ||||||
|       createDialog: false, |       createDialog: false, | ||||||
|       confirmDialog: false, |       confirmDialog: false, | ||||||
|  |       loading: false, | ||||||
|       deleteTarget: 0, |       deleteTarget: 0, | ||||||
|       search: "", |       search: "", | ||||||
|       headers: [ |       headers: [ | ||||||
| @@ -153,14 +160,24 @@ export default defineComponent({ | |||||||
|       router.push(`/admin/manage/households/${item.id}`); |       router.push(`/admin/manage/households/${item.id}`); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     async function handleCreateSubmit() { | ||||||
|  |       if (!refNewHouseholdForm.value?.validate()) { | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       state.createDialog = false; | ||||||
|  |       await createHousehold(state.createHouseholdForm.data); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     return { |     return { | ||||||
|         ...toRefs(state), |         ...toRefs(state), | ||||||
|  |         refNewHouseholdForm, | ||||||
|         groups, |         groups, | ||||||
|         households, |         households, | ||||||
|         validators, |         validators, | ||||||
|         refreshAllHouseholds, |         refreshAllHouseholds, | ||||||
|         deleteHousehold, |         deleteHousehold, | ||||||
|         createHousehold, |         handleCreateSubmit, | ||||||
|         openDialog, |         openDialog, | ||||||
|         handleRowClick, |         handleRowClick, | ||||||
|     }; |     }; | ||||||
|   | |||||||
| @@ -11,7 +11,6 @@ | |||||||
|       <v-card outlined> |       <v-card outlined> | ||||||
|         <v-card-text> |         <v-card-text> | ||||||
|           <v-select |           <v-select | ||||||
|             v-if="groups" |  | ||||||
|             v-model="selectedGroupId" |             v-model="selectedGroupId" | ||||||
|             :items="groups" |             :items="groups" | ||||||
|             rounded |             rounded | ||||||
| @@ -24,8 +23,8 @@ | |||||||
|             :rules="[validators.required]" |             :rules="[validators.required]" | ||||||
|           /> |           /> | ||||||
|           <v-select |           <v-select | ||||||
|             v-if="households" |  | ||||||
|             v-model="newUserData.household" |             v-model="newUserData.household" | ||||||
|  |             :disabled="!selectedGroupId" | ||||||
|             :items="households" |             :items="households" | ||||||
|             rounded |             rounded | ||||||
|             class="rounded-lg" |             class="rounded-lg" | ||||||
| @@ -34,6 +33,8 @@ | |||||||
|             :return-object="false" |             :return-object="false" | ||||||
|             filled |             filled | ||||||
|             :label="$t('household.user-household')" |             :label="$t('household.user-household')" | ||||||
|  |             :hint="selectedGroupId ? '' : $tc('group.you-must-select-a-group-before-selecting-a-household')" | ||||||
|  |             persistent-hint | ||||||
|             :rules="[validators.required]" |             :rules="[validators.required]" | ||||||
|           /> |           /> | ||||||
|           <AutoForm v-model="newUserData" :items="userForm" /> |           <AutoForm v-model="newUserData" :items="userForm" /> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user