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

Quick Daily Dish

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

Quick Daily Dish

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

Sweet Potato Salad

Jump to Recipe·Print Recipe

If you’re looking for a vibrant and healthy dish that’s as versatile as it is delicious, let me introduce you to my favorite Sweet Potato Salad. This recipe has been a staple in my kitchen for years, and it’s perfect for any occasion—whether you’re planning a cozy family dinner, a picnic with friends, or just need a quick lunch to brighten your day. The combination of roasted sweet potatoes, crunchy seeds, and tangy dressing makes every bite feel like a celebration!

Sweet Potato Salad image 2

What I love most about this Sweet Potato Salad is how easily it comes together. You can roast the sweet potatoes in the oven or whip them up in an air fryer if you’re short on time. Plus, it’s packed with wholesome ingredients that not only taste great but are also good for you!

Sweet Potato Salad image 3
Sweet Potato Salad image 4

Why You’ll Love This Recipe

  • Quick and Easy: This salad comes together in just 40 minutes, making it perfect for busy weeknights or last-minute gatherings.
  • Family-Friendly: The sweet and savory flavors appeal to both kids and adults alike, ensuring everyone will enjoy it!
  • Make-Ahead Convenience: Prepare it ahead of time for meal prep or potlucks—just store the dressing separately until serving.
  • Nutrient-Dense Ingredients: Packed with vitamins from sweet potatoes and healthy fats from seeds, this salad is as nutritious as it is satisfying.
  • Versatile Serving Options: Enjoy it as an appetizer, side dish, or light lunch—the possibilities are endless!

Ingredients You’ll Need

In this Sweet Potato Salad, you’ll find simple and wholesome ingredients that come together beautifully. Here’s what you’ll need:

For the Roasted Sweet Potatoes

  • 1½ pounds sweet potatoes (About 3 large, peeled and cut into 1-inch pieces)
  • ½ tablespoon extra virgin olive oil
  • ½ teaspoon salt

For the Toasted Seeds & Cranberries

  • 3 tablespoons seeds (pumpkin, sesame, sunflower, or a mix)
  • ¼ cup dried cranberries

For the Salad Base

  • ½ red onion (thinly sliced)
  • 5 cups arugula (or baby spinach, or both)
  • 3 ounces feta cheese (crumbled)

For the Dressing

  • 3 tablespoons extra virgin olive oil
  • 3 tablespoons lemon juice
  • 2 tablespoon mustard
  • 1½ tablespoon maple syrup (or honey)
  • 1 teaspoon dried oregano
  • ½ teaspoon salt (or more to taste)
  • ⅛ teaspoon black pepper (or red pepper flakes)

Variations

One of the best things about this Sweet Potato Salad is its flexibility! You can easily customize it to suit your taste preferences or dietary needs. Here are some fun ideas:

  • Add Extra Protein: Toss in some chickpeas or grilled chicken for a heartier meal.
  • Go Vegan: Omit the feta cheese or substitute with a vegan cheese alternative for a plant-based version.
  • Spice It Up: Add diced jalapeños or a drizzle of sriracha to bring some heat to your salad.
  • Herb Infusion: Experiment with different herbs like basil or cilantro to add freshness and flavor.

How to Make Sweet Potato Salad

Step 1: Roast the Sweet Potatoes

Preheat your oven to 400°F (200°C) if you’re going that route; if you’re using an air fryer, you can skip this step! Peel and chop your sweet potatoes into 1-inch cubes and toss them with extra virgin olive oil and salt on a baking tray. Roast them for about 30 minutes or air fry them for 20 minutes until they become fork-tender. Roasting enhances their natural sweetness while giving them that delightful caramelized flavor.

Step 2: Toast the Seeds & Prepare the Dressing

While your sweet potatoes are roasting away, heat up some extra virgin olive oil in a non-stick pan over low heat. Add your choice of seeds along with dried cranberries and toast them for about two minutes while stirring often. This step brings out their nutty flavors! Once done, set aside to cool. In another bowl, whisk together olive oil, lemon juice, mustard, maple syrup, oregano, salt, and black pepper until well combined. This dressing will tie all the flavors together beautifully.

Step 3: Assemble Your Salad

