• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Simple Daily Eats

  • Home
  • Recipe Index
  • Budget
  • Cheat Meal
  • Healthy
  • Keto
  • Quick
  • Vegan
  • About
  • Contact

Simple Daily Eats

  • Home
  • Recipe Index
  • Budget
  • Cheat Meal
  • Healthy
  • Keto
  • Quick
  • Vegan
  • About
  • Contact

Cilantro Lime Steak Bowls

Jump to Recipe·Print Recipe

If you’re looking for a meal that brings a burst of flavor and a touch of sunshine to your dinner table, these Cilantro Lime Steak Bowls are just the ticket! This recipe has become a favorite in my house because it’s not only delicious but incredibly versatile. Whether you’re hosting friends for a weekend gathering or trying to whip up something quick on a busy weeknight, these bowls have you covered.

Cilantro Lime Steak Bowls image 2

The zesty cilantro lime marinade takes flank steak to the next level, and when paired with fresh toppings like avocado and black beans, it creates a colorful dish that’s as pleasing to the eye as it is to the palate. Plus, it’s perfect for meal prep—just marinate the steak ahead of time, grill it up quickly, and assemble your bowls for an easy dinner that everyone will love!

Cilantro Lime Steak Bowls image 3
Cilantro Lime Steak Bowls image 4

Why You’ll Love This Recipe

  • Quick and Easy: With just 20 minutes of prep and 15 minutes of cooking, you’ll have dinner ready in no time!
  • Family-Friendly: Kids love building their own bowls, making mealtime fun and interactive.
  • Fresh Ingredients: The combination of lime, cilantro, and fresh veggies creates a dish full of vibrant flavors.
  • Meal Prep Friendly: Make extra marinade and grill enough steak for leftovers throughout the week!
  • Customizable: Everyone can personalize their bowl with their favorite toppings—no one leaves disappointed!

Ingredients You’ll Need

This recipe uses simple, wholesome ingredients that come together beautifully. You’ll find everything you need at your local grocery store. Here’s what you’ll need to create these delightful bowls:

For the Marinade

  • 2 lbs flank steak
  • 1/2 cup avocado or olive oil
  • Zest of 1 lime
  • Juice of 2 limes
  • 4 cloves fresh garlic (minced or finely chopped)
  • 1/2 cup chopped cilantro
  • 2 teaspoons kosher salt
  • 1/2 teaspoon freshly ground black pepper

For the Bowls

  • 4 cups cooked rice or riced cauliflower
  • 2 avocados (sliced)
  • 1 can (15 oz) black beans (heated)
  • 1 can (15 oz) corn (heated)
  • 1 cup shredded cheddar cheese
  • 1/2 red onion (diced)

For the Lime Crema

  • 1 cup sour cream
  • 2 teaspoons Tajin seasoning
  • Juice of 1 lime

Variations

One of the best things about these Cilantro Lime Steak Bowls is how flexible they are! You can mix and match ingredients to suit your taste or dietary needs. Here are some fun variations:

  • Swap the protein: Use grilled chicken or shrimp instead of flank steak for a lighter option.
  • Go vegan: Substitute the steak with marinated grilled tofu or tempeh for a plant-based twist.
  • Add more veggies: Toss in some sautéed peppers or roasted sweet potatoes for added nutrition and flavor.
  • Spice it up: Add diced jalapeños or drizzle some hot honey over your bowl for an extra kick.

How to Make Cilantro Lime Steak Bowls

Step 1: Marinate the Flank Steak

Start by placing your flank steak in a shallow dish or zip-top bag. In a small bowl, combine avocado oil, lime zest, lime juice, minced garlic, chopped cilantro, kosher salt, and black pepper. Whisk everything together until well mixed. Pour this zesty marinade over your steak, ensuring both sides are coated perfectly. Cover it up and let it marinate in the refrigerator for at least 30 minutes—this step is crucial as it infuses all that incredible flavor into the meat!

