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

Simply Home Cooking

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

Simply Home Cooking

  • Homepage
  • Recipe Index
  • Budget
  • Cheat Meal
  • Healthy
  • Keto
  • Quick
  • Vegan
  • Contact
  • About
Cheat Meal / Moist Carrot Bundt Cake

Moist Carrot Bundt Cake

March 28, 2026 by Tiffany

Jump to Recipe·Print Recipe

If you’re looking for a delightful treat that combines all the cozy flavors of a classic carrot cake, you’re going to fall in love with this Moist Carrot Bundt Cake! It’s soft and moist, bursting with warm spices like cinnamon and ginger, and baked in an elegant Bundt pan that makes it perfect for any occasion. Whether it’s a busy weeknight or a family gathering, this cake is sure to impress everyone around the table.

Moist Carrot Bundt Cake image 2

What truly makes this cake special is the luscious cream cheese glaze that drapes over its beautiful curves, adding just the right amount of sweetness. Trust me; once you try it, you’ll want to keep this recipe close at hand!

Moist Carrot Bundt Cake image 3
Moist Carrot Bundt Cake image 4

Why You’ll Love This Recipe

  • Easy to make: With just a handful of simple steps, you’ll have a stunning dessert ready to impress your friends and family.
  • Perfect for sharing: This recipe yields 12 generous slices, making it ideal for gatherings or as a sweet afternoon treat.
  • Make-ahead friendly: You can bake this cake in advance and store it for up to several days—just add the glaze before serving!
  • Packed with flavor: The combination of carrots, pineapple, and spices creates a moist cake that’s bursting with deliciousness.
  • Versatile for occasions: Whether it’s Easter brunch or a cozy tea party, this cake fits right in!

Ingredients You’ll Need

Gathering your ingredients is half the fun! For this Moist Carrot Bundt Cake, you’ll need some simple and wholesome ingredients that come together beautifully. Here’s what you’ll need:

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

For the Cake

  • 2 cups finely grated carrots (about 3 medium-sized carrots)
  • 1 cup canned pineapple
  • 2¼ cups all-purpose flour (plain flour in the UK)
  • ¼ cup cornstarch
  • 2 tsps baking powder
  • ½ tsp baking soda
  • ½ tsp salt
  • 2½ tsps cinnamon (ground)
  • 1¾ tsps ginger (ground/powdered)
  • ¼ tsp cloves (ground)
  • ½ tsp nutmeg (ground)
  • 1½ cups soft brown sugar (firmly packed)
  • 3 large eggs (room temperature)
  • 1 cup unflavoured vegetable oil (I use canola)
  • 3 tsps vanilla essence/extract
  • ½ cup yoghurt (unsweetened, regular not Greek; low fat Greek yoghurt is okay)
  • 1 cup pecans or walnuts (coarsely chopped; I like to use both so I use ½ a cup of each)

For the Cream Cheese Glaze

  • 2 cups powdered sugar (also known as icing/confectioners’ sugar)
  • 2 tsps unsalted butter (melted)
  • ½ tsp vanilla extract/essence
  • ¾ cup cream cheese (room temperature)

Variations

One of the best things about this Moist Carrot Bundt Cake is its flexibility! You can easily adapt it to suit your tastes or dietary needs. Here are some fun variation ideas:

  • Add more texture: Toss in some raisins or shredded coconut for an extra layer of flavor and chewiness.
  • Go gluten-free: Substitute all-purpose flour with a gluten-free blend to make this cake suitable for gluten-sensitive guests.
  • Spice it up: Add crushed walnuts or pecans into the glaze for some added crunch on top!
  • Change up the frosting: Try using a tangy lemon icing instead of cream cheese glaze for a refreshing twist.

How to Make Moist Carrot Bundt Cake

Step 1: Prepare Your Pan

Start by preheating your oven to 350°F (175°C). Grease your Bundt pan generously with oil or butter and lightly dust it with flour. This step ensures that when your cake is done baking, it will slide out effortlessly without any sticky surprises!

Step 2: Mix Dry Ingredients

In a large bowl, whisk together the flour, cornstarch, baking powder, baking soda, salt, cinnamon, ginger, cloves, and nutmeg. Mixing these dry ingredients thoroughly helps distribute the leavening agents evenly throughout your batter—ensuring the perfect rise!

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Step 3: Combine Wet Ingredients

In another bowl, mix together the grated carrots, canned pineapple (with juice), brown sugar, eggs, oil, vanilla extract, and yogurt until well blended. This combination adds moisture and flavor—making your cake irresistibly delicious!

Step 4: Combine Wet and Dry Mixtures

Pour your wet mixture into the bowl with the dry ingredients. Gently fold them together until just combined—be careful not to overmix! A few lumps are perfectly fine; they create that delightful texture we love.