Now comes the fun part! On a large serving platter, arrange your fresh arugula as the base. Top it off with those beautifully roasted sweet potatoes, thinly sliced red onion, crumbled feta cheese (if using), toasted seeds, and cranberries. Drizzle half of your delicious dressing over everything and keep the rest on the side so guests can add more if they wish. This Sweet Potato Salad shines as an appetizer or light lunch that everyone will love!

Pro Tips for Making Sweet Potato Salad

Creating the perfect sweet potato salad can be a delightful experience, and these tips will help you shine in the kitchen!

  • Choose uniform pieces: Cutting sweet potatoes into evenly sized cubes ensures even cooking, so all your pieces are perfectly tender and delicious.

  • Cool before mixing: Allow the roasted sweet potatoes to cool slightly before adding them to the salad. This prevents wilting the greens and keeps everything fresh and vibrant.

  • Adjust seasoning: Always taste as you go! Seasoning can vary based on personal preference, so feel free to adjust salt, pepper, or acidity to suit your taste.

  • Experiment with textures: Adding different seeds or nuts not only boosts flavor but also introduces a lovely crunch. Don’t hesitate to try walnuts or pecans for extra depth.

  • Make ahead: This salad tastes even better after it has had time to marinate. Prepare it a few hours in advance and store it in the fridge for a quick, flavorful dish at mealtime.

How to Serve Sweet Potato Salad

Presenting sweet potato salad beautifully can make all the difference at your table. Here are some ideas to elevate your serving game!

Garnishes

  • Fresh herbs: Chopped parsley or cilantro adds a pop of color and freshness that complements the flavors of the salad.
  • Lemon zest: A sprinkle of lemon zest just before serving enhances the citrus notes in the dressing and brightens up the dish visually.

Side Dishes

  • Grilled chicken: Lightly seasoned grilled chicken pairs wonderfully with sweet potato salad, providing a satisfying protein option.
  • Quinoa: A side of fluffy quinoa is not only nutritious but also adds a hearty texture that balances well with the salad’s flavors.
  • Roasted vegetables: Seasonal roasted veggies like Brussels sprouts or carrots add another layer of color and sweetness, making for a vibrant plate.
  • Hummus and pita: Serving hummus with warm pita bread offers a fun dipping option that complements this refreshing salad perfectly.

Make Ahead and Storage

This Sweet Potato Salad is perfect for meal prep, making it a convenient option for busy weeks. You can easily prepare it in advance and store it for later, ensuring you have a delicious and nutritious dish ready to go!

Storing Leftovers

  • Store any leftover salad in an airtight container in the refrigerator.
  • It will stay fresh for up to 3 days.
  • Keep the dressing separate until you’re ready to serve to maintain the salad’s crispness.

Freezing

  • We do not recommend freezing this salad due to the texture changes of the sweet potatoes and greens.
  • If you have leftovers, it’s best to consume them fresh.

Reheating

  • If you prefer your sweet potatoes warm, gently reheat them in the microwave.
  • Heat in short intervals (about 30 seconds) until warmed through. Avoid reheating greens as they are best enjoyed fresh.

FAQs

Can I make Sweet Potato Salad ahead of time?

Absolutely! You can prepare the sweet potatoes and dressing ahead of time. Just store them separately in the fridge, and combine everything when you’re ready to serve.

What variations can I try with Sweet Potato Salad?

You can customize your Sweet Potato Salad by adding different ingredients such as chickpeas, avocado, or other seasonal vegetables. Feel free to experiment with flavors that you love!

How long does Sweet Potato Salad last?

When stored properly in an airtight container, Sweet Potato Salad will last for about 3 days in the refrigerator. Be sure to keep the dressing separate until serving!

Is Sweet Potato Salad healthy?

Yes! This salad is packed with nutrients from sweet potatoes, greens, and seeds, making it a great choice for a healthy meal or side dish.

Final Thoughts

Sweet Potato Salad is not just a recipe; it’s a delightful combination of flavors and textures that makes every bite enjoyable. I hope you find joy in preparing this dish as much as I do! It’s perfect for family gatherings or a simple weeknight dinner. Enjoy making it, and feel free to share your experiences—I’d love to hear how it turns out for you!

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

Sweet Potato Salad

5 Stars 4 Stars 3 Stars 2 Stars 1 Star

No reviews

Print Recipe

