• 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
Keto / DINNER / Keto Scalloped Turnips

Keto Scalloped Turnips

February 4, 2026 by Kaylee

Jump to Recipe·Print Recipe

If you’re looking for a delightful side dish that feels indulgent yet is low in carbs, you’re in for a treat with these Keto Scalloped Turnips! This recipe is a family favorite in my house, and it’s easy to see why. With creamy layers of cheesy goodness and the subtle earthy flavor of turnips, this dish is perfect for busy weeknights or special family gatherings. Trust me, your loved ones will be asking for seconds!

Keto Scalloped Turnips image 2

The magic of Keto Scalloped Turnips lies in how they mimic the classic comfort of scalloped potatoes while keeping things healthy and low-carb. So, let’s dive into this delicious recipe together!

Keto Scalloped Turnips image 3
Keto Scalloped Turnips image 4

Why You’ll Love This Recipe

  • Easy to Prepare: With just a handful of ingredients and simple steps, you can whip up this dish in no time.
  • Family-Friendly Appeal: Everyone will enjoy the rich flavors, making it perfect for both kids and adults alike.
  • Perfect for Meal Prep: Make it ahead of time and reheat for an effortless side on busy nights.
  • Low-Carb Comfort Food: Enjoy all the creamy goodness without the guilt; it’s a great addition to any keto meal plan.

Ingredients You’ll Need

You’ll find that these ingredients are simple and wholesome. They come together beautifully to create a comforting dish that everyone will love.

For the Dish

  • 2 Turnips (peeled and sliced thinly)
  • 1/2 cup Onion (chopped)
  • 2 tbsp Butter
  • 2 tsp Garlic (minced)
  • 1/4 cup Chicken Broth
  • 1 cup Heavy Whipping Cream
  • 2 tbsp Fresh Rosemary (chopped)
  • 2 cups Colby Jack Cheese (shredded)

Variations

One of the best things about this recipe is its flexibility! Feel free to mix things up based on what you have on hand or your personal taste.

  • Add some greens: Toss in some fresh spinach or kale toward the end for an extra nutrient boost.
  • Change up the cheese: Swap out Colby Jack for your favorite cheese like cheddar or mozzarella for a different flavor profile.
  • Spice it up: Add a pinch of red pepper flakes or some chopped jalapeños for a bit of heat.
  • Herb options: Experiment with other herbs like thyme or parsley if rosemary isn’t your thing.

How to Make Keto Scalloped Turnips

Step 1: Melt the Butter

Start by melting the butter in a skillet over medium heat. This step is essential because it creates a base for sautéing our vegetables, allowing them to become tender and flavorful.

Step 2: Sauté Onions

Once the butter is melted, add the chopped onions into the skillet. Sauté them until they soften; this usually takes about 3-5 minutes. Cooking them well brings out their natural sweetness, which balances perfectly with the richness of the cream.

Step 3: Add Garlic

Next, stir in the minced garlic and sauté for another minute. The aroma that fills your kitchen will make everyone eager to dig into this dish!

Step 4: Create the Sauce

Pour in the chicken broth and heavy whipping cream. Let this mixture cook down until it thickens slightly—this will create a luscious sauce that envelops our turnips beautifully.

Step 5: Stir in Cheese

Now comes the fun part! Stir in the shredded cheese until it’s melted into that creamy goodness. Make sure everything is well combined—this cheesy sauce is what makes these keto scalloped turnips so irresistible.

Step 6: Season It Up

Mix in salt and pepper to taste, along with those fragrant chopped rosemary leaves. This herb adds a wonderful depth of flavor that elevates your dish even further.

Step 7: Combine with Turnips

Add those sliced turnips into the skillet, stirring gently to coat each piece evenly with that decadent sauce. This ensures every bite will be bursting with flavor!

Step 8: Simmer Away

Cover your skillet and let it simmer for 20-25 minutes. This step allows the turnips to soften beautifully while soaking up all those delicious flavors. Just remember to stir occasionally so nothing sticks or burns.

Step 9: Cool Before Serving

After cooking, let your dish cool for about 10-15 minutes before serving. This little wait helps everything set nicely. Garnish with fresh rosemary before serving—it adds such a lovely touch!

Enjoy your delicious Keto Scalloped Turnips as a side dish that’s sure to impress!

Pro Tips for Making Keto Scalloped Turnips

Creating the perfect keto scalloped turnips can be a breeze with a few helpful tips!

  • Choose the right turnips: Using fresh, firm turnips ensures the best texture and flavor in your dish. Look for turnips that are smooth and free from blemishes.

  • Slice evenly: Cutting your turnips into uniform slices allows them to cook evenly, ensuring that every bite is perfectly tender. Aim for about 1/8-inch thickness for optimal results.

  • Don’t rush the sauce: Allowing the sauce to simmer and thicken enhances its flavor and creaminess. This step adds depth to your dish, making it rich and satisfying.

  • Experiment with cheese: While Colby Jack cheese adds a wonderful flavor, feel free to mix in other cheeses like cheddar or mozzarella for a unique twist. Each type brings its own character to the dish!

  • Adjust seasoning to taste: Every palate is different, so don’t hesitate to add more salt, pepper, or even some red pepper flakes for a kick. Tailoring the flavors will make this dish truly yours.

How to Serve Keto Scalloped Turnips

Presenting your delicious keto scalloped turnips can elevate your dining experience! Here are some ideas on how to serve this delightful side dish.

Garnishes

  • Chopped Fresh Herbs: A sprinkle of chopped parsley or chives adds a pop of color and freshness that complements the rich flavors of the scalloped turnips.
  • Shredded Cheese: A light sprinkling of additional cheese on top just before serving can create an irresistible melty layer that beckons guests to dig in.