Step 2: Grill the Steak

Once your steak has marinated to perfection (30 minutes to 3 hours), it’s time to heat up your grill! Aim for medium-high heat. Place the marinated steak on the grill and let it cook for about 10 minutes before flipping it over. Grill for another 10 minutes or until it reaches your desired internal temperature—medium-rare is typically around 135°F (57°C). After grilling, allow your steak to rest on a plate or cutting board for about 5-10 minutes; this helps retain its juices.

Step 3: Assemble Your Bowls

Now comes the fun part! Slice your grilled steak thinly against the grain or cut it into cubes if you prefer bite-sized pieces. In individual bowls, layer your cooked rice or riced cauliflower first. Then add in generous portions of sliced avocado, heated black beans, corn, shredded cheddar cheese, and diced red onion. Finally, don’t forget to drizzle with our tangy lime crema made from sour cream mixed with Tajin seasoning and fresh lime juice—the finishing touch that ties everything together!

And there you have it—a vibrant meal that’s sure to impress family and friends alike! Enjoy every bite!

Pro Tips for Making Cilantro Lime Steak Bowls

To ensure your Cilantro Lime Steak Bowls are a hit, keep these helpful tips in mind!

  • Marinate Longer for Flavor: Allowing the steak to marinate for up to 3 hours enhances the flavor, ensuring every bite is bursting with zesty goodness.

  • Let the Steak Rest: After grilling, letting the steak rest for 5-10 minutes helps retain its juices, resulting in a more tender and flavorful meat.

  • Slice Against the Grain: Cutting the steak against the grain ensures each piece is tender and easy to chew, making for a delightful eating experience.

  • Customize Your Toppings: Feel free to add or substitute toppings based on your preferences—think pico de gallo, fresh jalapeños, or even roasted vegetables for added texture and flavor.

  • Make Ahead for Meal Prep: Prepare your ingredients in advance. You can grill the steak and prep all the toppings to create quick, delicious meals throughout the week!

How to Serve Cilantro Lime Steak Bowls

Presenting your Cilantro Lime Steak Bowls can make mealtime feel special! Here are some ideas to elevate your dish.

Garnishes

  • Fresh cilantro leaves: A sprinkle of fresh cilantro adds a pop of color and enhances the dish’s flavor profile.
  • Lime wedges: Placing lime wedges on the side allows everyone to squeeze extra citrus over their bowl, amplifying that zesty kick.

Side Dishes

  • Grilled vegetables: Zucchini, bell peppers, and asparagus tossed with olive oil and grilled until slightly charred pair perfectly with the flavors of your steak bowls.
  • Mexican street corn salad: This vibrant salad made with corn, lime juice, and spices adds a refreshing crunch that complements the richness of the steak.
  • Tortilla chips with salsa: Crispy tortilla chips served with a side of fresh salsa can provide a satisfying crunch and additional flavor contrast.

Make Ahead and Storage

Cilantro Lime Steak Bowls are perfect for meal prep! You can prepare the components in advance to save time during busy weekdays.

Storing Leftovers

  • Store any leftovers in an airtight container in the refrigerator.
  • Consume within 3-4 days for optimal freshness.
  • Keep the lime crema separate to maintain its creamy texture.

Freezing

  • Allow the cooked steak and components to cool completely before freezing.
  • Portion out into freezer-safe containers, leaving some space for expansion.
  • They can be frozen for up to 2 months. Label with the date!

Reheating

  • Thaw overnight in the refrigerator before reheating.
  • Reheat in a skillet over medium heat until warmed through, or use a microwave, stirring occasionally.
  • Add fresh lime juice to brighten up flavors when serving.

FAQs

Can I make Cilantro Lime Steak Bowls without beef?

Absolutely! You can substitute flank steak with grilled chicken, shrimp, or even tofu for a delicious variation of Cilantro Lime Steak Bowls.