Sweet Potato Salad is a vibrant and nutritious dish that brings together the natural sweetness of roasted sweet potatoes, the crunch of toasted seeds, and the freshness of arugula. Ideal for any occasion, this salad is not only quick to prepare but also customizable to suit your taste preferences. Whether you’re serving it as a light lunch, a side at dinner, or a centerpiece at gatherings, each bite is filled with flavor and wholesome goodness. Plus, it’s perfect for meal prep! Enjoy this delightful salad that celebrates healthy ingredients while being easy to make.

  • Total Time:

    40 minutes
  • Yield:

    Serves approximately 6

Ingredients


Scale
  • 1½ pounds sweet potatoes
  • ½ tablespoon extra virgin olive oil
  • 3 tablespoons mixed seeds (pumpkin, sesame, sunflower)
  • ¼ cup dried cranberries
  • ½ red onion
  • 5 cups arugula
  • 3 ounces feta cheese (optional)
  • Dressing: 3 tablespoons olive oil
  • 3 tablespoons lemon juice
  • 2 tablespoons mustard
  • 1½ tablespoons maple syrup
  • 1 teaspoon dried oregano
  • Salt & pepper


Instructions

  1. Preheat oven to 400°F (200°C). Peel and chop sweet potatoes into cubes. Toss with olive oil and salt. Roast for about 30 minutes until tender.
  2. In a pan over low heat, toast mixed seeds and cranberries for about two minutes until fragrant. Set aside.
  3. In a bowl, whisk together dressing ingredients: olive oil, lemon juice, mustard, maple syrup, oregano, salt & pepper.
  4. On a platter, layer arugula as the base. Top with roasted sweet potatoes, red onion slices, feta cheese (if using), toasted seeds, and cranberries. Drizzle with dressing before serving.
  • Author: Nova
  • Prep Time: 10 minutes
  • Cook Time: 30 minutes
  • Category: Salad
  • Method: Baking
  • Cuisine: American

