Integrate time until visually

This commit is contained in:
Julien Calixte
2023-03-14 11:18:54 +01:00
parent 8b30637066
commit 3102d6dc5e
4 changed files with 43 additions and 64 deletions

View File

@@ -1,30 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import HelloWorld from './components/HelloWorld.vue' import ResponsiveTimeUntil from "./components/ResponsiveTimeUntil.vue"
</script> </script>
<template> <template>
<div> <ResponsiveTimeUntil />
<a href="https://vitejs.dev" target="_blank">
<img src="/vite.svg" class="logo" alt="Vite logo" />
</a>
<a href="https://vuejs.org/" target="_blank">
<img src="./assets/vue.svg" class="logo vue" alt="Vue logo" />
</a>
</div>
<HelloWorld msg="Vite + Vue" />
</template> </template>
<style scoped>
.logo {
height: 6em;
padding: 1.5em;
will-change: filter;
transition: filter 300ms;
}
.logo:hover {
filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
filter: drop-shadow(0 0 2em #42b883aa);
}
</style>

View File

@@ -1,38 +0,0 @@
<script setup lang="ts">
import { ref } from 'vue'
defineProps<{ msg: string }>()
const count = ref(0)
</script>
<template>
<h1>{{ msg }}</h1>
<div class="card">
<button type="button" @click="count++">count is {{ count }}</button>
<p>
Edit
<code>components/HelloWorld.vue</code> to test HMR
</p>
</div>
<p>
Check out
<a href="https://vuejs.org/guide/quick-start.html#local" target="_blank"
>create-vue</a
>, the official Vue + Vite starter
</p>
<p>
Install
<a href="https://github.com/johnsoncodehk/volar" target="_blank">Volar</a>
in your IDE for a better DX
</p>
<p class="read-the-docs">Click on the Vite and Vue logos to learn more</p>
</template>
<style scoped>
.read-the-docs {
color: #888;
}
</style>

View File

@@ -0,0 +1,40 @@
<script setup lang="ts">
import { onUnmounted, ref } from "vue"
import { timeUntil } from "../services/time-until"
const timeUntilTarget = timeUntil("2024-03-13T09:00:00.000Z")
const yearsUntil = ref(timeUntilTarget.years)
const monthsUntil = ref(timeUntilTarget.months)
const daysUntil = ref(timeUntilTarget.days)
const hoursUntil = ref(timeUntilTarget.hours)
const secondsUntil = ref(timeUntilTarget.seconds)
const id = setInterval(() => {
const timeUntilTarget = timeUntil("2024-03-13T09:00:00.000Z")
yearsUntil.value = timeUntilTarget.years
monthsUntil.value = timeUntilTarget.months
daysUntil.value = timeUntilTarget.days
hoursUntil.value = timeUntilTarget.hours
secondsUntil.value = timeUntilTarget.seconds
}, 1000)
onUnmounted(() => clearInterval(id))
</script>
<template>
<section>
<div>{{ yearsUntil }} years</div>
<div>{{ monthsUntil }} months</div>
<div>{{ daysUntil }} days</div>
<div>{{ hoursUntil }} hours</div>
<div>{{ secondsUntil }} seconds</div>
</section>
</template>
<style scoped>
section {
display: flex;
}
</style>

View File

@@ -1,6 +1,6 @@
import { DateTime } from "luxon" import { DateTime } from "luxon"
interface TimeUntilReturn { export interface TimeUntilReturn {
years: number years: number
months: number months: number
days: number days: number