If you’re looking for a dish that brings a touch of elegance to your dinner table without the fuss, this Easy Chicken Cordon Bleu Recipe is just what you need. It’s a delightful combination of tender chicken, gooey Swiss cheese, and savory chicken ham, all wrapped in a crispy breadcrumb coating. Whether it’s a busy weeknight or a family gathering, this recipe will bring smiles to everyone’s faces!

What I love most about this dish is how it feels fancy yet is so simple to prepare. Plus, it’s always a hit with both kids and adults alike. Trust me; once you get the hang of it, you’ll find yourself making this dish again and again!

Why You’ll Love This Recipe
- Quick and Easy: This recipe comes together in just about 50 minutes, making it perfect for those nights when you’re short on time.
- Family-Friendly: With its cheesy filling and crunchy exterior, kids will love it just as much as adults do.
- Perfect for Meal Prep: You can make these rolls ahead of time and simply bake them when you’re ready to eat.
- Impressive Presentation: Serve this dish at your next dinner party, and watch your guests be wowed by its beautiful look!
- Deliciously Versatile: You can customize the ingredients based on what you have on hand or your taste preferences.
Ingredients You’ll Need
Gathering these simple ingredients is half the fun! They are wholesome and easy to find, making your cooking experience stress-free.

For the Chicken Rolls
- 4 boneless (skinless chicken breasts)
- 4 slices Swiss cheese
- 4 slices chicken ham
- 1/2 cup all-purpose flour
- 2 eggs (beaten)
- 1 cup breadcrumbs
- Salt and pepper (to taste)
- Toothpicks
For the Sauce
- 1/4 cup butter
- 1/4 cup all-purpose flour
- 1 1/2 cups milk
- 1/2 cup shredded Swiss cheese
- Salt and pepper (to taste)
Variations
This recipe is wonderfully flexible! Here are some ideas to switch things up:
- Swap the protein: Instead of chicken, try using turkey breasts or even thinly sliced eggplant for a vegetarian option.
- Change up the cheese: Experiment with different cheeses like cheddar or gouda for a twist on flavor.
- Add herbs and spices: Spice things up with some Italian seasoning or fresh herbs like basil or parsley to add more depth to the dish.
- Make it spicy: Add jalapeños or red pepper flakes inside the rolls for an exciting kick!
How to Make Easy Chicken Cordon Bleu Recipe
Step 1: Preheat the Oven
Preheat your oven to 375°F (190°C). Greasing your baking dish or lining it with parchment paper ensures that your delicious rolls won’t stick. This little step makes cleanup a breeze!
Step 2: Prepare the Chicken
Place each chicken breast between two sheets of plastic wrap. Using a meat mallet or rolling pin, pound them until they are about 1/4 inch thick. This not only helps them cook evenly but also makes them tender. Don’t forget to season both sides with salt and pepper – seasoning is key!
Step 3: Assemble the Chicken
Lay a slice of chicken ham on top of each chicken breast followed by a slice of Swiss cheese. Roll up tightly from the short end and secure with toothpicks. This keeps everything together during cooking, ensuring every bite has that lovely filling.
Step 4: Coat the Chicken
Set up three shallow dishes: one for flour, one for beaten eggs, and one for breadcrumbs. Dredge each roll in flour first – this helps the egg stick better. Then dip into the egg mixture before rolling in breadcrumbs. Press gently so that they adhere well; this creates that satisfying crunch we all love!
Step 5: Bake the Chicken
Arrange your coated chicken rolls in the prepared baking dish. Bake in your preheated oven for about 25-30 minutes until they’re cooked through and golden brown. The aroma wafting through your kitchen will be hard to resist!
Step 6: Make the Sauce (Optional)
In a saucepan over medium heat, melt butter then stir in flour to create a roux. Cooking this mixture helps thicken your sauce later on. Gradually whisk in milk until smooth; keep stirring until it thickens! Stir in shredded Swiss cheese at the end until melted, seasoning with salt and pepper as desired.
Step 7: Serve
Before serving, remember to remove those toothpicks from your chicken rolls! If you made that delicious sauce, spoon it over just before serving for an extra touch of yum.
Step 8: Enjoy!
This Easy Chicken Cordon Bleu is best served hot alongside mashed potatoes, steamed veggies, or even a crisp green salad. Enjoy every bite!
I hope you love making this Easy Chicken Cordon Bleu Recipe as much as I do! It’s sure to become one of your favorites too!
Pro Tips for Making Easy Chicken Cordon Bleu Recipe
Creating a delicious Chicken Cordon Bleu can be a breeze if you follow these simple tips!
Pound the Chicken Evenly: Ensure that your chicken breasts are pounded to an even thickness. This helps them cook evenly and prevents any parts from being undercooked or overcooked.
Use Fresh Ingredients: Opt for fresh Swiss cheese and chicken ham whenever possible. Fresh ingredients enhance flavor and texture, making your dish even more enjoyable.
Don’t Skip the Sauce: While the chicken is delicious on its own, the creamy Swiss cheese sauce adds an extra layer of flavor. It complements the dish beautifully and makes it feel more luxurious.
Let it Rest After Baking: Allow the chicken rolls to rest for a few minutes after they come out of the oven. This helps retain their juices and ensures each bite is tender and flavorful.
Experiment with Cheese Variations: Feel free to try different types of cheese, such as mozzarella or gouda, for a unique twist on this classic dish. Each cheese brings its own personality, offering new taste experiences!
How to Serve Easy Chicken Cordon Bleu Recipe
Serving Chicken Cordon Bleu can be fun and creative! Here are some ideas to make your presentation truly special.
Garnishes
- Chopped Parsley: A sprinkle of fresh parsley not only adds color but also a hint of freshness that brightens up the dish.
- Lemon Wedges: Serving lemon wedges alongside your Chicken Cordon Bleu allows guests to squeeze fresh juice over their servings, adding a zesty contrast to the savory flavors.
Side Dishes
Garlic Mashed Potatoes: Creamy mashed potatoes with a hint of garlic make for a comforting side that pairs wonderfully with the richness of Chicken Cordon Bleu.
Steamed Green Beans: Bright green beans add a pop of color and freshness while providing a crunchy texture that balances the softness of the chicken.
Roasted Vegetables: A mix of seasonal vegetables like carrots, bell peppers, and zucchini roasted until caramelized brings sweetness and depth to your meal.
Crisp Green Salad: A light salad with mixed greens, cherry tomatoes, and a tangy vinaigrette can cut through the richness of the chicken, making it a refreshing addition to your plate.
Presenting your Easy Chicken Cordon Bleu in style will not only impress your guests but also enhance their dining experience! Enjoy every bite!
Make Ahead and Storage
This Easy Chicken Cordon Bleu recipe is perfect for meal prep! You can prepare it in advance and enjoy delicious, home-cooked flavors throughout the week. Here’s how to store, freeze, and reheat your leftovers:
Storing Leftovers
- Store leftover chicken cordon bleu in an airtight container in the refrigerator.
- Make sure to consume within 3-4 days for the best quality and flavor.
- If you have sauce left, store it separately to keep the chicken crispy.
Freezing
- Allow cooked chicken cordon bleu to cool completely before freezing.
- Wrap each piece tightly in plastic wrap or aluminum foil, then place them in a freezer-safe bag.
- For optimal taste, consume frozen chicken within 2-3 months.
Reheating
- To reheat from frozen, thaw overnight in the refrigerator.
- Reheat in a preheated oven at 350°F (175°C) for about 15-20 minutes or until heated through.
- If reheating in a microwave, cover with a damp paper towel and heat on medium power until warmed.
FAQs
Have questions about this Easy Chicken Cordon Bleu Recipe? Here are some common inquiries:
Can I make this Easy Chicken Cordon Bleu Recipe ahead of time?
Absolutely! You can prepare the chicken rolls and coat them ahead of time. Simply store them in the refrigerator until you’re ready to bake!
What sides pair well with Easy Chicken Cordon Bleu?
This dish goes wonderfully with mashed potatoes, steamed broccoli, or a fresh green salad. Feel free to get creative with your favorite sides!
Can I use different types of cheese?
Yes! While Swiss cheese is traditional, you can experiment with other cheeses like mozzarella or provolone for a different flavor profile.
How do I ensure my chicken is juicy?
Pounding the chicken breasts to an even thickness helps them cook evenly and stay juicy. Be careful not to overcook while baking!
Is this recipe suitable for special occasions?
Definitely! The elegant presentation and delicious flavors make this Easy Chicken Cordon Bleu a great choice for special dinners or gatherings.
Final Thoughts
I hope you enjoy making this Easy Chicken Cordon Bleu recipe as much as I do! It’s not just about the delicious flavors but also about creating lovely memories around the dinner table. Trust me; your family will be impressed by this elegant dish that’s surprisingly simple to prepare. Enjoy every bite!
Easy Chicken Cordon Bleu Recipe
If you’re in search of a show-stopping dish that’s surprisingly easy to make, this Easy Chicken Cordon Bleu Recipe is for you! A delightful blend of tender chicken, creamy Swiss cheese, and savory chicken ham, all enveloped in a crispy breadcrumb coating, this recipe will elevate your dinner table. Perfect for busy weeknights or special gatherings, it offers impressive presentation without the fuss. With each bite, you’ll savor the cheesy goodness that appeals to both kids and adults alike. Try this easy chicken recipe tonight and watch it become a family favorite!
- Prep Time: 20 minutes
- Cook Time: 30 minutes
- Total Time: 50 minutes
- Yield: Serves 4
- Category: Dinner
- Method: Baking
- Cuisine: French
Ingredients
Scale
- 4 boneless skinless chicken breasts
- 4 slices Swiss cheese
- 4 slices chicken ham
- 1/2 cup all-purpose flour
- 2 beaten eggs
- 1 cup breadcrumbs
- Salt and pepper to taste
Instructions
- Preheat your oven to 375°F (190°C) and prepare a baking dish.
- Pound each chicken breast between plastic wrap until about 1/4 inch thick; season with salt and pepper.
- Place a slice of chicken ham and Swiss cheese on each breast, roll tightly from the short end, and secure with toothpicks.
- Dredge each roll in flour, dip into beaten eggs, then coat with breadcrumbs.
- Bake for 25-30 minutes until golden brown and cooked through.
- Optionally, prepare a creamy sauce by making a roux with butter and flour, then whisking in milk and cheese until thickened.
Nutrition
- Serving Size: 1 Chicken Roll (150g)
- Calories: 350
- Sugar: 2g
- Sodium: 620mg
- Fat: 18g
- Saturated Fat: 8g
- Unsaturated Fat: 10g
- Trans Fat: 0g
- Carbohydrates: 24g
- Fiber: 1g
- Protein: 25g
- Cholesterol: 110mg
window.trCommon={“minRating”:6,”ajaxurl”:”https:\/\/www.weekmealideas.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”39752d73f3″,”postId”:316};
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