If you’re looking for a meal that’s bursting with flavor and perfect for both game day and busy weeknights, you’ve come to the right place! These Buffalo Chicken Bowls: A Delicious and Easy Recipe for Game Day or Weeknight Dinners are a personal favorite of mine. They combine tender shredded chicken with fluffy rice and fresh toppings, giving you that perfect spicy kick in every bite. Whether it’s a family gathering or just a cozy dinner at home, this dish is sure to please everyone at the table.

What I love most about these bowls is how easily they can be customized. You can whip them up in no time, making them an ideal choice when life gets hectic. Plus, they’re great for meal prep—just make a big batch and enjoy them all week long!


Why You’ll Love This Recipe
- Quick and easy: With just 40 minutes from start to finish, these bowls fit perfectly into your busy schedule.
- Family-friendly appeal: Everyone loves the combination of flavors here—it’s a hit with both kids and adults!
- Meal prep friendly: Make a big batch ahead of time, and you have delicious meals ready for lunches or dinners throughout the week.
- Customizable toppings: Feel free to mix and match ingredients based on what you have on hand or your taste preferences.
- Packed with flavor: The spicy buffalo sauce paired with fresh ingredients makes each bowl utterly satisfying.
Ingredients You’ll Need
These Buffalo Chicken Bowls use simple, wholesome ingredients that you probably already have in your pantry. Together, they create a deliciously balanced meal that’s perfect for any occasion!
- 1 pound boneless, skinless chicken breasts
- 1 cup buffalo sauce (store-bought or homemade)
- 1 tablespoon olive oil
- 1 teaspoon garlic powder
- 1 teaspoon onion powder
- Salt and pepper to taste
- 2 cups cooked rice (white, brown, or cauliflower rice)
- 1 cup shredded cheddar cheese
- 1 cup chopped celery
- 1 cup cherry tomatoes, halved
- 1 avocado, sliced
- 1/2 cup ranch dressing or blue cheese dressing
- Fresh parsley, chopped (for garnish)
Variations
One of the best things about this recipe is its flexibility! Here are some fun variations to keep things exciting:
- Swap the protein: Use shredded rotisserie chicken or even tofu for a vegetarian twist!
- Change the grain: Try quinoa or barley instead of rice for added texture and nutrition.
- Add different veggies: Incorporate bell peppers or corn for extra crunch and color.
- Make it spicy-sweet: Drizzle some hot honey on top before serving for that delightful spicy-sweet combo.
How to Make Buffalo Chicken Bowls: A Delicious and Easy Recipe for Game Day or Weeknight Dinners
Step 1: Preheat Your Oven
Start by preheating your oven to 400°F (200°C). This ensures that your chicken gets nice and cooked through while developing that lovely roasted flavor.
Step 2: Prepare the Chicken
In a large mixing bowl, combine the chicken breasts with olive oil, garlic powder, onion powder, salt, and pepper. Toss everything until the chicken is well coated. This step is crucial as it builds flavor right from the beginning!
Step 3: Add Buffalo Sauce
Pour half of the buffalo sauce over the chicken. Make sure each piece is coated evenly; this will create those mouthwatering flavors we all crave in buffalo dishes.
Step 4: Bake the Chicken
Line a baking sheet with parchment paper or aluminum foil. Place your chicken breasts on it, ensuring they’re spaced evenly apart. Bake for about 20-25 minutes until the internal temperature reaches 165°F (75°C). This step allows your chicken to become tender and juicy!
Step 5: Shred the Chicken
Once baked, remove the chicken from the oven and let it rest for about five minutes. Shred it using two forks or chop into bite-sized pieces before tossing it with the remaining buffalo sauce. This adds an extra layer of flavor!
Step 6: Cook Your Rice
While your chicken is baking, cook your rice according to package instructions if using white or brown rice. If you prefer cauliflower rice, sauté it in olive oil for 5-7 minutes until tender. Fluffing it up nicely will make every bite light and fluffy.
Step 7: Assemble Your Bowls
In each bowl, place a generous scoop of rice as your base. Top it off with shredded buffalo chicken—feel free to add more buffalo sauce if you’re feeling adventurous!
Step 8: Add Fresh Toppings
Sprinkle chopped celery over the chicken for crunchiness followed by halved cherry tomatoes and sliced avocado on top. These fresh ingredients add brightness to every bite.
Step 9: Drizzle Dressing
Finish off by drizzling ranch dressing (or blue cheese dressing if you prefer) over everything before garnishing with freshly chopped parsley. This adds not just flavor but also a beautiful pop of color!
Pro Tips for Making Buffalo Chicken Bowls: A Delicious and Easy Recipe for Game Day or Weeknight Dinners
Making Buffalo Chicken Bowls can be a breeze with these helpful tips!
- Use pre-cooked chicken: If you’re short on time, rotisserie chicken works great! Just shred it and toss it with buffalo sauce for a quick shortcut.
- Adjust the spice level: If you prefer a milder taste, start with half the buffalo sauce and mix in more gradually to find your perfect balance.
- Prep ingredients ahead of time: Chop veggies and cook rice in advance to save time on busy weeknights. This way, assembly is quick and easy!
- Experiment with toppings: Don’t hesitate to add your favorite toppings like sliced jalapeños or corn for an extra kick or sweetness.
- Make it a meal prep star: These bowls are perfect for meal prep! Store components separately in the fridge, and simply assemble when ready to eat.
How to Serve Buffalo Chicken Bowls: A Delicious and Easy Recipe for Game Day or Weeknight Dinners
Presenting your Buffalo Chicken Bowls creatively can make mealtime even more fun! Here are some ideas on how to serve this delightful dish.
Garnishes
- Chopped green onions: Add a pop of color and fresh flavor that complements the spicy chicken.
- Crumbled tortilla chips: For a crunchy texture that contrasts beautifully with the creamy avocado and dressing.
Side Dishes
- Crispy veggie sticks: Carrots, cucumbers, or bell peppers served with hummus make for a refreshing crunch alongside your bowls.
- Mixed green salad: A simple side salad with vinaigrette helps balance the richness of the buffalo chicken while adding freshness.
- Roasted sweet potatoes: Their natural sweetness pairs perfectly with the spiciness of the dish and adds wholesome nutrients.
Make Ahead and Storage
This Buffalo Chicken Bowl recipe is perfect for meal prep, allowing you to enjoy delicious and satisfying meals throughout the week with minimal effort.
Storing Leftovers
- Store any leftover buffalo chicken bowls in airtight containers.
- Keep them in the refrigerator for up to 3-4 days.
- If separating components, store chicken, rice, and toppings separately to maintain freshness.
Freezing
- Allow the buffalo chicken to cool completely before freezing.
- Place portions in freezer-safe bags or containers, ensuring to remove as much air as possible.
- Freeze for up to 2-3 months. Label with the date for easy reference.
Reheating
- Thaw overnight in the refrigerator if frozen.
- Reheat in the microwave until heated through, about 2-3 minutes.
- For best results, reheat chicken in the oven at 350°F (175°C) for about 15-20 minutes.
FAQs
Can I make Buffalo Chicken Bowls: A Delicious and Easy Recipe for Game Day or Weeknight Dinners in advance?
Yes! You can prepare the chicken and rice ahead of time and combine them just before serving. This makes it a great option for busy weeknights or game day gatherings.
What can I use instead of ranch dressing in Buffalo Chicken Bowls?
If you prefer a lighter option, try using Greek yogurt mixed with herbs or a dairy-free dressing. Both options will complement the buffalo flavor nicely.
How long do Buffalo Chicken Bowls last in the fridge?
Properly stored in an airtight container, they can last for 3-4 days in the refrigerator. Just remember to keep all components separate until you’re ready to enjoy!
Final Thoughts
I hope you find joy in making these Buffalo Chicken Bowls! They are not only full of flavor but also incredibly versatile. Whether it’s game day or a cozy weeknight dinner, this recipe is sure to delight everyone at your table. Enjoy every bite and don’t hesitate to share your experience!
Buffalo Chicken Bowls
Buffalo Chicken Bowls are a flavorful and satisfying meal that perfectly blends tender chicken, fluffy rice, and fresh toppings, making them ideal for both game day and busy weeknights. This recipe is not only quick and easy to prepare but also allows for customization based on your preferences or what you have on hand. With just 40 minutes from start to finish, these bowls are a crowd-pleaser that can be enjoyed at family gatherings or as a comforting dinner at home. The combination of spicy buffalo sauce with fresh ingredients delivers a delicious kick in every bite, ensuring that this dish will become a staple in your weekly meal rotation.
- Prep Time: 15 minutes
- Cook Time: 25 minutes
- Total Time: 40 minutes
- Yield: Serves 4
- Category: Main
- Method: Baking
- Cuisine: American
Ingredients
Scale
- 1 pound boneless, skinless chicken breasts
- 1 cup buffalo sauce (store-bought or homemade)
- 2 cups cooked rice (white, brown, or cauliflower rice)
- 1 tablespoon olive oil
- 1 teaspoon garlic powder
- 1 teaspoon onion powder
- Salt and pepper to taste
- 1 cup shredded cheddar cheese
- 1 cup chopped celery
- 1 cup cherry tomatoes, halved
- 1 avocado, sliced
- 1/2 cup ranch dressing or dairy-free dressing
- Fresh parsley, chopped (for garnish)
Instructions
- Preheat oven to 400°F (200°C).
- In a large bowl, mix chicken with olive oil, garlic powder, onion powder, salt, and pepper.
- Pour half of the buffalo sauce over the chicken and coat evenly.
- Place chicken on a lined baking sheet and bake for 20-25 minutes until cooked through.
- Let chicken rest for five minutes, then shred and toss with remaining buffalo sauce.
- Cook rice as per package instructions; fluff before serving.
- Assemble bowls with rice as the base, topped with shredded chicken.
- Add chopped celery, halved cherry tomatoes, and sliced avocado.
- Drizzle with dressing and garnish with parsley.
Nutrition
- Serving Size: 1 serving
- Calories: 590
- Sugar: 4g
- Sodium: 950mg
- Fat: 27g
- Saturated Fat: 10g
- Unsaturated Fat: 15g
- Trans Fat: 0g
- Carbohydrates: 56g
- Fiber: 5g
- Protein: 33g
- Cholesterol: 85mg
window.trCommon={“minRating”:6,”ajaxurl”:”https:\/\/www.familytableideas.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”57407fb51c”,”postId”:3631};
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 );
});



Leave a Comment