<template> <QuickNav /> <!-- CONTENT --> <section id="Content" class="p-6 pb-24 max-w-3xl mx-auto"> <!-- Breadcrumb --> <div class="mb-8"> <!-- Back --> <div class="text-lg text-center font-light relative px-7"> <h1 class="text-lg text-center px-2 py-1 absolute -left-2 -top-1" @click="$router.back()" > <fa icon="chevron-left" class="fa-fw"></fa> </h1> </div> <!-- Heading --> <h1 id="ViewHeading" class="text-4xl text-center font-light pt-4 mb-8"> Test </h1> </div> <div class="mb-8"> <h2 class="text-xl font-bold mb-4">Notiwind Alert Test Suite</h2> <button @click=" this.$notify( { group: 'alert', type: 'toast', text: 'I\'m a toast. Without a timeout, I\'m stuck.', }, 5000, ) " class="font-bold uppercase bg-slate-900 text-white px-3 py-2 rounded-md mr-2" > Toast </button> <button @click=" this.$notify( { group: 'alert', type: 'info', title: 'Information Alert', text: 'Just wanted you to know.', }, -1, ) " class="font-bold uppercase bg-slate-600 text-white px-3 py-2 rounded-md mr-2" > Info </button> <button @click=" this.$notify( { group: 'alert', type: 'success', title: 'Success Alert', text: 'Congratulations!', }, -1, ) " class="font-bold uppercase bg-emerald-600 text-white px-3 py-2 rounded-md mr-2" > Success </button> <button @click=" this.$notify( { group: 'alert', type: 'warning', title: 'Warning Alert', text: 'You might wanna look at this.', }, -1, ) " class="font-bold uppercase bg-amber-600 text-white px-3 py-2 rounded-md mr-2" > Warning </button> <button @click=" this.$notify( { group: 'alert', type: 'danger', title: 'Danger Alert', text: 'Something terrible has happened!', }, -1, ) " class="font-bold uppercase bg-rose-600 text-white px-3 py-2 rounded-md mr-2" > Danger </button> <button @click=" this.$notify( { group: 'modal', type: 'notification-permission', }, -1, ) " class="font-bold uppercase bg-slate-600 text-white px-3 py-2 rounded-md mr-2" > Notif ON </button> <button @click=" this.$notify( { group: 'modal', type: 'notification-mute', }, -1, ) " class="font-bold uppercase bg-slate-600 text-white px-3 py-2 rounded-md mr-2" > Notif MUTE </button> <button @click=" this.$notify( { group: 'modal', type: 'notification-off', }, -1, ) " class="font-bold uppercase bg-slate-600 text-white px-3 py-2 rounded-md mr-2" > Notif OFF </button> </div> <div> <h2 class="text-xl font-bold mb-4">Share Image</h2> Populates the "shared-photo" view as if they used "share_target". <input type="file" @change="uploadFile" /> <router-link v-if="showFileNextStep()" :to="{ name: 'shared-photo', query: { fileName }, }" class="block w-full text-center text-md bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-2 mt-2" > Go to Shared Page </router-link> </div> </section> </template> <script lang="ts"> import { ref } from "vue"; import { Component, Vue } from "vue-facing-decorator"; import QuickNav from "@/components/QuickNav.vue"; import { db } from "@/db/index"; const inputFileNameRef = ref<Blob>(); @Component({ components: { QuickNav } }) export default class Help extends Vue { fileName?: string; async uploadFile(event: Event) { inputFileNameRef.value = event.target.files[0]; // https://developer.mozilla.org/en-US/docs/Web/API/File // ... plus it has a `type` property from my testing const file = inputFileNameRef.value; if (file != null) { const reader = new FileReader(); reader.onload = async (e) => { const data = e.target?.result as ArrayBuffer; if (data) { const blob = new Blob([new Uint8Array(data)], { type: file.type, }); this.fileName = file.name as string; const temp = await db.temp.get("shared-photo"); if (temp) { await db.temp.update("shared-photo", { blob }); } else { await db.temp.add({ id: "shared-photo", blob }); } } }; reader.readAsArrayBuffer(file as Blob); } } showFileNextStep() { return !!inputFileNameRef.value; } } </script>