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

Easy Cook Inspo

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

Easy Cook Inspo

  • Home
  • Recipe Index
  • Budget
  • Cheat Meal
  • Healthy
  • Keto
  • Quick
  • Vegan
  • Contact
  • About
Healthy / Dessert / Gingerbread Cheesecake Bars

Gingerbread Cheesecake Bars

January 16, 2026 by Kaylee

Jump to Recipe·Print Recipe

If you’re looking for a dessert that wraps you in the cozy embrace of holiday flavors, you’ve come to the right place! Gingerbread Cheesecake Bars are a delightful blend of spiced gingerbread and creamy cheesecake that will surely become a favorite in your home. Whether it’s for a busy weeknight treat or a festive family gathering, these bars are easy to make and even easier to enjoy.

Gingerbread Cheesecake Bars image 2

The best part? You can prepare them ahead of time, chill them in the fridge, and serve them with delicious toppings like whipped cream or caramel drizzle. They’re perfect for sharing or savoring all by yourself!

Gingerbread Cheesecake Bars image 3
Gingerbread Cheesecake Bars image 4

Why You’ll Love This Recipe

  • Easy preparation: With just a few simple steps, you’ll have a stunning dessert that looks and tastes impressive.
  • Family-friendly appeal: Kids and adults alike will adore the sweet flavors of gingerbread combined with rich cheesecake.
  • Make-ahead convenience: These bars chill beautifully, making them an ideal choice for meal prep or last-minute gatherings.
  • Festive flavors: The warm spices bring a touch of holiday magic to any occasion.
  • Customizable toppings: Dress them up with whipped cream, caramel drizzle, or crushed gingerbread cookies for added flair!

Ingredients You’ll Need

These Gingerbread Cheesecake Bars use simple, wholesome ingredients that you might already have in your pantry! Let’s gather everything we need to create this delightful treat.

For the Crust

  • 1 ½ cups gingerbread cookie crumbs (about 20 gingerbread cookies, crushed)
  • ¼ cup unsalted butter (melted)
  • 2 tablespoons brown sugar (optional, for extra sweetness)

For the Cheesecake Filling

  • 16 oz (2 packages) cream cheese, softened
  • ¾ cup granulated sugar
  • 2 large eggs
  • 1 teaspoon vanilla extract
  • 1 teaspoon ground cinnamon
  • 1 teaspoon ground ginger
  • ¼ teaspoon ground nutmeg
  • ¼ teaspoon ground cloves

For Toppings (optional)

  • Whipped cream
  • Caramel drizzle
  • Crushed gingerbread cookies for garnish

Variations

This recipe is wonderfully flexible! Feel free to adapt it to suit your taste or dietary needs.

  • Add chocolate chips: Toss in some dairy-free chocolate chips for an indulgent twist!
  • Use different cookie crumbs: Try using gingersnap cookies or graham crackers if you’re looking for a new flavor profile.
  • Make it dairy-free: Substitute the cream cheese with a plant-based alternative and use coconut cream for the whipped topping.
  • Spice it up: Experiment by adding more spices like cardamom or nutmeg to elevate the flavor!

How to Make Gingerbread Cheesecake Bars

Step 1: Prepare the Crust

Start by preheating your oven to 325°F (160°C). In a mixing bowl, combine the gingerbread cookie crumbs with melted butter and brown sugar if you’re using it. Mix until everything is well combined. Press this mixture firmly into the bottom of a lined baking pan. This crust will provide a buttery base that’s both delicious and sturdy enough to hold the creamy filling.

Step 2: Make the Cheesecake Filling

In another bowl, beat together the softened cream cheese and granulated sugar until smooth. It’s important to ensure there are no lumps so that your cheesecake layer is silky. Next, add in the eggs one at a time along with vanilla extract and spices. Mix until everything is fully incorporated—this step infuses those lovely holiday flavors into your cheesecake.

Step 3: Assemble and Bake

Pour the cheesecake filling over your prepared crust. Spread it evenly using a spatula. Place the pan in your preheated oven and bake for about 40 minutes. The bars should be set around the edges but slightly jiggly in the center; they’ll firm up as they cool.

Step 4: Chill and Serve

Once baked, let them cool at room temperature before transferring them to the refrigerator. Chill for at least three hours—or overnight if you can resist! When ready to serve, cut into bars and top with whipped cream, caramel drizzle, or crushed gingerbread cookies for that extra special touch.

Enjoy these Gingerbread Cheesecake Bars as a delightful treat that brings warmth and joy to any occasion!