How can I adjust the spice level in Cilantro Lime Steak Bowls?

To control the spice level, you can add diced jalapeños or a pinch of cayenne pepper to your marinade. Adjust according to your taste!

What can I use instead of sour cream for the crema?

If you’re looking for alternatives, try using Greek yogurt or a dairy-free yogurt option. Both work well and will still give you that creamy texture.

Can I meal prep Cilantro Lime Steak Bowls for the week?

Yes! Prepare all ingredients ahead of time and store them separately. Assemble as needed throughout the week for quick and tasty meals.

Final Thoughts

I hope you enjoy making these Cilantro Lime Steak Bowls as much as I do! This recipe is not only flavorful but also versatile, allowing you to customize it to your liking. Whether it’s a cozy family dinner or meal prep for your week ahead, I believe these bowls will become a favorite. Enjoy every bite!

Print

Cilantro Lime Steak Bowls

Print Recipe

5 Stars 4 Stars 3 Stars 2 Stars 1 Star

No reviews

Cilantro Lime Steak Bowls are a delightful fusion of vibrant flavors and fresh ingredients that will elevate your dinner experience. This recipe features marinated flank steak, grilled to perfection and served over a bed of rice or riced cauliflower, topped with creamy avocado, black beans, corn, and a tangy lime crema. Ideal for meal prep or casual entertaining, these bowls offer versatility for everyone at your table to customize their meal according to their taste preferences. With minimal prep and cooking time, you’ll have a satisfying dish ready in no time. Make these Cilantro Lime Steak Bowls your new weeknight staple!

  • Author: Sarah Mitchell
  • Prep Time: 20 minutes
  • Cook Time: 15 minutes
  • Total Time: 35 minutes
  • Yield: Serves approximately 6 people 1x
  • Category: Main
  • Method: Grilling
  • Cuisine: Mexican

Ingredients


Scale

  • 2 lbs flank steak
  • 1/2 cup avocado or olive oil
  • Zest of 3 limes
  • Juice of 3 limes
  • 4 cloves garlic (minced)
  • 1/2 cup chopped cilantro
  • 2 teaspoons kosher salt
  • 1/2 teaspoon freshly ground black pepper
  • 4 cups cooked rice or riced cauliflower
  • 2 avocados (sliced)
  • 1 can (15 oz) black beans (heated)
  • 1 can (15 oz) corn (heated)
  • 1 cup shredded cheddar cheese
  • 1/2 red onion (diced)
  • 1 cup sour cream
  • 2 teaspoons Tajin seasoning

Instructions

  1. Marinate the flank steak by combining avocado oil, lime zest, lime juice, minced garlic, chopped cilantro, salt, and pepper in a bowl. Coat the steak with the marinade and refrigerate for at least 30 minutes.
  2. Preheat grill to medium-high heat. Grill marinated steak for about 20 minutes total, flipping halfway through until it reaches your desired doneness. Let rest for 5–10 minutes before slicing.
  3. Assemble bowls: layer cooked rice or riced cauliflower with sliced steak, avocado, black beans, corn, cheese, and diced onion. Drizzle with lime crema made from sour cream mixed with Tajin seasoning and lime juice.

Nutrition

  • Serving Size: 1 bowl (approximately 400g)
  • Calories: 610
  • Sugar: 5g
  • Sodium: 850mg
  • Fat: 34g
  • Saturated Fat: 8g
  • Unsaturated Fat: 22g
  • Trans Fat: 0g
  • Carbohydrates: 52g
  • Fiber: 12g
  • Protein: 30g
  • Cholesterol: 95mg

Did you make this recipe?

Share a photo and tag us — we can’t wait to see what you’ve made!

window.trCommon={“minRating”:6,”ajaxurl”:”https:\/\/www.simpledailyeats.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”8c4d8e7409″,”postId”:3656};
window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.smoothScroll = {
init() {
document.addEventListener( ‘click’, ( e ) => {
let anchor = e.target;
if ( anchor.tagName !== ‘A’ ) {
anchor = anchor.closest( ‘a.tasty-recipes-scrollto’ );
}

if ( ! anchor || ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) {
return;
}

const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}

e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const element = document.querySelector( selector );
if ( ! element ) {
return;
}
element.scrollIntoView( { behavior: ‘smooth’ } );
}
};

document.addEventListener(
‘DOMContentLoaded’,
() => window.TastyRecipes.smoothScroll.init()
);

(function(){

var bothEquals = function( d1, d2, D ) {
var ret = 0;
if (d1<=D) {
ret++;
}
if (d2<=D) {
ret++;
}
return ret === 2;
};

var frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1+1,d2=1;if(x!==n1){while(bothEquals(d1,d2,D)){var m=(n1+n2)/(d1+d2);if(x===m){if(d1+d2d2){d2=D+1;}else {d1=D+1;}break}else if(xD){d1=d2;n1=n2}if(!mixed){return[0,n1,d1];}var q=Math.floor(n1/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1+P_2;Q=A*Q_1+Q_2;if(B-AD){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed){return[0,sgn*P,Q];}var q=Math.floor(sgn*P/Q);return[q,sgn*P-q*Q,Q]};

window.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(“%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D”));

window.tastyRecipesFormatAmount = function(amount, el) {
if ( parseFloat( amount ) === parseInt( amount ) ) {
return amount;
}
var roundType = ‘frac’;
if (typeof el.dataset.amountShouldRound !== ‘undefined’) {
if (‘false’ !== el.dataset.amountShouldRound) {
if ( ‘number’ === el.dataset.amountShouldRound ) {
roundType = ‘number’;
} else if (‘frac’ === el.dataset.amountShouldRound) {
roundType = ‘frac’;
} else if (‘vulgar’ === el.dataset.amountShouldRound) {
roundType = ‘vulgar’;
} else {
roundType = ‘integer’;
}
}
}
if (‘number’ === roundType) {
amount = Number.parseFloat(amount).toPrecision(2);
} else if (‘integer’ === roundType) {
amount = Math.round(amount);
} else if (‘frac’ === roundType || ‘vulgar’ === roundType) {
var denom = 8;
if (typeof el.dataset.unit !== ‘undefined’) {
var unit = el.dataset.unit;
if ([‘cups’,’cup’,’c’].includes(unit)) {
denom = 4;
if (0.125 === amount) {
denom = 8;
}
if (“0.1667″ === Number.parseFloat( amount ).toPrecision(4)) {
denom = 6;
}
}
if ([‘tablespoons’,’tablespoon’,’tbsp’].includes(unit)) {
denom = 2;
}
if ([‘teaspoons’,’teaspoon’,’tsp’].includes(unit)) {
denom = 8;
}
}
var amountArray = frac.cont( amount, denom, true );
var newAmount = ”;
if ( amountArray[1] !== 0 ) {
newAmount = amountArray[1] + ‘/’ + amountArray[2];
if (‘vulgar’ === roundType) {
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {
newAmount = vulgar;
}
});
}
}
if ( newAmount ) {
newAmount = ‘ ‘ + newAmount;
}
if ( amountArray[0] ) {
newAmount = amountArray[0] + newAmount;
}
amount = newAmount;
}
return amount;
};

window.tastyRecipesUpdatePrintLink = () => {

const printButton = document.querySelector( ‘.tasty-recipes-print-button’ );

if ( ! printButton ) {
return;
}

const printURL = new URL( printButton.href );
const searchParams = new URLSearchParams( printURL.search );

const unitButton = document.querySelector( ‘.tasty-recipes-convert-button-active’ );
const scaleButton = document.querySelector( ‘.tasty-recipes-scale-button-active’ );

let unit = ”;
let scale = ”;

if ( unitButton ) {
unit = unitButton.dataset.unitType;
searchParams.delete(‘unit’);
searchParams.set( ‘unit’, unit );
}

if ( scaleButton ) {
scale = scaleButton.dataset.amount;
searchParams.set( ‘scale’, scale );
}

const paramString = searchParams.toString();
const newURL = ” === paramString ? printURL.href : printURL.origin + printURL.pathname + ‘?’ + paramString;
const printLinks = document.querySelectorAll( ‘.tasty-recipes-print-link’ );

printLinks.forEach( ( el ) => {
el.href = newURL;
});

const printButtons = document.querySelectorAll( ‘.tasty-recipes-print-button’ );
printButtons.forEach( ( el ) => {
el.href = newURL;
});
};

document.addEventListener( ‘DOMContentLoaded’, () => {

if ( ! window.location.href.includes( ‘/print/’ ) ) {
return;
}

const searchParams = new URLSearchParams( window.location.search );

const unit = searchParams.get( ‘unit’ );
const scale = searchParams.get( ‘scale’ );

if ( unit && ( ‘metric’ === unit || ‘usc’ === unit ) ) {
document.querySelector( ‘.tasty-recipes-convert-button[data-unit-type=”‘ + unit + ‘”]’ ).click();
}

if ( scale && Number(scale) > 0 ) {
document.querySelector( ‘.tasty-recipes-scale-button[data-amount=”‘ + Number(scale) + ‘”]’ ).click();
}
});
}());

