mealie/frontend/layouts/error.vue
Philipp Fischbeck 86c99b10a2
Use composition API for more components, enable more type checking (#914)
* Activate more linting rules from eslint and typescript

* Properly add VForm as type information

* Fix usage of native types

* Fix more linting issues

* Rename vuetify types file, add VTooltip

* Fix some more typing problems

* Use composition API for more components

* Convert RecipeRating

* Convert RecipeNutrition

* Convert more components to composition API

* Fix globals plugin for type checking

* Add missing icon types

* Fix vuetify types in Nuxt context

* Use composition API for RecipeActionMenu

* Convert error.vue to composition API

* Convert RecipeContextMenu to composition API

* Use more composition API and type checking in recipe/create

* Convert AppButtonUpload to composition API

* Fix some type checking in RecipeContextMenu

* Remove unused components BaseAutoForm and BaseColorPicker

* Convert RecipeCategoryTagDialog to composition API

* Convert RecipeCardSection to composition API

* Convert RecipeCategoryTagSelector to composition API

* Properly import vuetify type definitions

* Convert BaseButton to composition API

* Convert AutoForm to composition API

* Remove unused requests API file

* Remove static routes from recipe API

* Fix more type errors

* Convert AppHeader to composition API, fixing some search bar focus problems

* Convert RecipeDialogSearch to composition API

* Update API types from pydantic models, handle undefined values

* Improve more typing problems

* Add types to other plugins

* Properly type the CRUD API access

* Fix typing of static image routes

* Fix more typing stuff

* Fix some more typing problems

* Turn off more rules
2022-01-08 21:15:23 -09:00

70 lines
1.7 KiB
Vue

<template>
<div>
<v-card-title>
<slot>
<h1 class="mx-auto">{{ $t("page.404-page-not-found") }}</h1>
</slot>
</v-card-title>
<div class="d-flex justify-space-around">
<div class="d-flex align-center">
<p class="primary--text">4</p>
<v-icon color="primary" class="mx-auto mb-0" size="200">
{{ $globals.icons.primary }}
</v-icon>
<p class="primary--text">4</p>
</div>
</div>
<v-card-actions>
<v-spacer></v-spacer>
<slot name="actions">
<v-btn v-for="(button, index) in buttons" :key="index" nuxt :to="button.to" color="primary">
<v-icon left> {{ button.icon }} </v-icon>
{{ button.text }}
</v-btn>
</slot>
<v-spacer></v-spacer>
</v-card-actions>
</div>
</template>
<script lang="ts">
import { defineComponent, useContext, useMeta } from "@nuxtjs/composition-api";
export default defineComponent({
layout: "basic",
props: {
error: {
type: Object,
default: null,
},
},
setup(props) {
useMeta({ title: props.error.statusCode === 404 ? "404 Not Found" : "An error occurred" });
const { $globals, i18n } = useContext();
const buttons = [
{ icon: $globals.icons.home, to: "/", text: i18n.t("general.home") },
{ icon: $globals.icons.primary, to: "/recipes/all", text: i18n.t("page.all-recipes") },
{ icon: $globals.icons.search, to: "/search", text: i18n.t("search.search") },
];
return {
buttons,
}
},
// Needed for useMeta
head: {},
});
</script>
<style scoped>
h1 {
font-size: 20px;
}
p {
padding-bottom: 0 !important;
margin-bottom: 0 !important;
font-size: 200px;
}
</style>