Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created July 17, 2021 04:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/f7e8357ca429bb715324815ed1f65497 to your computer and use it in GitHub Desktop.
Save parzibyte/f7e8357ca429bb715324815ed1f65497 to your computer and use it in GitHub Desktop.
<template>
<div>
<div class="columns">
<div class="column">
<b-field label="Buscar receta">
<b-input
@keyup.native="buscar()"
v-model="busqueda"
placeholder="Ingresa el término de búsqueda"
icon-right="close-circle"
icon-right-clickable
@icon-right-click="cancelarBusqueda()"
:loading="cargando"
></b-input>
</b-field>
</div>
</div>
<div class="columns is-multiline is-desktop">
<div
class="column is-one-third-desktop"
v-for="(receta, i) in recetas"
:key="i"
>
<tarjeta-receta :receta="receta"></tarjeta-receta>
</div>
</div>
</div>
</template>
<script>
import RecetasService from "../services/RecetasService";
import TarjetaReceta from "./TarjetaReceta.vue";
import Utiles from "../services/Utiles";
export default {
components: { TarjetaReceta },
data: () => ({
recetas: [],
cargando: false,
busqueda: "",
}),
async mounted() {
await this.obtenerRecetas();
this.buscar = Utiles.debounce(async () => {
if (!this.busqueda) {
await this.cancelarBusqueda();
return;
}
this.cargando = true;
this.recetas = await RecetasService.buscarRecetas(this.busqueda);
this.cargando = false;
}, 500);
},
methods: {
async cancelarBusqueda() {
if (!this.busqueda) return;
this.busqueda = "";
await this.obtenerRecetas();
},
async obtenerRecetas() {
this.cargando = true;
this.recetas = await RecetasService.obtenerRecetas();
this.cargando = false;
},
},
};
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment