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

Simple Daily Eats

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

Simple Daily Eats

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

Thai Quinoa Crunch Salad: A Refreshing Healthy Delight!

Jump to Recipe·Print Recipe

If you’re looking for a dish that feels vibrant and refreshing, look no further than the Thai Quinoa Crunch Salad: A Refreshing Healthy Delight! This salad is one of my go-to recipes when I want something light yet satisfying. It’s perfect for busy weeknights when you need a quick meal or for family gatherings where you want to impress your guests with something colorful and flavorful. The combination of crunchy vegetables and fluffy quinoa creates a delightful texture, while the tangy dressing elevates each bite.

Thai Quinoa Crunch Salad: A Refreshing Healthy Delight! image 2

What makes this salad even more special is how versatile it is. You can enjoy it as a main course or serve it as a side dish alongside grilled meats or fish. No matter the occasion, this salad is sure to be a hit!

Thai Quinoa Crunch Salad: A Refreshing Healthy Delight! image 3
Thai Quinoa Crunch Salad: A Refreshing Healthy Delight! image 4

Why You’ll Love This Recipe

  • Quick and Easy: Preparation takes just 30 minutes, making it perfect for those busy evenings.
  • Nutritious Ingredients: Packed with quinoa and fresh veggies, it’s a great way to get your daily nutrients.
  • Make-Ahead Friendly: Refrigerate it for up to two days, allowing flavors to deepen—great for meal prep!
  • Customizable: You can easily swap out ingredients or add proteins to suit your taste.
  • Visually Stunning: The bright colors of the vegetables make this dish a feast for the eyes!

Ingredients You’ll Need

This Thai Quinoa Crunch Salad features simple, wholesome ingredients that come together beautifully. Here’s what you’ll need:

For the Salad

  • 1 cup quinoa
  • 2 cups water
  • 1 cup red bell pepper, diced
  • 1 cup cucumber, diced
  • 1 cup shredded carrots
  • 1 cup green onions, sliced
  • 1/2 cup chopped fresh cilantro
  • 1/2 cup chopped peanuts
  • 1/4 cup sesame seeds

For the Dressing

  • 1/4 cup soy sauce
  • 2 tablespoons lime juice
  • 1 tablespoon honey
  • 1 tablespoon sesame oil
  • 1 teaspoon grated fresh ginger
  • 1 clove garlic, minced
  • Salt and pepper to taste

Variations

This recipe is wonderfully flexible! Here are some variations to keep things exciting:

  • Add Protein: Toss in grilled chicken or tofu for an extra protein boost.
  • Mix Up the Nuts: Substitute peanuts with cashews or almonds for a different crunch.
  • Spice It Up: Add some chopped jalapeños or sriracha to the dressing for a spicy kick.
  • Go Vegan: Replace honey with maple syrup for a completely plant-based option.

How to Make Thai Quinoa Crunch Salad: A Refreshing Healthy Delight!

Step 1: Cook the Quinoa

In a medium saucepan, combine your quinoa and water. Bring it to a boil and then reduce the heat to low. Cover and let it simmer for about 15 minutes until it’s fluffy and all the water has absorbed. This step is crucial because perfectly cooked quinoa serves as the base of your salad.

Step 2: Prepare the Veggies

Once the quinoa has cooled down, grab a large bowl and mix in your diced red bell pepper, cucumber, shredded carrots, sliced green onions, chopped cilantro, peanuts, and sesame seeds. This colorful medley not only adds crunch but also brings health benefits from all those fresh veggies!

Step 3: Whisk Together the Dressing

In a small bowl, whisk together soy sauce, lime juice, honey, sesame oil, grated ginger, minced garlic, salt, and pepper until everything is well blended. This dressing is what ties all those gorgeous flavors together—don’t skip this step!

Step 4: Combine Everything

Pour your dressing over the salad mixture in the large bowl. Gently toss everything together until well combined. Make sure every bit of veggie gets coated with that delicious dressing; it’s where all the magic happens!

Step 5: Chill Out

For optimal flavor blending, chill your salad in the refrigerator for at least 30 minutes before serving. This allows all those tasty ingredients to meld beautifully together.