(function(){
var buttonClass = ‘tasty-recipes-scale-button’,
buttonActiveClass = ‘tasty-recipes-scale-button-active’,
buttons = document.querySelectorAll(‘.tasty-recipes-scale-button’);
if ( ! buttons ) {
return;
}

buttons.forEach(function(button){
button.addEventListener(‘click’, function(event){
event.preventDefault();
var recipe = event.target.closest(‘.tasty-recipes’);
if ( ! recipe ) {
return;
}
var otherButtons = recipe.querySelectorAll(‘.’ + buttonClass);
otherButtons.forEach(function(bt){
bt.classList.remove(buttonActiveClass);
});
button.classList.add(buttonActiveClass);

var scalables = recipe.querySelectorAll(‘span[data-amount]’);
var buttonAmount = parseFloat( button.dataset.amount );
scalables.forEach(function(scalable){
if (typeof scalable.dataset.amountOriginalType === ‘undefined’
&& typeof scalable.dataset.nfOriginal === ‘undefined’) {
if (-1 !== scalable.innerText.indexOf(‘/’)) {
scalable.dataset.amountOriginalType = ‘frac’;
}
if (-1 !== scalable.innerText.indexOf(‘.’)) {
scalable.dataset.amountOriginalType = ‘number’;
}
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (-1 !== scalable.innerText.indexOf(vulgar)) {
scalable.dataset.amountOriginalType = ‘vulgar’;
}
});
if (typeof scalable.dataset.amountOriginalType !== ‘undefined’) {
scalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;
}
}
var amount = parseFloat( scalable.dataset.amount ) * buttonAmount;
amount = window.tastyRecipesFormatAmount(amount, scalable);
if ( typeof scalable.dataset.unit !== ‘undefined’ ) {
if ( ! scalable.classList.contains(‘nutrifox-quantity’) ) {
if ( ! scalable.classList.contains(‘nutrifox-second-quantity’) ) {
amount += ‘ ‘ + scalable.dataset.unit;
}
}
}
scalable.innerText = amount;
});

var nonNumerics = recipe.querySelectorAll(‘[data-has-non-numeric-amount]’);
nonNumerics.forEach(function(nonNumeric){
var indicator = nonNumeric.querySelector(‘span[data-non-numeric-label]’);
if ( indicator ) {
nonNumeric.removeChild(indicator);
}
if ( 1 !== buttonAmount ) {
indicator = document.createElement(‘span’);
indicator.setAttribute(‘data-non-numeric-label’, true);
var text = document.createTextNode(‘ (x’ + buttonAmount + ‘)’);
indicator.appendChild(text);
nonNumeric.appendChild(indicator);
}
});

window.tastyRecipesUpdatePrintLink();
});
});
}());

