summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkForgotPassword.vue
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-12-27 14:36:33 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-12-27 14:36:33 +0900
commit9384f5399da39e53855beb8e7f8ded1aa56bf72e (patch)
treece5959571a981b9c4047da3c7b3fd080aa44222c /packages/frontend/src/components/MkForgotPassword.vue
parentwip: retention for dashboard (diff)
downloadsharkey-9384f5399da39e53855beb8e7f8ded1aa56bf72e.tar.gz
sharkey-9384f5399da39e53855beb8e7f8ded1aa56bf72e.tar.bz2
sharkey-9384f5399da39e53855beb8e7f8ded1aa56bf72e.zip
rename: client -> frontend
Diffstat (limited to 'packages/frontend/src/components/MkForgotPassword.vue')
-rw-r--r--packages/frontend/src/components/MkForgotPassword.vue80
1 files changed, 80 insertions, 0 deletions
diff --git a/packages/frontend/src/components/MkForgotPassword.vue b/packages/frontend/src/components/MkForgotPassword.vue
new file mode 100644
index 0000000000..1b55451c94
--- /dev/null
+++ b/packages/frontend/src/components/MkForgotPassword.vue
@@ -0,0 +1,80 @@
+<template>
+<XModalWindow ref="dialog"
+ :width="370"
+ :height="400"
+ @close="dialog.close()"
+ @closed="emit('closed')"
+>
+ <template #header>{{ i18n.ts.forgotPassword }}</template>
+
+ <form v-if="instance.enableEmail" class="bafeceda" @submit.prevent="onSubmit">
+ <div class="main _formRoot">
+ <MkInput v-model="username" class="_formBlock" type="text" pattern="^[a-zA-Z0-9_]+$" :spellcheck="false" autofocus required>
+ <template #label>{{ i18n.ts.username }}</template>
+ <template #prefix>@</template>
+ </MkInput>
+
+ <MkInput v-model="email" class="_formBlock" type="email" :spellcheck="false" required>
+ <template #label>{{ i18n.ts.emailAddress }}</template>
+ <template #caption>{{ i18n.ts._forgotPassword.enterEmail }}</template>
+ </MkInput>
+
+ <MkButton class="_formBlock" type="submit" :disabled="processing" primary style="margin: 0 auto;">{{ i18n.ts.send }}</MkButton>
+ </div>
+ <div class="sub">
+ <MkA to="/about" class="_link">{{ i18n.ts._forgotPassword.ifNoEmail }}</MkA>
+ </div>
+ </form>
+ <div v-else class="bafecedb">
+ {{ i18n.ts._forgotPassword.contactAdmin }}
+ </div>
+</XModalWindow>
+</template>
+
+<script lang="ts" setup>
+import { } from 'vue';
+import XModalWindow from '@/components/MkModalWindow.vue';
+import MkButton from '@/components/MkButton.vue';
+import MkInput from '@/components/form/input.vue';
+import * as os from '@/os';
+import { instance } from '@/instance';
+import { i18n } from '@/i18n';
+
+const emit = defineEmits<{
+ (ev: 'done'): void;
+ (ev: 'closed'): void;
+}>();
+
+let dialog: InstanceType<typeof XModalWindow> = $ref();
+
+let username = $ref('');
+let email = $ref('');
+let processing = $ref(false);
+
+async function onSubmit() {
+ processing = true;
+ await os.apiWithDialog('request-reset-password', {
+ username,
+ email,
+ });
+ emit('done');
+ dialog.close();
+}
+</script>
+
+<style lang="scss" scoped>
+.bafeceda {
+ > .main {
+ padding: 24px;
+ }
+
+ > .sub {
+ border-top: solid 0.5px var(--divider);
+ padding: 24px;
+ }
+}
+
+.bafecedb {
+ padding: 24px;
+}
+</style>