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

Tasty Daily Home

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

Tasty Daily Home

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

Baked Berry and Cream Cheese Croissant French Toast

Jump to Recipe·Print Recipe

If you’re looking for a delightful way to start your day or impress guests at brunch, this Baked Berry and Cream Cheese Croissant French Toast is just the thing! It’s a celebration of flavors and textures that makes every bite feel like a special occasion. Imagine waking up to the sweet aroma of baked croissants infused with berries and cream cheese—it’s pure bliss!

This recipe is not only delicious but also incredibly versatile. Whether you’re hosting a family gathering, having a cozy weekend brunch, or just treating yourself on a busy weekday, this dish fits the bill perfectly. It can be prepped ahead of time, so all you have to do is pop it in the oven when you’re ready to enjoy it.

Baked Berry and Cream Cheese Croissant French Toas

Why You’ll Love This Recipe

  • Easy to Prepare: With simple ingredients and straightforward steps, even novice cooks can whip this up with ease.
  • Make-Ahead Convenience: Prepare it the night before and let it soak in the fridge; just bake it fresh when you’re ready!
  • Family-Friendly Appeal: This dish combines familiar flavors that everyone will love—perfect for kids and adults alike.
  • Decadent Flavor: The combination of creamy cheese, juicy berries, and buttery croissants creates an irresistible taste sensation.
  • Beautiful Presentation: It looks stunning when served warm, making it ideal for brunch gatherings or special occasions.
Baked Berry and Cream Cheese Croissant French Toas

Ingredients You’ll Need

Get ready to gather some simple, wholesome ingredients that will come together beautifully in this dish! You probably have most of these items in your kitchen already.

For the Base

  • 6 large eggs, beaten
  • 1.5 cups whole milk
  • 2 tablespoons real maple syrup
  • 1 tablespoon vanilla extract
  • 1 teaspoon cinnamon
  • 0.5 teaspoon kosher salt
  • 12 cups roughly torn, day-old croissants (about 12-16 croissants)

For the Filling

  • 1 jar high-quality fruit preserves (such as blueberry, strawberry, or blackberry, 10 ounce)
  • 8 ounces cream cheese, cut into small cubes
  • 6 tablespoons cold salted butter, thinly sliced

For Topping

  • 1 cup fresh berries (such as blueberries, strawberries, or blackberries)
  • 1 cup heavy cream
  • Powdered sugar (for serving)
  • Maple syrup (for serving)

Variations

This recipe is wonderfully flexible! Feel free to get creative with these variations:

  • Try Different Berries: Swap out the fruit preserves or fresh berries for your favorites—raspberries or peaches would be delightful too!
  • Add Nuts: Incorporate some chopped nuts like pecans or walnuts for added crunch and flavor.
  • Make it Vegan: Use plant-based milk, egg replacers, and dairy-free cream cheese for a vegan twist.
  • Spice it Up: Add a pinch of nutmeg or cardamom for an aromatic twist that elevates the flavor profile.

How to Make Baked Berry and Cream Cheese Croissant French Toast

Step 1: Grease the Baking Dish

Start by greasing a 9×13 inch baking dish with butter. This ensures that your delicious French toast doesn’t stick and makes cleanup easier later!

Step 2: Prepare the Egg Mixture

In a large bowl, whisk together the eggs, milk, maple syrup, vanilla extract, cinnamon, and salt until well combined. This mixture is essential as it will soak into the croissants, allowing them to absorb all those wonderful flavors.

Step 3: Combine Croissants with Egg Mixture

Add the torn croissants into the egg mixture gently tossing them until they’re well coated. Arrange half of them in your prepared baking dish. Dollop jam and cream cheese over this layer before adding the remaining croissants on top. This layering creates pockets of creamy goodness throughout!

Step 4: Chill in the Fridge

Cover your dish and place it in the fridge for at least 30 minutes or up to overnight. Letting it sit allows the croissants to soak up more of that rich egg mixture—trust me; it’s worth the wait!

Step 5: Bake Your Creation

