If you’re looking for a dish that’s both comforting and quick to whip up, you’ve found it! Garlic Butter Chicken Bites with Creamy Parmesan Pasta: An Incredible 7-Step Recipe has become one of my absolute favorites. It’s the kind of meal that warms your soul after a long day and is perfect for busy weeknights or family gatherings. The combination of juicy chicken bites tossed in a rich garlic butter sauce with creamy pasta is simply irresistible.

Imagine sitting down to a table filled with laughter and great conversation, all while enjoying this delightful dish. Whether you’re cooking for one or feeding a crowd, this recipe will surely impress!


Why You’ll Love This Recipe
- Quick Preparation: With just seven simple steps, you can have dinner on the table in no time!
- Family-Friendly Flavor: The delicious garlic butter sauce and creamy pasta make it a hit with both kids and adults.
- Comfort in Every Bite: It’s the ultimate comfort food that brings warmth and satisfaction to any meal.
- Make-Ahead Friendly: Prep the chicken and sauce ahead of time for an even quicker dinner when you’re busy.
- Versatile Ingredients: With simple, wholesome ingredients, it’s easy to customize based on what you have on hand.
Ingredients You’ll Need
Let’s gather some simple and wholesome ingredients for our Garlic Butter Chicken Bites with Creamy Parmesan Pasta. These are pantry staples that you might already have at home!
For the Chicken Bites:
- 1 lb boneless, skinless chicken breasts, cut into bite-sized pieces
- 4 tablespoons unsalted butter
- 4 cloves garlic, minced
- 1 teaspoon Italian seasoning
- ½ teaspoon red pepper flakes (optional)
- Salt and pepper, to taste
For the Pasta:
- 8 oz fettuccine or pasta of your choice
- 1 cup heavy cream
- 1 cup grated Parmesan cheese
- Fresh parsley, chopped (for garnish)
Variations
This recipe is wonderfully flexible! You can easily adapt it to suit your tastes or dietary needs:
- Swap the Protein: Try using shrimp or tofu instead of chicken for a different flavor profile.
- Make it Lighter: Substitute heavy cream with a plant-based option like cashew cream or almond milk mixed with nutritional yeast for a vegan twist.
- Add Veggies: Toss in some spinach, broccoli, or sun-dried tomatoes for an extra nutritional boost.
- Spice it Up: For those who love heat, add some diced jalapeños or use spicy cheese instead of regular Parmesan.
How to Make Garlic Butter Chicken Bites with Creamy Parmesan Pasta: An Incredible 7-Step Recipe
Step 1: Boil the Pasta
Begin by boiling a large pot of salted water. Add your fettuccine (or any pasta you prefer) and cook according to package instructions until al dente. This step is crucial because perfectly cooked pasta provides the ideal texture to soak up that luscious sauce later. Once done, drain and set aside.
Step 2: Prepare Chicken Bites
While your pasta is cooking, season the bite-sized chicken pieces with salt, pepper, and Italian seasoning. This step infuses flavor right from the start! Make sure every piece is coated well—it’s all about that delicious taste!
Step 3: Sauté Chicken
In a large skillet over medium heat, melt 2 tablespoons of butter. Then add the seasoned chicken bites. Cook them until they’re golden brown and fully cooked through—this usually takes around 5-7 minutes. Removing them from the skillet ensures they don’t overcook while you prepare the sauce.
Step 4: Make Garlic Butter
In the same skillet where you cooked the chicken, add the remaining butter along with minced garlic. Sauté this mixture for about 1-2 minutes until fragrant but be careful not to let it burn! This step creates that delicious garlic aroma that will have everyone gathering in your kitchen!
Step 5: Add Cream
Pour in the heavy cream and bring it to a gentle simmer. Stir frequently for about 3 minutes until it’s warmed through and slightly thickened. This creamy base is what makes your dish so indulgent.
Step 6: Incorporate Cheese
Gradually whisk in the grated Parmesan cheese into your cream mixture until it’s melted and smooth. This cheese adds richness and depth to your sauce—don’t forget to taste as you go! Adjust seasoning with additional salt, pepper, or red pepper flakes if desired.
Step 7: Combine Everything
Finally, return the cooked chicken back into the skillet along with the drained pasta. Toss everything together gently until well-coated in that creamy sauce. This is where all those flavors marry together beautifully! Garnish with fresh parsley before serving for an added touch of color.
And there you have it—an incredible meal that’s sure to become a favorite at your table!
Pro Tips for Making Garlic Butter Chicken Bites with Creamy Parmesan Pasta: An Incredible 7-Step Recipe
Creating this dish is a breeze, especially with these handy tips to elevate your cooking experience!
-
Use Fresh Ingredients: Fresh garlic and high-quality Parmesan cheese can significantly enhance the flavor of your dish, making it more vibrant and delicious.
-
Don’t Overcook the Chicken: Keep an eye on your chicken while sautéing. Cooking it just until golden brown ensures it remains juicy and tender.
-
Reserve Pasta Water: Before draining your pasta, save a cup of pasta water. Adding a splash to your sauce can help adjust its consistency if it becomes too thick.
-
Experiment with Seasonings: Feel free to add herbs like thyme or basil for extra flavor. Customizing the seasoning allows you to make the dish your own!
-
Let It Rest: After combining the pasta and chicken, let the dish sit for a couple of minutes before serving. This allows the flavors to meld together beautifully.
How to Serve Garlic Butter Chicken Bites with Creamy Parmesan Pasta: An Incredible 7-Step Recipe
Presenting your Garlic Butter Chicken Bites with Creamy Parmesan Pasta can turn a simple meal into an impressive feast. Here are some ideas to make your dish stand out!
Garnishes
- Fresh Parsley: Chopped parsley adds a pop of color and freshness that complements the creamy richness of the pasta.
- Lemon Zest: A sprinkle of lemon zest provides a bright contrast that enhances the overall flavor profile.
Side Dishes
- Garlic Bread: Crispy garlic bread is perfect for soaking up any leftover creamy sauce, making it an ideal accompaniment.
- Steamed Broccoli: Lightly steamed broccoli adds a healthy crunch and vibrant color, balancing the richness of the pasta.
- Caesar Salad: A classic Caesar salad brings in crisp romaine lettuce and tangy dressing, providing a refreshing contrast to the hearty main dish.
- Roasted Vegetables: Seasonal roasted vegetables not only add nutritional value but also introduce delightful textures and flavors that complement the meal.
Make Ahead and Storage
This recipe is fantastic for meal prep, making it easy to enjoy delicious Garlic Butter Chicken Bites with Creamy Parmesan Pasta throughout the week.
Storing Leftovers
- Store any leftover pasta in an airtight container.
- Refrigerate for up to 3 days.
- Keep the chicken bites and pasta mixed together for best flavor retention.
Freezing
- Allow the dish to cool completely before freezing.
- Transfer to a freezer-safe container, leaving some space for expansion.
- Freeze for up to 2 months.
Reheating
- Thaw overnight in the refrigerator if frozen.
- Reheat in a skillet over medium heat, adding a splash of cream or broth to maintain creaminess.
- Stir frequently until heated through.
FAQs
Can I make Garlic Butter Chicken Bites with Creamy Parmesan Pasta ahead of time?
Absolutely! You can prepare this dish ahead of time and store it in the refrigerator or freezer. Just follow the storing guidelines above for optimal freshness.
What can I substitute for heavy cream in Garlic Butter Chicken Bites with Creamy Parmesan Pasta?
If you’re looking for a lighter option, you can substitute heavy cream with half-and-half or a plant-based milk alternative combined with a bit of flour for thickness.
Is there an alternative to Parmesan cheese in this recipe?
Yes! You can use nutritional yeast for a dairy-free option or try other hard cheeses like Pecorino Romano if you prefer a stronger flavor.
How long does it take to make Garlic Butter Chicken Bites with Creamy Parmesan Pasta?
This delightful dish takes approximately 15 minutes of prep time and around 20-30 minutes of cooking time, making it perfect for busy weeknights.
Can I add vegetables to Garlic Butter Chicken Bites with Creamy Parmesan Pasta?
Definitely! Feel free to add your favorite veggies such as spinach, broccoli, or bell peppers during the cooking process to enhance both nutrition and flavor.
Final Thoughts
I hope you find joy in making these Garlic Butter Chicken Bites with Creamy Parmesan Pasta! This comforting dish is not only quick and easy but also bursting with rich flavors that will delight your taste buds. Enjoy every bite, and don’t hesitate to share your experience!
Garlic Butter Chicken Bites with Creamy Parmesan Pasta
Garlic Butter Chicken Bites with Creamy Parmesan Pasta is the ultimate comfort dish that combines juicy chicken bites simmered in a rich garlic butter sauce with perfectly cooked pasta. This recipe stands out for its simplicity and flavor, making it ideal for busy weeknights or family gatherings. In just seven easy steps, you can create a meal that warms the soul and delights the palate, ensuring everyone at the table will be asking for seconds. Customize it to your preference by adding vegetables or swapping proteins, and enjoy a satisfying dinner that’s both quick to prepare and incredibly delicious.
- Prep Time: 15 minutes
- Cook Time: 20 minutes
- Total Time: 35 minutes
- Yield: Serves approximately 4 people 1x
- Category: Main
- Method: Sautéing
- Cuisine: Italian
Ingredients
Scale
- 1 lb boneless, skinless chicken breasts, cut into bite-sized pieces
- 4 tablespoons unsalted butter
- 4 cloves garlic, minced
- 1 teaspoon Italian seasoning
- Salt and pepper, to taste
- 8 oz fettuccine or pasta of your choice
- 1 cup heavy cream
- 1 cup grated Parmesan cheese
- Fresh parsley, for garnish
Instructions
- Boil a large pot of salted water, cook fettuccine until al dente, drain, and set aside.
- Season chicken with salt, pepper, and Italian seasoning.
- In a skillet over medium heat, melt 2 tablespoons of butter and sauté chicken until golden brown (5-7 minutes). Remove from skillet.
- In the same skillet, add remaining butter and minced garlic; sauté for 1-2 minutes until fragrant.
- Pour in heavy cream, gently simmer for about 3 minutes until slightly thickened.
- Whisk in grated Parmesan cheese until melted and smooth; adjust seasoning as needed.
- Return chicken and pasta to skillet; toss until well-coated in sauce. Garnish with parsley before serving.
Nutrition
- Serving Size: 1 plate (approximately 300g)
- Calories: 640
- Sugar: 2g
- Sodium: 800mg
- Fat: 36g
- Saturated Fat: 20g
- Unsaturated Fat: 12g
- Trans Fat: 0g
- Carbohydrates: 52g
- Fiber: 3g
- Protein: 30g
- Cholesterol: 90mg
window.trCommon={“minRating”:6,”ajaxurl”:”https:\/\/www.fullrecipeshub.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”3f4f66a597″,”postId”:6996};
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