Fix/fix broken pwa (#1086)

* remove fetch / use axios fix #1077

* revert checkbox change

* add password peek

* fix bool check
This commit is contained in:
Hayden 2022-03-22 20:41:54 -08:00 committed by GitHub
parent e743d2c66b
commit ba325c12f7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 41 additions and 17 deletions

View file

@ -9,7 +9,7 @@
<h3 v-if="showTitleEditor[index]" class="mt-2">{{ ingredient.title }}</h3> <h3 v-if="showTitleEditor[index]" class="mt-2">{{ ingredient.title }}</h3>
<v-divider v-if="showTitleEditor[index]"></v-divider> <v-divider v-if="showTitleEditor[index]"></v-divider>
<v-list-item dense @click="toggleChecked(index)"> <v-list-item dense @click="toggleChecked(index)">
<v-checkbox hide-details :value="checked[index]" color="secondary" /> <v-checkbox hide-details :value="checked[index]" class="pt-0 my-auto py-auto" color="secondary" />
<v-list-item-content> <v-list-item-content>
<VueMarkdown <VueMarkdown
class="ma-0 pa-0 text-subtitle-1 dense-markdown" class="ma-0 pa-0 text-subtitle-1 dense-markdown"
@ -85,13 +85,4 @@ export default defineComponent({
.dense-markdown p { .dense-markdown p {
margin: auto !important; margin: auto !important;
} }
.v-input--selection-controls {
margin-top: 0.5rem;
margin-bottom: auto !important;
}
.v-input--selection-controls__input {
margin-bottom: auto !important;
}
</style> </style>

View file

@ -1,13 +1,16 @@
import { onMounted, ref, Ref } from "@nuxtjs/composition-api"; import { ref, Ref, useAsync, useContext } from "@nuxtjs/composition-api";
import { useAsyncKey } from "../use-utils";
import { AppInfo } from "~/types/api-types/admin"; import { AppInfo } from "~/types/api-types/admin";
export function useAppInfo(): Ref<AppInfo | null> { export function useAppInfo(): Ref<AppInfo | null> {
const appInfo = ref<null | AppInfo>(null); const appInfo = ref<null | AppInfo>(null);
onMounted(async () => { const { $axios } = useContext();
const data = await fetch("/api/app/about").then((res) => res.json());
appInfo.value = data as AppInfo; useAsync(async () => {
}); const data = await $axios.get<AppInfo>("/api/app/about");
appInfo.value = data.data;
}, useAsyncKey());
return appInfo; return appInfo;
} }

View file

@ -0,0 +1,22 @@
import { computed, ref, useContext } from "@nuxtjs/composition-api";
export function usePasswordField() {
const show = ref(false);
const { $globals } = useContext();
const passwordIcon = computed(() => {
return show.value ? $globals.icons.eyeOff : $globals.icons.eye;
});
const inputType = computed(() => (show.value ? "text" : "password"));
const togglePasswordShow = () => {
show.value = !show.value;
};
return {
inputType,
togglePasswordShow,
passwordIcon,
};
}

View file

@ -25,7 +25,7 @@
<v-card-title class="headline justify-center pb-1"> Sign In </v-card-title> <v-card-title class="headline justify-center pb-1"> Sign In </v-card-title>
<v-card-text> <v-card-text>
<v-form @submit.prevent="authenticate()"> <v-form @submit.prevent="authenticate">
<v-text-field <v-text-field
v-model="form.email" v-model="form.email"
:prepend-inner-icon="$globals.icons.email" :prepend-inner-icon="$globals.icons.email"
@ -41,12 +41,14 @@
id="password" id="password"
v-model="form.password" v-model="form.password"
:prepend-inner-icon="$globals.icons.lock" :prepend-inner-icon="$globals.icons.lock"
:append-icon="passwordIcon"
filled filled
rounded rounded
class="rounded-lg" class="rounded-lg"
name="password" name="password"
label="Password" label="Password"
type="password" :type="inputType"
@click:append="togglePasswordShow"
/> />
<v-checkbox v-model="form.remember" class="ml-2 mt-n2" label="Remember Me"></v-checkbox> <v-checkbox v-model="form.remember" class="ml-2 mt-n2" label="Remember Me"></v-checkbox>
<v-card-actions class="justify-center pt-0"> <v-card-actions class="justify-center pt-0">
@ -110,6 +112,7 @@
import { defineComponent, ref, useContext, computed, reactive } from "@nuxtjs/composition-api"; import { defineComponent, ref, useContext, computed, reactive } from "@nuxtjs/composition-api";
import { useDark } from "@vueuse/core"; import { useDark } from "@vueuse/core";
import { useAppInfo } from "~/composables/api"; import { useAppInfo } from "~/composables/api";
import { usePasswordField } from "~/composables/use-password-field";
import { alert } from "~/composables/use-toast"; import { alert } from "~/composables/use-toast";
import { useToggleDarkMode } from "~/composables/use-utils"; import { useToggleDarkMode } from "~/composables/use-utils";
export default defineComponent({ export default defineComponent({
@ -131,6 +134,8 @@ export default defineComponent({
const appInfo = useAppInfo(); const appInfo = useAppInfo();
const { passwordIcon, inputType, togglePasswordShow } = usePasswordField();
const allowSignup = computed(() => appInfo.value?.allowSignup || false); const allowSignup = computed(() => appInfo.value?.allowSignup || false);
async function authenticate() { async function authenticate() {
@ -169,6 +174,9 @@ export default defineComponent({
allowSignup, allowSignup,
authenticate, authenticate,
toggleDark, toggleDark,
passwordIcon,
inputType,
togglePasswordShow,
}; };
}, },