Preheat your oven to 375 degrees F while you lay thin slices of butter over the top of your assembled croissant layers. Bake for about 45-50 minutes until golden brown and crisp on top. If they start browning too quickly, cover loosely with foil.

Step 6: Whip Up Some Cream

While your French toast bakes away in the oven, whip up some heavy cream until stiff peaks form. You can stir in a tablespoon of powdered sugar or maple syrup if you’d like extra sweetness.

Step 7: Serve and Enjoy!

Once out of the oven, serve warm topped with whipped cream, fresh berries, and an extra drizzle of maple syrup if desired! Enjoy this delightful treat with friends or family—it’s bound to become a favorite!

Pro Tips for Making Baked Berry and Cream Cheese Croissant French Toast

To elevate your Baked Berry and Cream Cheese Croissant French Toast, keep these handy tips in mind for a flawless dish every time!

  • Use day-old croissants: Stale croissants absorb the custard better, resulting in a creamier texture after baking. Fresh croissants can become soggy instead of perfectly fluffy.
  • Let it chill overnight: Allowing the assembled dish to sit in the fridge overnight gives the flavors time to meld and ensures a more cohesive taste when baked.
  • Cover with foil if needed: If the top starts browning too quickly while baking, loosely cover it with foil. This will prevent burning while still allowing the inside to cook through.
  • Whip the cream just before serving: Fresh whipped cream is always better! Whipping it right before serving keeps it airy and light, adding a delightful touch to each plate.
  • Customize your fruit preserves: Choose your favorite flavor of fruit preserves or even mix different ones together. This can add a unique twist and enhance the overall flavor profile.

How to Serve Baked Berry and Cream Cheese Croissant French Toast

Serving this delightful dish in an appealing way can make your brunch truly special! Here are some ideas to present your baked creation beautifully.

Garnishes

  • Powdered sugar: A light dusting of powdered sugar adds a sweet touch and enhances visual appeal.
  • Fresh mint leaves: A few sprigs of fresh mint not only brighten up the plate but also add a refreshing aroma.
  • Zest of citrus: Grating some lemon or orange zest over the top adds a pop of color and a burst of flavor that complements the berries.

Side Dishes

  • Crispy bacon or turkey bacon: The savory crunch provides a lovely contrast to the sweetness of the French toast, making each bite even more satisfying.
  • Fruit salad: A colorful mix of seasonal fruits offers freshness and balances out the richness of the dish. Consider including strawberries, blueberries, and kiwis for variety.
  • Yogurt parfaits: Individual cups of yogurt layered with granola and berries make for a creamy side that pairs well with the baked French toast.
  • Smoothies: A refreshing berry smoothie can be a deliciously healthy addition that ties in perfectly with the flavors in your main dish.
Baked Berry and Cream Cheese Croissant French Toas

Make Ahead and Storage

This Baked Berry and Cream Cheese Croissant French Toast is perfect for meal prep, allowing you to enjoy a delicious brunch without the morning rush. Here are some tips for making it ahead of time and storing leftovers.

Storing Leftovers

  • Place any leftovers in an airtight container.
  • Store in the refrigerator for up to 3 days.
  • Reheat individual servings in the microwave or oven before serving.

Freezing

  • Allow the baked French toast to cool completely before freezing.
  • Wrap portions tightly in plastic wrap, then place them in a freezer-safe bag.
  • Freeze for up to 2 months for best quality.

Reheating

  • Thaw overnight in the refrigerator if frozen.
  • Preheat the oven to 350°F (175°C) and bake for about 20 minutes until heated through.
  • For a quick option, microwave individual slices on high for 1-2 minutes or until warm.

FAQs

Can I prepare Baked Berry and Cream Cheese Croissant French Toast the night before?

Absolutely! This recipe is great for preparing ahead of time. Simply assemble it, cover it, and let it chill in the refrigerator overnight. Then, just bake it in the morning!

What types of berries work best in Baked Berry and Cream Cheese Croissant French Toast?

You can use a variety of berries such as blueberries, strawberries, or blackberries. Feel free to mix and match based on your preferences or what’s in season!

Can I use other types of bread instead of croissants?

