Salve, Paulo!
Consegue compartilhar o código do componente inteiro?
Ao fim dessa aula, o App.vue fica assim:
<template>
<main class="columns is-gapless is-multiline">
<div class="column is-one-quarter">
<BarraLateral />
</div>
<div class="column is-three-quarter conteudo">
<Formulario @aoSalvarTarefa="salvarTarefa"/>
<div class="lista">
<Tarefa v-for="(tarefa, index) in tarefas" :key="index" :tarefa="tarefa"/>
<Box v-if="listaEstaVazia">
Você não está muito produtivo hoje :(
</Box>
</div>
</div>
</main>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import BarraLateral from './components/BarraLateral.vue'
import Formulario from './components/Formulario.vue'
import Tarefa from './components/Tarefa.vue'
import Box from './components/Box.vue'
import ITarefa from './interfaces/ITarefa'
export default defineComponent({
name: 'App',
components: {
BarraLateral,
Formulario,
Tarefa,
Box
},
data () {
return {
tarefas: [] as ITarefa[]
}
},
computed: {
listaEstaVazia () : boolean {
return this.tarefas.length === 0
}
},
methods: {
salvarTarefa (tarefa: ITarefa) {
this.tarefas.push(tarefa)
}
}
});
</script>
<style>
.lista {
padding: 1.25rem;
}
main {
--bg-primario: #fff;
--texto-primario: #000;
}
main.modo-escuro {
--bg-primario: #2b2d42;
--texto-primario: #ddd;
}
.conteudo {
background-color: var(--bg-primario);
}
</style>
E a interface ITarefa é assim:
export default interface ITarefa {
duracaoEmSegundos: number,
descricao: string
}