Step 5: Add Nuts

Fold in your coarsely chopped pecans or walnuts. These add an amazing crunch that beautifully complements the moistness of your cake.

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Step 6: Bake Your Cake

Pour the batter into your prepared Bundt pan and smooth out the top. Bake in your preheated oven for about 45 minutes or until a toothpick inserted into the center comes out clean. The aroma wafting through your kitchen will be simply heavenly!

Step 7: Cool and Glaze

Once baked, let your cake cool in the pan for about 10 minutes before transferring it onto a wire rack. While it’s cooling down completely, prepare your cream cheese glaze by mixing powdered sugar with melted butter, vanilla extract, and cream cheese until smooth. Drizzle generously over your cooled cake—because who doesn’t love extra glaze?

Enjoy every bite of this lovely Moist Carrot Bundt Cake! It’s bound to become one of your new favorites!

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Pro Tips for Making Moist Carrot Bundt Cake

Creating the perfect Moist Carrot Bundt Cake is all about attention to detail, and these tips will help you achieve cake perfection!

  • Use fresh ingredients: Using fresh carrots and high-quality spices enhances the flavor and moisture of your cake, making it irresistibly delicious.

  • Don’t overmix the batter: Mixing just until combined prevents the gluten in the flour from developing too much, resulting in a tender cake that remains soft and moist.

    REMEMBER

    WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

    PIN
  • Allow the cake to cool completely: Letting the cake cool in the pan for about 10-15 minutes before transferring it to a wire rack ensures that it holds its shape without breaking.

  • Adjust baking time as needed: Every oven is different, so check your cake a few minutes before the recommended baking time. A toothpick inserted should come out clean or with a few moist crumbs.

  • Store properly: To keep your Bundt cake fresh, wrap it tightly in plastic wrap and store it at room temperature. This helps retain moisture and keeps it delicious for days!

    REMEMBER

    WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

    PIN

How to Serve Moist Carrot Bundt Cake

Serving your Moist Carrot Bundt Cake beautifully can truly enhance the experience. Here are some delightful ideas on how to present this lovely dessert.

Garnishes

  • Chopped nuts: Sprinkle some extra chopped pecans or walnuts on top for added texture and crunch.
  • Coconut flakes: Toasted coconut flakes add a tropical twist and a beautiful contrast against the creamy glaze.
  • Fresh herbs: A few sprigs of mint can add a pop of color and freshness to your presentation.

Side Dishes

  • Whipped coconut cream: Light and fluffy, this vegan-friendly side pairs wonderfully with the sweetness of the carrot cake.
  • Fruit salad: A refreshing mix of seasonal fruits balances out the richness of the cake and adds brightness to your dessert table.
  • Tea or coffee: A warm cup of herbal tea or freshly brewed coffee complements the flavors of carrot bundt cake beautifully, making it perfect for afternoon gatherings.
  • Vanilla ice cream: For those who love a warm dessert, serving slices with a scoop of vanilla ice cream creates an indulgent treat that everyone will adore!

Make Ahead and Storage

This Moist Carrot Bundt Cake is perfect for meal prep, allowing you to enjoy a delicious dessert throughout the week without any hassle.

Storing Leftovers

  • Allow the cake to cool completely before storing.
  • Wrap the cooled cake in plastic wrap or aluminum foil.
  • Store at room temperature for up to 3 days, or refrigerate for up to a week.

Freezing

  • Wrap individual slices in plastic wrap, then place them in a freezer-safe bag.
  • Label the bag with the date and name of the cake.
  • Freeze for up to 3 months.

Reheating

  • Thaw slices overnight in the refrigerator before reheating.
  • To reheat, place a slice in the microwave for 10-15 seconds on medium power until warmed through.

FAQs

Here are some common questions about making this delightful cake.

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Can I make Moist Carrot Bundt Cake ahead of time?

Yes! You can prepare this cake a day or two in advance. Just keep it stored properly, and it will taste just as fresh when you serve it.

How do I ensure my Moist Carrot Bundt Cake stays moist?

Using finely grated carrots and ensuring not to overbake your cake are key. The addition of pineapple also contributes to its moisture!

Can I substitute ingredients in the Moist Carrot Bundt Cake recipe?

Absolutely! You can substitute vegetable oil with applesauce for a lighter version or use gluten-free flour if needed.

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Final Thoughts

This Moist Carrot Bundt Cake is truly a delightful treat that brings comfort and joy to any table. I hope you enjoy making it as much as I do! Don’t hesitate to share your baking experience or variations; I’d love to hear from you. Happy baking!

Print

Moist Carrot Bundt Cake

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Print Recipe

5 Stars 4 Stars 3 Stars 2 Stars 1 Star

No reviews

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Indulge in the cozy flavors of our Moist Carrot Bundt Cake, a delightful dessert that combines the warmth of cinnamon and ginger with the sweetness of grated carrots and pineapple. This cake is not only soft and moist but also beautifully presented thanks to its elegant Bundt shape. Topped with a creamy glaze, it’s perfect for gatherings or a simple afternoon treat. With easy-to-follow steps and wholesome ingredients, you’ll impress family and friends alike. Bake this scrumptious cake ahead of time and enjoy the rich flavors at your leisure!

  • Author: Tiffany
  • Prep Time: 20 minutes
  • Cook Time: 45 minutes
  • Total Time: 1 hour 5 minutes
  • Yield: Serves approximately 12 slices 1x
  • Category: Dessert
  • Method: Baking
  • Cuisine: American

Ingredients


Scale
  • 2 cups finely grated carrots
  • 1 cup canned pineapple (with juice)
  • 2¼ cups all-purpose flour
  • ¼ cup cornstarch
  • 2 tsps baking powder
  • ½ tsp baking soda
  • ½ tsp salt
  • 2½ tsps cinnamon (ground)
  • 1¾ tsps ginger (ground)
  • ¼ tsp cloves (ground)
  • ½ tsp nutmeg (ground)
  • 1½ cups soft brown sugar
  • 3 large eggs
  • 1 cup unflavoured vegetable oil
  • 3 tsps vanilla essence
  • ½ cup yoghurt
  • 1 cup chopped nuts (pecans or walnuts)
  • 2 cups powdered sugar
  • 2 tsps unsalted butter (melted)
  • ½ tsp vanilla extract
  • ¾ cup cream cheese


Instructions

  1. Preheat oven to 350°F (175°C). Grease a Bundt pan with oil or butter and dust with flour.
  2. In a large bowl, whisk together flour, cornstarch, baking powder, baking soda, salt, cinnamon, ginger, cloves, and nutmeg.
  3. In another bowl, mix grated carrots, pineapple (with juice), brown sugar, eggs, oil, vanilla extract, and yoghurt until well blended.
  4. Pour the wet mixture into the bowl with dry ingredients and gently fold until just combined; fold in coarsely chopped nuts.
  5. Pour the batter into the prepared Bundt pan and smooth out the top.
  6. Bake for about 45 minutes, or until a toothpick comes out clean.
  7. Cool for 10 minutes in the pan before transferring to a wire rack; prepare the glaze by mixing powdered sugar with melted butter, vanilla extract, and cream cheese until smooth.

Nutrition

  • Serving Size: 1 slice
  • Calories: 321
  • Sugar: 26g
  • Sodium: 170mg
  • Fat: 15g
  • Saturated Fat: 2g
  • Unsaturated Fat: 12g
  • Trans Fat: 0g
  • Carbohydrates: 43g
  • Fiber: 2g
  • Protein: 4g
  • Cholesterol: 37mg

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:\/\/simplyhomecooking.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”3a34f7ace5″,”postId”:6152};
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’ );
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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’ } );
}
};

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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;
};

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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;
};

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

window.tastyRecipesUpdatePrintLink = () => {

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

if ( ! printButton ) {
return;
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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 = ”;

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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’ );

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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

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

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

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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

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

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

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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;
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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);
}
});

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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);

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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 || {};

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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’ );

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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 );

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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 ) );

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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();

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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;
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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 );

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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;
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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;
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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;
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

// 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;
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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();
} );
}
}
};

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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

« Previous Post
Roasted Strawberry Whipped Ricotta Toast
Next Post »
Maple roasted carrots with cranberries

If you enjoyed this…

Bacon Ranch Chicken Salad Cucumber Boats

Bacon Ranch Chicken Salad Cucumber Boats

Decadent Raspberry Chocolate Lava Cupcakes You'll Adore

Decadent Raspberry Chocolate Lava Cupcakes You’ll Adore

Fried Chicken Recipe

Fried Chicken Recipe

Reader Interactions

Leave a Comment Cancel reply

Helpful comments include feedback on the post or changes you made.

Recipe rating 5 Stars 4 Stars 3 Stars 2 Stars 1 Star

Primary Sidebar

Browse by Diet

HealthyCheat MealKetoQuickVeganBudget
Smoked jalapeño poppers pigs in a blanket

Smoked jalapeño poppers pigs in a blanket

Grilled Shrimp Bowl with Avocado, Corn Salsa & Creamy Sauce

Grilled Shrimp Bowl with Avocado, Corn Salsa & Creamy Sauce

Honey Peach & White Cheddar Grilled Cheese

Honey Peach & White Cheddar Grilled Cheese

  • Disclaimer
  • Terms and Conditions
  • Privacy Policy
  • Contact
  • About

© 2026 · © Simply Home Cooking · All Rights Reserved · Created by Tiffany ·