diff options
| author | Adam Soltys <[email protected]> | 2022-12-24 05:22:50 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2022-12-24 05:22:50 -0800 |
| commit | 10c20c0c5b130c389680e37e4e4aba8e2abdbf1e (patch) | |
| tree | 6862c7f94c899b3dad177b16698c08abc678eefb /src/components/Password.svelte | |
| parent | e1a34bbc86600c6dfb782ac936030379deb6365a (diff) | |
| download | coinos-ui-10c20c0c5b130c389680e37e4e4aba8e2abdbf1e.tar.gz coinos-ui-10c20c0c5b130c389680e37e4e4aba8e2abdbf1e.zip | |
password prompt and pin fixes
Diffstat (limited to 'src/components/Password.svelte')
| -rw-r--r-- | src/components/Password.svelte | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/components/Password.svelte b/src/components/Password.svelte new file mode 100644 index 00000000..c9318201 --- /dev/null +++ b/src/components/Password.svelte @@ -0,0 +1,77 @@ +<script> + import { Icon } from "$comp"; + import { failure, post } from '$lib/utils'; + import { password as pw, passwordPrompt } from '$lib/store'; + + export let user; + + let password; + let { username } = user; + let revealPassword = false; + + let cancel = () => ($passwordPrompt = false); + + let submit = async () => { + try { + await post('/password', { password }); + $passwordPrompt = false; + $pw = password; + } catch (e) { + failure('Invalid password, try again'); + } + }; +</script> + +<div class="fixed inset-0 bg-gray-600 bg-opacity-50 overflow-y-auto h-full w-full z-20"> + <div class="relative top-1/3 mx-auto p-5 border w-96 shadow-lg rounded-md bg-white space-y-5"> + <h1 class="text-center text-2xl font-semibold">Please enter your password</h1> + <form on:submit|preventDefault={submit}> + <div class="relative mb-5"> + {#if revealPassword} + <input + name="password" + type="text" + required + class="bg-primary" + bind:value={password} + autocapitalize="none" + autofocus + /> + {:else} + <input + name="password" + type="password" + required + class="bg-primary" + bind:value={password} + autocapitalize="none" + autofocus + /> + {/if} + <button + type="button" + on:click={() => (revealPassword = !revealPassword)} + class="absolute right-5 top-5" + > + <Icon icon={revealPassword ? 'eye' : 'eye-off'} /> + </button> + </div> + <div class="w-full flex"> + <button + type="button" + class="border-2 border-black rounded-xl font-semibold mx-auto py-3 w-40 hover:opacity-80 mx-auto" + on:click={cancel} + on:keydown={cancel} + > + <div class="my-auto">Cancel</div> + </button> + <button + type="submit" + class="border-2 border-black rounded-xl font-semibold mx-auto py-3 w-40 hover:opacity-80 mx-auto" + > + <div class="my-auto">Submit</div> + </button> + </div> + </form> + </div> +</div> |