window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.cookMode = {
wakeLockApi: false,
wakeLock: false,
cookModeSelector: ‘.tasty-recipes-cook-mode’,
init() {
if (“wakeLock” in navigator && “request” in navigator.wakeLock) {
this.wakeLockApi = navigator.wakeLock;
}

const cookModes = document.querySelectorAll(this.cookModeSelector);

if (cookModes.length > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘input[type=”checkbox”]’).addEventListener(“change”, event => {
this.checkboxChange(event.target);
}, false);
} else {
cookMode.style.display = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = document.querySelectorAll(this.cookModeSelector + ‘ input[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
try {
this.wakeLock = await this.wakeLockApi.request(“screen”);
this.wakeLock.addEventListener(“release”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.release();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
document.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});

window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.staticTooltip = {
element: null,
tooltipElement: null,
deleting: false,
init( element ) {
if ( this.deleting ) {
return;
}
this.element = element;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}

this.deleting = true;
this.tooltipElement.classList.remove( ‘opened’ );

setTimeout( () => {
this.tooltipElement.remove();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = document.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );

const currentTooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
document.body.replaceChild( tooltipElement, currentTooltipElement );
} else {
document.body.appendChild( tooltipElement );
}

this.tooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
},
show() {
if ( ! this.tooltipElement ) {
return;
}

const tooltipTop = this.element.getBoundingClientRect().top
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().height;
const tooltipLeft = this.element.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.element.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );

this.tooltipElement.setAttribute( ‘style’, ‘top:’ + tooltipTop + ‘px;left:’ + posLeft + ‘px;’ );
this.tooltipElement.classList.add( ‘opened’ );

},
maybeRemoveTail( removeTail ) {
if ( removeTail ) {
this.tooltipElement.classList.add( ‘tr-hide-tail’ );
} else {
this.tooltipElement.classList.remove( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};

window.TastyRecipes.ajax = {
sendPostRequest( url, data, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.send( this.preparePostData( data ) );

xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.status === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}

failure( xhr );
};

xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( data ) {
const formData = new FormData();

for ( const key in data ) {
formData.append( key, data[key] );
}
return formData;
},
};

window.TastyRecipes.ratings = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;

this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const ratings = document.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( ratings.length {
event.preventDefault();
this.defaultRating = event.target.closest( ‘.checked’ ).dataset.rating;
this.setCheckedStar( event.target );
this.maybeSendRating( this.defaultRating, event.target );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click’, e => {
// Bailout (don’t remove the tooltip) when the clicked element is a rating star, or it’s the tooltip itself.
if ( e.target.closest( ‘.tasty-recipes-rating’ ) || e.target.classList.contains( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}

window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( rating ) {
const ratingInput = document.querySelector( ‘#respond .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = document.querySelectorAll( ‘input.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click’, currentEvent => {
const selectedRating = currentEvent.target.getAttribute( ‘value’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( rating ) {
if ( rating < this.minRating ) {
document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );
return;
}
document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( rating ) {
const commentTextarea = document.getElementById( 'comment' );
if ( ! commentTextarea ) {
return;
}

if ( rating {
window.TastyRecipes.staticTooltip.changeMessage( response.data.message );
window.TastyRecipes.staticTooltip.show();
this.updateAverageText( response.data, recipeCardElement );
this.maybeFillCommentForm( response.data );

// Hide the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.data, rating );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( data, recipeCardElement ) {
if ( ! data.average ) {
return;
}
this.setRatingPercent( data );

if ( ! data.count ) {
return;
}

const quickLink = document.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, data );
this.setPartialStar( quickLink );
}

const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = data.average;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), data );
},
setTextInContainer( container, data ) {
if ( ! container ) {
return;
}

if ( data.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = data.label;
}
return;
}

const averageElement = container.querySelector( ‘.average’ );
if ( averageElement ) {
averageElement.textContent = data.average;
}

const countElement = container.querySelector( ‘.count’ );
if ( countElement ) {
countElement.textContent = data.count;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( data ) {
this.defaultRating = data.average.toFixed( 1 );
const parts = data.average.toFixed( 2 ).toString().split( ‘.’ );
this.currentRatingPercentage = parts[1] ? parts[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( target ) {
const cardRatingContainer = target.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}

const thisStar = target.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( data ) {
if ( ! data.comment || ! data.comment.content ) {
return;
}

const commentForm = document.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}

const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.value ) {
return;
}

// Add comment details for editing.
commentBox.innerHTML = data.comment.content;
if ( data.comment.name ) {
commentForm.querySelector( ‘[name=author]’ ).value = data.comment.name;
commentForm.querySelector( ‘[name=email]’ ).value = data.comment.email;
}
},
maybeResetTooltip( recipeCardElement, data, rating ) {
if ( this.savingRating === rating ) {
this.resetTooltip( recipeCardElement, data );
}
},
resetTooltip( recipeCardElement, data ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;

// Reset the default rating.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;

this.resetSelectedStar( cardRatingContainer, data );
}
},
resetSelectedStar( cardRatingContainer ) {
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( selectedRatingElement ) {
selectedRatingElement.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = this.currentRatingPercentage;
selectedRatingElement.parentNode.dataset.trChecked = 1;
}

const previousSelectedElement= cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( previousSelectedElement ) {
const currentSelectedRating = previousSelectedElement.querySelector(‘[data-rating]’);
if ( currentSelectedRating !== selectedRatingElement ) {
delete previousSelectedElement.dataset.trChecked;
}
}
},
backwardCompFormRatingPosition() {
const ratingsButtons = document.querySelector( ‘#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.display.includes( ‘flex’ ) ) {
ratingsButtons.style.direction = ‘rtl’;
}

if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Select the rating that was previously selected in admin.
ratingsButtons.querySelector( ‘.tasty-recipes-rating[value=”‘ + tastyRecipesRating + ‘”]’ ).checked = true;
}

const ratingSpans = ratingsButtons.querySelectorAll( ‘.tasty-recipes-rating’ );
for (const ratingSpan of ratingSpans) {
ratingSpan.addEventListener( ‘click’, event => {
if ( ratingSpan === event.target ) {
return;
}
ratingSpan.previousElementSibling.click();
} );
}
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );
});

« Previous Post
Apple Turkey Burgers
Next Post »
Garlic Butter Chicken Bites with Creamy Parmesan Pasta: An Incredible 7-Step Recipe

If you enjoyed this…

Brown Butter Iced Oatmeal Cookies Recipe

Brown Butter Iced Oatmeal Cookies Recipe

Iced Oatmeal Cookie Bars Recipe

Iced Oatmeal Cookie Bars Recipe

Cilantro Lime Steak Bowls

Cilantro Lime Steak Bowls

Primary Sidebar

Browse by Diet

HealthyBudgetKetoQuickVeganCheat Meal
Chili-Lime Quinoa Black Bean Salad with Corn

Chili-Lime Quinoa Black Bean Salad with Corn

Garlic Butter Beef Bites with Potatoes

Garlic Butter Beef Bites with Potatoes

Mediterranean Bean Salad

Mediterranean Bean Salad

  • Home
  • Recipe Index
  • Budget
  • Cheat Meal
  • Healthy
  • Keto
  • Quick
  • Vegan
  • About
  • Contact

© 2026 Simple Daily Eats · All Rights Reserved · Created with heart by Sarah Mitchell · About · Privacy Policy · Terms & Conditions · Disclaimer · Affiliate Disclosure · Contact