Side Dishes

  • Garlic Butter Green Beans: Crisp-tender green beans sautéed in garlic butter offer a bright contrast to the creamy scalloped turnips while keeping things low-carb.
  • Zucchini Noodles: Lightly sautéed zucchini noodles provide a refreshing, spiraled addition that pairs beautifully with the rich flavors of scalloped turnips.
  • Roasted Brussels Sprouts: These crispy little gems add an earthy element to your meal. Toss them with olive oil and seasonings before roasting for maximum flavor.
  • Cauliflower Rice: Fluffy cauliflower rice is an excellent low-carb option that can soak up any remaining sauce from your scalloped turnips, ensuring not a drop goes to waste!

With these tips and serving suggestions, you’re all set to impress at your next gathering or family dinner. Enjoy every cheesy bite of these scrumptious keto scalloped turnips!

Make Ahead and Storage

These Keto Scalloped Turnips are perfect for meal prep! You can easily make them ahead of time and enjoy them throughout the week. Here’s how to store, freeze, and reheat your delicious dish:

Storing Leftovers

  • Place any leftover scalloped turnips in an airtight container.
  • Store in the refrigerator for up to 3-4 days.
  • Reheat in the microwave or on the stovetop until warmed through.

Freezing

  • Allow the dish to cool completely before freezing.
  • Transfer to a freezer-safe container or bag, ensuring you remove as much air as possible.
  • Freeze for up to 2 months for best quality.

Reheating

  • Thaw overnight in the refrigerator if frozen.
  • Reheat in a skillet over medium heat, stirring occasionally until hot.
  • Alternatively, use a microwave-safe dish and heat in short intervals, stirring in between.

FAQs

If you’re curious about Keto Scalloped Turnips, here are some common questions answered!

Can I substitute turnips with other vegetables for scalloped dishes?

Absolutely! While turnips are low-carb and keto-friendly, you can use other vegetables like cauliflower or zucchini. Just adjust the cooking time as needed.

How do Keto Scalloped Turnips compare to traditional scalloped potatoes?

Keto Scalloped Turnips have a similar creamy texture and flavor profile but with significantly fewer carbs compared to traditional scalloped potatoes, making them an excellent choice for a keto diet.

Can I make Keto Scalloped Turnips without heavy cream?

Yes! If you prefer a lighter version, you can use coconut cream or unsweetened almond milk mixed with nutritional yeast for added creaminess.

How long does it take to prepare Keto Scalloped Turnips?

The total time for preparing Keto Scalloped Turnips is about 50 minutes, including 20 minutes of prep and 30 minutes of cooking time.

Final Thoughts

I hope you enjoy making these Keto Scalloped Turnips as much as I do! They’re not just a fantastic low-carb side dish; they also bring warmth and comfort to any meal. Whether it’s a weeknight dinner or a special gathering, this recipe is sure to impress. Happy cooking!

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

Keto Scalloped Turnips

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


  • Author:
    Kaylee
  • Prep Time: 20 minutes

  • Cook Time: 30 minutes

  • Total Time: 50 minutes

  • Yield: Serves about 6 people 1x

  • Category: Side Dish

  • Method: Baking

  • Cuisine: American

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

Keto Scalloped Turnips are a creamy, satisfying side dish that captures the essence of traditional scalloped potatoes while being low in carbs. This easy, family-friendly recipe combines tender turnips with rich Colby Jack cheese and fresh herbs for a mouthwatering experience. Perfect for weeknight dinners or special occasions, these scalloped turnips will have everyone coming back for seconds! With simple ingredients and straightforward preparation, you can create a hearty dish that aligns with your keto lifestyle.


Ingredients


Scale

  • 2 Turnips (peeled and thinly sliced)
  • 1/2 cup Onion (chopped)
  • 2 tbsp Butter
  • 2 tsp Garlic (minced)
  • 1/4 cup Chicken Broth
  • 1 cup Heavy Whipping Cream
  • 2 tbsp Fresh Rosemary (chopped)
  • 2 cups Colby Jack Cheese (shredded)


Instructions

  1. Melt butter in a skillet over medium heat.
  2. Sauté chopped onions until softened, about 3-5 minutes.
  3. Add minced garlic and cook for an additional minute.
  4. Pour in chicken broth and heavy cream; simmer until slightly thickened.
  5. Stir in shredded cheese until melted and well combined.
  6. Season with salt, pepper, and fresh rosemary.
  7. Gently fold in the sliced turnips to coat them evenly with the sauce.
  8. Cover and simmer for 20-25 minutes, stirring occasionally, until turnips are tender.
  9. Allow to cool for 10-15 minutes before serving.



Nutrition

  • Serving Size: 1 cup (240g)
  • Calories: 350
  • Sugar: 3g
  • Sodium: 450mg
  • Fat: 28g
  • Saturated Fat: 17g
  • Unsaturated Fat: 9g
  • Trans Fat: 0g
  • Carbohydrates: 12g
  • Fiber: 5g
  • Protein: 14g
  • Cholesterol: 75mg

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”:2571};
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
Stacked Sugar Cookie Christmas Trees
Next Post »
Vegan Detox Cabbage Soup

If you enjoyed this…

Low-Carb Pumpkin Cauliflower Mash

Low-Carb Pumpkin Cauliflower Mash

Keto Asian Turkey Meatballs

Keto Asian Turkey Meatballs

Low Carb Chicken Shawarma Bowls

Low Carb Chicken Shawarma Bowls

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