While croissants provide a unique texture and flavor, you can substitute with day-old brioche or challah if needed. Just ensure they are slightly stale for best absorption of the egg mixture.

How long does Baked Berry and Cream Cheese Croissant French Toast last?

When stored properly in the refrigerator, leftovers will last up to 3 days. You can also freeze them for up to 2 months.

Final Thoughts

This Baked Berry and Cream Cheese Croissant French Toast is truly a show-stopper that combines delightful flavors with ease of preparation. I hope you enjoy making this recipe as much as I do! It’s perfect for gatherings with family and friends or simply treating yourself to something special. Happy baking!

Print

Baked Berry and Cream Cheese Croissant French Toast

Print Recipe

5 Stars 4 Stars 3 Stars 2 Stars 1 Star

No reviews

If you’re seeking a show-stopping brunch dish that combines decadent flavors with ease of preparation, look no further than this Baked Berry and Cream Cheese Croissant French Toast. Imagine layers of buttery, flaky croissants soaked in a creamy custard infused with sweet maple syrup, complemented by juicy berries and luscious cream cheese. This recipe is perfect for family gatherings or a cozy weekend treat, and can be made ahead of time to make your mornings effortless. Just prepare the night before, let it soak in the fridge, then pop it in the oven for a delightful breakfast that will have everyone coming back for seconds.

  • Author: Chef Adrian Vale
  • Prep Time: 20 minutes
  • Cook Time: 50 minutes
  • Total Time: 1 hour 10 minutes
  • Yield: Serves approximately 8 people 1x
  • Category: Breakfast
  • Method: Baking
  • Cuisine: American

Ingredients


Scale
  • 6 large eggs
  • 1.5 cups whole milk
  • 2 tablespoons real maple syrup
  • 1 tablespoon vanilla extract
  • 12 cups day-old croissants (about 12–16 croissants)
  • 1 jar fruit preserves (blueberry, strawberry, or blackberry)
  • 8 ounces cream cheese
  • 1 cup fresh berries (blueberries, strawberries, or blackberries)
  • 1 cup heavy cream


Instructions

  1. Grease a 9×13 inch baking dish with butter.
  2. In a bowl, whisk together eggs, milk, maple syrup, vanilla extract, cinnamon, and salt.
  3. Gently toss torn croissants in the egg mixture until coated. Arrange half in the baking dish; dollop with fruit preserves and cream cheese; top with remaining croissants.
  4. Cover and refrigerate for at least 30 minutes or overnight.
  5. Preheat oven to 375°F (190°C). Place thin slices of butter over the top and bake for 45-50 minutes until golden brown.
  6. Whip heavy cream until stiff peaks form; serve warm topped with whipped cream, fresh berries, and maple syrup.

Nutrition

  • Serving Size: 1 serving
  • Calories: 450
  • Sugar: 22g
  • Sodium: 320mg
  • Fat: 25g
  • Saturated Fat: 15g
  • Unsaturated Fat: 9g
  • Trans Fat: 0g
  • Carbohydrates: 40g
  • Fiber: 2g
  • Protein: 10g
  • Cholesterol: 155mg

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.tastydailyhome.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”34ecdd0a45″,”postId”:201};
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 );
});

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

« Previous Post
Easy Avocado Chicken Salad
Next Post »
Easy Chicken Stroganoff

If you enjoyed this…

Garlic Butter Steak Tips with Cheesy Rigatoni

Garlic Butter Steak Tips with Cheesy Rigatoni

High-Protein Pancake Sausage Mini Muffins

High-Protein Pancake Sausage Mini Muffins

German Apple Pie

German Apple Pie

Primary Sidebar

Browse by Diet

HealthyBudgetKetoQuickVeganCheat Meal
  • About
  • Contact
  • DISCLAIMER
  • Homepage
  • PRIVACY POLICY
  • Recipe Index
  • TERMS AND CONDITIONS

© 2026 Tasty Daily Home · All Rights Reserved · Created by Chef Adrian Vale · About · Privacy Policy · Terms & Conditions · Disclaimer · Contact