Nutrition

  • Serving Size: 1 cup (200g)
  • Calories: 320
  • Sugar: 9g
  • Sodium: 350mg
  • Fat: 15g
  • Saturated Fat: 2g
  • Unsaturated Fat: 12g
  • Trans Fat: 0g
  • Carbohydrates: 40g
  • Fiber: 7g
  • Protein: 6g
  • Cholesterol: 5mg

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.quickdailydish.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”9c88e7341e”,”postId”:2276};
window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.smoothScroll = {
init() {
document.addEventListener( ‘click’, ( e ) => {
let anchor = e.target;
if ( anchor.tagName !== ‘A’ ) {
anchor = anchor.closest( ‘a.tasty-recipes-scrollto’ );
}

if ( ! anchor || ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) {
return;
}

const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}

e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const element = document.querySelector( selector );
if ( ! element ) {
return;
}
element.scrollIntoView( { behavior: ‘smooth’ } );
}
};

document.addEventListener(
‘DOMContentLoaded’,
() => window.TastyRecipes.smoothScroll.init()
);

(function(){

var bothEquals = function( d1, d2, D ) {
var ret = 0;
if (d1<=D) {
ret++;
}
if (d2<=D) {
ret++;
}
return ret === 2;
};

var frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1+1,d2=1;if(x!==n1){while(bothEquals(d1,d2,D)){var m=(n1+n2)/(d1+d2);if(x===m){if(d1+d2d2){d2=D+1;}else {d1=D+1;}break}else if(xD){d1=d2;n1=n2}if(!mixed){return[0,n1,d1];}var q=Math.floor(n1/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1+P_2;Q=A*Q_1+Q_2;if(B-AD){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed){return[0,sgn*P,Q];}var q=Math.floor(sgn*P/Q);return[q,sgn*P-q*Q,Q]};

window.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(“%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D”));

window.tastyRecipesFormatAmount = function(amount, el) {
if ( parseFloat( amount ) === parseInt( amount ) ) {
return amount;
}
var roundType = ‘frac’;
if (typeof el.dataset.amountShouldRound !== ‘undefined’) {
if (‘false’ !== el.dataset.amountShouldRound) {
if ( ‘number’ === el.dataset.amountShouldRound ) {
roundType = ‘number’;
} else if (‘frac’ === el.dataset.amountShouldRound) {
roundType = ‘frac’;
} else if (‘vulgar’ === el.dataset.amountShouldRound) {
roundType = ‘vulgar’;
} else {
roundType = ‘integer’;
}
}
}
if (‘number’ === roundType) {
amount = Number.parseFloat(amount).toPrecision(2);
} else if (‘integer’ === roundType) {
amount = Math.round(amount);
} else if (‘frac’ === roundType || ‘vulgar’ === roundType) {
var denom = 8;
if (typeof el.dataset.unit !== ‘undefined’) {
var unit = el.dataset.unit;
if ([‘cups’,’cup’,’c’].includes(unit)) {
denom = 4;
if (0.125 === amount) {
denom = 8;
}
if (“0.1667″ === Number.parseFloat( amount ).toPrecision(4)) {
denom = 6;
}
}
if ([‘tablespoons’,’tablespoon’,’tbsp’].includes(unit)) {
denom = 2;
}
if ([‘teaspoons’,’teaspoon’,’tsp’].includes(unit)) {
denom = 8;
}
}
var amountArray = frac.cont( amount, denom, true );
var newAmount = ”;
if ( amountArray[1] !== 0 ) {
newAmount = amountArray[1] + ‘/’ + amountArray[2];
if (‘vulgar’ === roundType) {
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {
newAmount = vulgar;
}
});
}
}
if ( newAmount ) {
newAmount = ‘ ‘ + newAmount;
}
if ( amountArray[0] ) {
newAmount = amountArray[0] + newAmount;
}
amount = newAmount;
}
return amount;
};

window.tastyRecipesUpdatePrintLink = () => {

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

if ( ! printButton ) {
return;
}

const printURL = new URL( printButton.href );
const searchParams = new URLSearchParams( printURL.search );

const unitButton = document.querySelector( ‘.tasty-recipes-convert-button-active’ );
const scaleButton = document.querySelector( ‘.tasty-recipes-scale-button-active’ );

let unit = ”;
let scale = ”;

if ( unitButton ) {
unit = unitButton.dataset.unitType;
searchParams.delete(‘unit’);
searchParams.set( ‘unit’, unit );
}

if ( scaleButton ) {
scale = scaleButton.dataset.amount;
searchParams.set( ‘scale’, scale );
}

const paramString = searchParams.toString();
const newURL = ” === paramString ? printURL.href : printURL.origin + printURL.pathname + ‘?’ + paramString;
const printLinks = document.querySelectorAll( ‘.tasty-recipes-print-link’ );

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

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

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

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

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

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

if ( unit && ( ‘metric’ === unit || ‘usc’ === unit ) ) {
document.querySelector( ‘.tasty-recipes-convert-button[data-unit-type=”‘ + unit + ‘”]’ ).click();
}

if ( scale && Number(scale) > 0 ) {
document.querySelector( ‘.tasty-recipes-scale-button[data-amount=”‘ + Number(scale) + ‘”]’ ).click();
}
});
}());

(function(){
var buttonClass = ‘tasty-recipes-scale-button’,
buttonActiveClass = ‘tasty-recipes-scale-button-active’,
buttons = document.querySelectorAll(‘.tasty-recipes-scale-button’);
if ( ! buttons ) {
return;
}

buttons.forEach(function(button){
button.addEventListener(‘click’, function(event){
event.preventDefault();
var recipe = event.target.closest(‘.tasty-recipes’);
if ( ! recipe ) {
return;
}
var otherButtons = recipe.querySelectorAll(‘.’ + buttonClass);
otherButtons.forEach(function(bt){
bt.classList.remove(buttonActiveClass);
});
button.classList.add(buttonActiveClass);

var scalables = recipe.querySelectorAll(‘span[data-amount]’);
var buttonAmount = parseFloat( button.dataset.amount );
scalables.forEach(function(scalable){
if (typeof scalable.dataset.amountOriginalType === ‘undefined’
&& typeof scalable.dataset.nfOriginal === ‘undefined’) {
if (-1 !== scalable.innerText.indexOf(‘/’)) {
scalable.dataset.amountOriginalType = ‘frac’;
}
if (-1 !== scalable.innerText.indexOf(‘.’)) {
scalable.dataset.amountOriginalType = ‘number’;
}
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (-1 !== scalable.innerText.indexOf(vulgar)) {
scalable.dataset.amountOriginalType = ‘vulgar’;
}
});
if (typeof scalable.dataset.amountOriginalType !== ‘undefined’) {
scalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;
}
}
var amount = parseFloat( scalable.dataset.amount ) * buttonAmount;
amount = window.tastyRecipesFormatAmount(amount, scalable);
if ( typeof scalable.dataset.unit !== ‘undefined’ ) {
if ( ! scalable.classList.contains(‘nutrifox-quantity’) ) {
if ( ! scalable.classList.contains(‘nutrifox-second-quantity’) ) {
amount += ‘ ‘ + scalable.dataset.unit;
}
}
}
scalable.innerText = amount;
});

var nonNumerics = recipe.querySelectorAll(‘[data-has-non-numeric-amount]’);
nonNumerics.forEach(function(nonNumeric){
var indicator = nonNumeric.querySelector(‘span[data-non-numeric-label]’);
if ( indicator ) {
nonNumeric.removeChild(indicator);
}
if ( 1 !== buttonAmount ) {
indicator = document.createElement(‘span’);
indicator.setAttribute(‘data-non-numeric-label’, true);
var text = document.createTextNode(‘ (x’ + buttonAmount + ‘)’);
indicator.appendChild(text);
nonNumeric.appendChild(indicator);
}
});

window.tastyRecipesUpdatePrintLink();
});
});
}());