Pro Tips for Making Gingerbread Cheesecake Bars

Making Gingerbread Cheesecake Bars can be a delightful experience, and a few tips can elevate your dessert game!

  • Use room temperature cream cheese: This ensures a smooth and creamy texture for your cheesecake layer, preventing lumps and promoting even mixing.

  • Chill the bars properly: Allowing the bars to chill for at least 2 hours (or overnight) helps them set correctly, making them easier to cut and enhancing the flavors.

  • Experiment with spices: Feel free to adjust the spice levels according to your personal taste. Adding more cinnamon or ginger can create a bolder flavor profile that warms you from the inside out!

  • Opt for homemade gingerbread cookies: If time allows, making your own gingerbread cookies gives you control over the ingredients and flavor, resulting in an even tastier crust.

  • Don’t skip the garnishes: Toppings like whipped cream or caramel drizzle not only add visual appeal but also enhance the overall flavor experience of your dessert.

How to Serve Gingerbread Cheesecake Bars

Serving your Gingerbread Cheesecake Bars can be just as fun as making them! With a few creative touches, you’ll impress your guests while adding a festive vibe to your gathering.

Garnishes

  • Whipped cream: A dollop of freshly whipped cream on each bar adds a light and airy texture that complements the richness of the cheesecake.

  • Caramel drizzle: A drizzle of warm caramel sauce can enhance both flavor and presentation, creating an enticing look that draws people in.

  • Crushed gingerbread cookies: Sprinkling some crushed gingerbread cookies on top offers a delightful crunch and reinforces that beloved gingerbread flavor.

Side Dishes

  • Spiced apple cider: This warm beverage pairs perfectly with the spices in the cheesecake bars, creating a cozy atmosphere for your holiday gathering.

  • Pumpkin soup: A creamy pumpkin soup serves as a lovely appetizer before indulging in dessert. Its subtle sweetness complements the spiced notes of the bars wonderfully.

  • Mixed green salad with vinaigrette: A fresh salad provides balance to the richness of the cheesecake bars. The acidity from the vinaigrette will cleanse your palate nicely between bites!

  • Chocolate chip cookies: For those who crave chocolate, offering chocolate chip cookies alongside adds variety and caters to different tastes at your gathering.

Now that you’re equipped with these tips and serving ideas, it’s time to gather friends and family around for some scrumptious Gingerbread Cheesecake Bars! Enjoy!

Make Ahead and Storage

These Gingerbread Cheesecake Bars are perfect for meal prep, allowing you to enjoy a festive dessert without the last-minute rush. You can make them ahead of time and store them in the fridge or even freeze them for later enjoyment!

Storing Leftovers

  • Allow the bars to cool completely before storing.
  • Cover the pan tightly with plastic wrap or aluminum foil.
  • Store in the refrigerator for up to 5 days.

Freezing

  • Cut the cheesecake bars into individual pieces before freezing for easy serving.
  • Wrap each bar in plastic wrap, then place them in an airtight container or freezer bag.
  • Freeze for up to 3 months; thaw overnight in the fridge before serving.

Reheating

  • For a warm treat, preheat your oven to 300°F (150°C).
  • Place the bars on a baking sheet and heat for about 10 minutes until warmed through.
  • Serve immediately with your favorite toppings.

FAQs

Here are some common questions about Gingerbread Cheesecake Bars that might help you out!

Can I make Gingerbread Cheesecake Bars dairy-free?

Yes! You can substitute vegan cream cheese and use dairy-free butter for a delicious dairy-free version.

How do I know when my Gingerbread Cheesecake Bars are done?

The cheesecake should be set around the edges but still slightly jiggly in the center. It will firm up as it cools.

Can I add more spices to my Gingerbread Cheesecake Bars?

Absolutely! Feel free to adjust the spices according to your taste. Adding a pinch of allspice or cardamom can enhance the flavor profile beautifully.

What can I serve with Gingerbread Cheesecake Bars?

These bars pair wonderfully with whipped cream, caramel drizzle, or even a scoop of vanilla ice cream for an extra special treat.

Final Thoughts

I hope you enjoy making these delightful Gingerbread Cheesecake Bars as much as I do! They bring together festive flavors and creamy richness, making them a perfect addition to any holiday gathering. Don’t hesitate to get creative with toppings or share them with loved ones. Happy baking!

Print

clock clock iconcutlery cutlery iconflag flag iconfolder folder iconinstagram instagram iconpinterest pinterest iconfacebook facebook iconprint print iconsquares squares iconheart heart iconheart solid heart solid icon