Step 6: Serve & Enjoy!

Serve your Thai Quinoa Crunch Salad cold or at room temperature—either way, it’s going to be refreshing! This dish is perfect for summer picnics or simply enjoyed at home on a warm evening. Enjoy every crunchy bite!

Pro Tips for Making Thai Quinoa Crunch Salad: A Refreshing Healthy Delight!

Creating the perfect Thai Quinoa Crunch Salad can be even easier with these helpful tips!

  • Rinse your quinoa: Rinsing quinoa before cooking removes the natural coating called saponin, which can impart a bitter flavor, ensuring a more pleasant taste in your salad.

  • Use fresh vegetables: Fresh, crisp vegetables not only enhance the flavor and texture of your salad but also contribute essential nutrients, making your dish even healthier.

  • Let it chill: Allowing the salad to chill for at least 30 minutes helps the flavors meld together beautifully, resulting in a more cohesive and flavorful dish.

  • Customize with proteins: Adding grilled chicken or tofu boosts the protein content and makes the salad a satisfying main course for any meal.

  • Experiment with dressings: While the suggested dressing is delicious, feel free to play around with different dressings or add-ins like avocado for creaminess or chili paste for heat!

How to Serve Thai Quinoa Crunch Salad: A Refreshing Healthy Delight!

Presentation is key when serving this vibrant salad. Here are some delightful ways to elevate your dish and make it stand out on the table.

Garnishes

  • Lime wedges: Placing lime wedges on the side not only adds a pop of color but also allows guests to add extra zing if they desire.
  • Fresh cilantro leaves: Sprinkling additional cilantro on top enhances both flavor and visual appeal, creating a beautiful finish.

Side Dishes

  • Grilled Vegetable Skewers: Colorful skewers filled with seasonal vegetables add flavor and texture that complements the salad perfectly.
  • Asian Cucumber Salad: A light and refreshing cucumber salad provides an extra crunch while pairing wonderfully with the Thai flavors.
  • Spring Rolls: These fresh rolls filled with veggies provide a delightful contrast in texture and can be dipped in peanut sauce for extra flavor.
  • Miso Soup: A warm bowl of miso soup offers comfort and balances out the refreshing nature of the quinoa salad, making it a wholesome meal.

Make Ahead and Storage

This Thai Quinoa Crunch Salad is perfect for meal prep, allowing you to enjoy a healthy dish throughout the week with ease.

Storing Leftovers

  • Store any leftover salad in an airtight container.
  • Keep it in the refrigerator for up to 3 days.
  • If possible, keep the dressing separate until you’re ready to serve to maintain freshness and crunch.

Freezing

  • It’s best not to freeze this salad as the texture of the vegetables may become mushy upon thawing.
  • However, you can freeze cooked quinoa separately and then mix it fresh when ready to enjoy.

Reheating

  • If you’ve stored leftovers, simply let them come to room temperature before serving.
  • For best results, avoid microwaving, as it can cause the vegetables to lose their crispness.

FAQs

Can I make Thai Quinoa Crunch Salad: A Refreshing Healthy Delight! in advance?

Absolutely! This salad is great for meal prep. Just prepare it a day ahead and store it in the fridge. The flavors will meld beautifully as it sits.

How long does Thai Quinoa Crunch Salad: A Refreshing Healthy Delight! last in the fridge?

When stored properly in an airtight container, this salad can last up to 3 days in the refrigerator. Just be sure to keep the dressing separate if possible!

What can I substitute for peanuts in this recipe?

If you have nut allergies or prefer a different flavor, try using sunflower seeds or pumpkin seeds instead of peanuts for added crunch.

Is this salad gluten-free?

Yes! As long as you use gluten-free soy sauce (such as tamari), this recipe is completely gluten-free.

Can I add protein to Thai Quinoa Crunch Salad: A Refreshing Healthy Delight!?

Definitely! You can add grilled chicken, tofu, or chickpeas for a heartier meal. Just toss them into the salad before serving.

Final Thoughts

I truly hope you enjoy making this Thai Quinoa Crunch Salad: A Refreshing Healthy Delight! It’s not only vibrant and packed with flavor but also versatile enough for any occasion. Whether it’s a quick lunch or a side dish at dinner, this salad is sure to impress your family and friends. Happy cooking!

Print

Thai Quinoa Crunch Salad: A Refreshing Healthy Delight!

Print Recipe

5 Stars 4 Stars 3 Stars 2 Stars 1 Star

No reviews

Thai Quinoa Crunch Salad: A Refreshing Healthy Delight is the perfect dish for those seeking a vibrant and nutritious meal. This salad combines fluffy quinoa with an array of crunchy vegetables, creating a delightful texture that’s both satisfying and light. The zesty dressing elevates each bite, making it a fantastic choice for busy weeknights or family gatherings. Versatile enough to serve as a main course or a side dish, this refreshing salad is sure to impress your guests while packing in essential nutrients.

  • Author: Sarah Mitchell
  • Prep Time: 10 minutes
  • Cook Time: 15 minutes
  • Total Time: 25 minutes
  • Yield: Serves approximately 4 people 1x
  • Category: Salad
  • Method: Mixing
  • Cuisine: Thai

Ingredients


Scale

  • 1 cup quinoa
  • 2 cups water
  • 1 cup red bell pepper, diced
  • 1 cup cucumber, diced
  • 1 cup shredded carrots
  • 1 cup green onions, sliced
  • 1/2 cup chopped fresh cilantro
  • 1/2 cup chopped peanuts (or substitute with sunflower seeds)
  • 1/4 cup sesame seeds
  • 1/4 cup soy sauce (gluten-free if desired)
  • 2 tablespoons lime juice
  • 1 tablespoon honey (or maple syrup for vegan option)
  • 1 tablespoon sesame oil
  • 1 teaspoon grated fresh ginger
  • 1 clove garlic, minced
  • Salt and pepper to taste

Instructions

  1. Rinse quinoa under cold water and combine it with water in a medium saucepan. Bring to a boil, then reduce heat and cover. Simmer for about 15 minutes until fluffy.
  2. In a large bowl, combine cooked quinoa with red bell pepper, cucumber, shredded carrots, green onions, cilantro, peanuts (or sunflower seeds), and sesame seeds.
  3. In a small bowl, whisk together soy sauce, lime juice, honey, sesame oil, grated ginger, garlic, salt, and pepper.
  4. Pour the dressing over the salad mixture and toss gently until everything is well coated.
  5. Chill in the refrigerator for at least 30 minutes before serving to allow flavors to meld.
  6. Serve cold or at room temperature.

Nutrition

  • Serving Size: Approximately 1 cup (200g)
  • Calories: 280
  • Sugar: 7g
  • Sodium: 600mg
  • Fat: 14g
  • Saturated Fat: 2g
  • Unsaturated Fat: 10g
  • Trans Fat: 0g
  • Carbohydrates: 33g
  • Fiber: 6g
  • Protein: 8g
  • Cholesterol: 0mg

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.simpledailyeats.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”bcbe7a32aa”,”postId”:4290};
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
Healthy Grilled Mediterranean Bowl
Next Post »
Crispy Crab Cake Egg Rolls: A Savory Seafood Snack Delight

If you enjoyed this…

Easy Avocado Chicken Salad

Easy Avocado Chicken Salad

Mexican Street Corn Pasta Salad Recipe | Easy & Flavorful

Mexican Street Corn Pasta Salad Recipe | Easy & Flavorful

BBQ Chicken Chopped Salad with Cilantro Ranch

BBQ Chicken Chopped Salad with Cilantro Ranch

Primary Sidebar

Browse by Diet

HealthyBudgetKetoQuickVeganCheat Meal
Chili-Lime Quinoa Black Bean Salad with Corn

Chili-Lime Quinoa Black Bean Salad with Corn

Garlic Butter Beef Bites with Potatoes

Garlic Butter Beef Bites with Potatoes

Mediterranean Bean Salad

Mediterranean Bean Salad

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

© 2026 Simple Daily Eats · All Rights Reserved · Created with heart by Sarah Mitchell · About · Privacy Policy · Terms & Conditions · Disclaimer · Affiliate Disclosure · Contact