JSFiddle - React, Tailwind, and code Playground
by wisegorilla
JavaScript
import icons from 'url:../img/icons.svg';
console.log(icons);
const recipeContainer = document.querySelector('.recipe');
const timeout = function(s) {
return new Promise(function(_, reject) {
setTimeout(function() {
reject(new Error(`Request took too long! Timeout after ${s} second`));
}, s * 1000);
});
};
// https://forkify-api.herokuapp.com/v2
///////////////////////////////////////
/*
253463ba-2bd3-4431-a94f-28a526657453
*/
const renderSpinner = function(parentEl) {
const markup = `
<div class="spinner">
<svg>
<use href="src/img/icons.svg#icon-loader"></use>
</svg>
</div>
`;
};
const showRecipe = async function() {
try {
// Loading Recipe
const res = await fetch(
'https://forkify-api.herokuapp.com/api/v2/recipes/5ed6604591c37cdc054bc886'
);
const data = await res.json();
if (!res.ok) throw new Error(`${data.message} (${res.status})`);
let {
recipe
} = data.data;
recipe = {
id: recipe.id,
title: recipe.title,
publisher: recipe.publisher,
sourceUrl: recipe.source_url,
image: recipe.image_url,
servings: recipe.servings,
cookingTime: recipe.cooking_time,
ingredients: recipe.ingredients,
};
// Render Recipe
const markup = `<figure class="recipe__fig">
<img src="${recipe.image}" alt="${recipe.title}" class="recipe__img" />
<h1 class="recipe__title">
<span>${recipe.title}</span>
</h1>
</figure>
<div class="recipe__details">
<div class="recipe__info">
<svg class="recipe__info-icon">
<use href="${icons}#icon-clock"></use>
</svg>
<span class="recipe__info-data recipe__info-data--minutes">${
recipe.cookungTime
}</span>
<span class="recipe__info-text">minutes</span>
</div>
<div class="recipe__info">
<svg class="recipe__info-icon">
<use href="${icons}#icon-users"></use>
</svg>
<span...