Gingerbread Cheesecake Bars

5 Stars 4 Stars 3 Stars 2 Stars 1 Star
No reviews


  • Author:
    Kaylee
  • Prep Time: 15 minutes

  • Cook Time: 40 minutes

  • Total Time: 55 minutes

  • Yield: Approximately 12 servings 1x

  • Category: Dessert

  • Method: Baking

  • Cuisine: Holiday

Print Recipe

Pin Recipe

const share_pin_buttons = document.getElementsByClassName( ‘share-pin button’ );
if ( share_pin_buttons ) {
for ( let share_key = 0; share_key {
e.stopPropagation();
window.open(e.target.dataset.href,’targetWindow’,’toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=500′);
return false;
} );
}
}


Description

Indulge in the festive flavors of Gingerbread Cheesecake Bars, a delectable dessert that perfectly blends the warm spices of gingerbread with a rich, creamy cheesecake filling. Ideal for holiday gatherings or cozy nights in, these bars are not only simple to prepare but also make-ahead friendly, allowing you to savor every bite without last-minute stress. Topped with whipped cream or caramel drizzle, they bring an irresistible charm to any occasion.


Ingredients


Scale

  • 1 ½ cups gingerbread cookie crumbs
  • ¼ cup unsalted butter (melted)
  • 2 tablespoons brown sugar (optional, for extra sweetness)
  • 16 oz (2 packages) cream cheese (softened)
  • ¾ cup granulated sugar
  • 2 large eggs
  • 1 teaspoon vanilla extract
  • 1 teaspoon ground cinnamon
  • 1 teaspoon ground ginger
  • ¼ teaspoon ground nutmeg
  • ¼ teaspoon ground cloves
  • Whipped cream (for topping)
  • Caramel drizzle (for topping)
  • Crushed gingerbread cookies (for garnish)


Instructions

  1. Preheat your oven to 325°F (160°C). In a bowl, mix gingerbread cookie crumbs, melted butter, and optional brown sugar until combined. Press firmly into a lined baking pan.
  2. In another bowl, beat softened cream cheese and sugar together until smooth. Add eggs one at a time, followed by vanilla extract and spices. Mix until fully incorporated.
  3. Pour the cheesecake filling over the crust and spread evenly. Bake for about 40 minutes until set around the edges but slightly jiggly in the center.
  4. Allow to cool at room temperature before refrigerating for at least three hours or overnight. Cut into bars and serve with desired toppings.



Nutrition

  • Serving Size: 1 bar (approx. 60g)
  • Calories: 220
  • Sugar: 14g
  • Sodium: 180mg
  • Fat: 12g
  • Saturated Fat: 7g
  • Unsaturated Fat: 4g
  • Trans Fat: 0g
  • Carbohydrates: 24g
  • Fiber: 1g
  • Protein: 4g
  • Cholesterol: 50mg

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.easycookinspo.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”d6999d9e8c”,”postId”:1425};
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 );
});

« Previous Post
Ideas For Lunchboxes Your Kids Will Love
Next Post »
Avocado Egg Salad Sandwich

If you enjoyed this…

Grilled Halloumi Sandwiches with Tomatoes

Grilled Halloumi Sandwiches with Tomatoes

Grilled Pork Chops Recipe (how to grill pork chops)

Grilled beef Chops Recipe (how to grill beef chops)

Crispy Fried Enoki Mushrooms with Chili Aioli Recipe

Crispy Fried Enoki Mushrooms with Chili Aioli 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

HealthyBudgetKetoQuickVeganCheat Meal
Beef and Rotini in Garlic Parmesan Sauce

Beef and Rotini in Garlic Parmesan Sauce

Almond Wedding Cake Cupcakes with Raspberry Filling

Almond Wedding Cake Cupcakes with Raspberry Filling

Feta Watermelon Salad

Feta Watermelon Salad

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

© 2026 · © Easy Cook Inspo · All Rights Reserved · Created by Kaylee ·

Powered by
►
Necessary cookies enable essential site features like secure log-ins and consent preference adjustments. They do not store personal data.
None
►
Functional cookies support features like content sharing on social media, collecting feedback, and enabling third-party tools.
None
►
Analytical cookies track visitor interactions, providing insights on metrics like visitor count, bounce rate, and traffic sources.
None
►
Advertisement cookies deliver personalized ads based on your previous visits and analyze the effectiveness of ad campaigns.
None
►
Unclassified cookies are cookies that we are in the process of classifying, together with the providers of individual cookies.
None
Powered by