window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.cookMode = {
wakeLockApi: false,
wakeLock: false,
cookModeSelector: ‘.tasty-recipes-cook-mode’,
init() {
if (“wakeLock” in navigator && “request” in navigator.wakeLock) {
this.wakeLockApi = navigator.wakeLock;
}

const cookModes = document.querySelectorAll(this.cookModeSelector);

if (cookModes.length > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘input[type=”checkbox”]’).addEventListener(“change”, event => {
this.checkboxChange(event.target);
}, false);
} else {
cookMode.style.display = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = document.querySelectorAll(this.cookModeSelector + ‘ input[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
try {
this.wakeLock = await this.wakeLockApi.request(“screen”);
this.wakeLock.addEventListener(“release”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.release();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
document.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});

window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.staticTooltip = {
element: null,
tooltipElement: null,
deleting: false,
init( element ) {
if ( this.deleting ) {
return;
}
this.element = element;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}

this.deleting = true;
this.tooltipElement.classList.remove( ‘opened’ );

setTimeout( () => {
this.tooltipElement.remove();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = document.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );

const currentTooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
document.body.replaceChild( tooltipElement, currentTooltipElement );
} else {
document.body.appendChild( tooltipElement );
}

this.tooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
},
show() {
if ( ! this.tooltipElement ) {
return;
}

const tooltipTop = this.element.getBoundingClientRect().top
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().height;
const tooltipLeft = this.element.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.element.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );

this.tooltipElement.setAttribute( ‘style’, ‘top:’ + tooltipTop + ‘px;left:’ + posLeft + ‘px;’ );
this.tooltipElement.classList.add( ‘opened’ );

},
maybeRemoveTail( removeTail ) {
if ( removeTail ) {
this.tooltipElement.classList.add( ‘tr-hide-tail’ );
} else {
this.tooltipElement.classList.remove( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};

window.TastyRecipes.ajax = {
sendPostRequest( url, data, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.send( this.preparePostData( data ) );

xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.status === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}

failure( xhr );
};

xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( data ) {
const formData = new FormData();

for ( const key in data ) {
formData.append( key, data[key] );
}
return formData;
},
};

window.TastyRecipes.ratings = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;

this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const ratings = document.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( ratings.length {
event.preventDefault();
this.defaultRating = event.target.closest( ‘.checked’ ).dataset.rating;
this.setCheckedStar( event.target );
this.maybeSendRating( this.defaultRating, event.target );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click’, e => {
// Bailout (don’t remove the tooltip) when the clicked element is a rating star, or it’s the tooltip itself.
if ( e.target.closest( ‘.tasty-recipes-rating’ ) || e.target.classList.contains( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}

window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( rating ) {
const ratingInput = document.querySelector( ‘#respond .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = document.querySelectorAll( ‘input.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click’, currentEvent => {
const selectedRating = currentEvent.target.getAttribute( ‘value’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( rating ) {
if ( rating < this.minRating ) {
document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );
return;
}
document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( rating ) {
const commentTextarea = document.getElementById( 'comment' );
if ( ! commentTextarea ) {
return;
}

if ( rating {
window.TastyRecipes.staticTooltip.changeMessage( response.data.message );
window.TastyRecipes.staticTooltip.show();
this.updateAverageText( response.data, recipeCardElement );
this.maybeFillCommentForm( response.data );

// Hide the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.data, rating );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( data, recipeCardElement ) {
if ( ! data.average ) {
return;
}
this.setRatingPercent( data );

if ( ! data.count ) {
return;
}

const quickLink = document.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, data );
this.setPartialStar( quickLink );
}

const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = data.average;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), data );
},
setTextInContainer( container, data ) {
if ( ! container ) {
return;
}

if ( data.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = data.label;
}
return;
}

const averageElement = container.querySelector( ‘.average’ );
if ( averageElement ) {
averageElement.textContent = data.average;
}

const countElement = container.querySelector( ‘.count’ );
if ( countElement ) {
countElement.textContent = data.count;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( data ) {
this.defaultRating = data.average.toFixed( 1 );
const parts = data.average.toFixed( 2 ).toString().split( ‘.’ );
this.currentRatingPercentage = parts[1] ? parts[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( target ) {
const cardRatingContainer = target.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}

const thisStar = target.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( data ) {
if ( ! data.comment || ! data.comment.content ) {
return;
}

const commentForm = document.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}

const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.value ) {
return;
}

// Add comment details for editing.
commentBox.innerHTML = data.comment.content;
if ( data.comment.name ) {
commentForm.querySelector( ‘[name=author]’ ).value = data.comment.name;
commentForm.querySelector( ‘[name=email]’ ).value = data.comment.email;
}
},
maybeResetTooltip( recipeCardElement, data, rating ) {
if ( this.savingRating === rating ) {
this.resetTooltip( recipeCardElement, data );
}
},
resetTooltip( recipeCardElement, data ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;

// Reset the default rating.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;

this.resetSelectedStar( cardRatingContainer, data );
}
},
resetSelectedStar( cardRatingContainer ) {
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( selectedRatingElement ) {
selectedRatingElement.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = this.currentRatingPercentage;
selectedRatingElement.parentNode.dataset.trChecked = 1;
}

const previousSelectedElement= cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( previousSelectedElement ) {
const currentSelectedRating = previousSelectedElement.querySelector(‘[data-rating]’);
if ( currentSelectedRating !== selectedRatingElement ) {
delete previousSelectedElement.dataset.trChecked;
}
}
},
backwardCompFormRatingPosition() {
const ratingsButtons = document.querySelector( ‘#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.display.includes( ‘flex’ ) ) {
ratingsButtons.style.direction = ‘rtl’;
}

if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Select the rating that was previously selected in admin.
ratingsButtons.querySelector( ‘.tasty-recipes-rating[value=”‘ + tastyRecipesRating + ‘”]’ ).checked = true;
}

const ratingSpans = ratingsButtons.querySelectorAll( ‘.tasty-recipes-rating’ );
for (const ratingSpan of ratingSpans) {
ratingSpan.addEventListener( ‘click’, event => {
if ( ratingSpan === event.target ) {
return;
}
ratingSpan.previousElementSibling.click();
} );
}
}
};

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

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN
« Previous Post
Root beef broth Float Cupcakes
Next Post »
Macaroni Coleslaw Salad

If you enjoyed this…

Blueberry Spinach Salad with Honey Balsamic Dressing

Blueberry Spinach Salad with Honey Balsamic Dressing

Keto Christmas Tree Cheese Ball

Keto Christmas Tree Cheese Ball

Sweet Potato Salad

Sweet Potato Salad

Primary Sidebar

Browse by Diet

HealthyBudgetKetoQuickVeganCheat Meal
Mediterranean Steak Bowls

Mediterranean Steak Bowls

Iced Oatmeal Cookie Bars Recipe

Iced Oatmeal Cookie Bars Recipe

Steak Cobb Salad with Creamy Avocado Dressing {Whole30, Keto}

Steak Cobb Salad with Creamy Avocado Dressing {Whole30, Keto}

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

© 2026 Quick Daily Dish · All Rights Reserved · Created by Chef Nova Blake · About · Privacy Policy · Terms & Conditions · Disclaimer · Contact