Creamy Healthy Pasta Salad

pasta salad with veggies and creamy dressing in a white bowl with a serving spoon in it

When you’re looking for a classic tasting deliciously creamy pasta salad, but want skip the excess calories, turn to this blue ribbon recipe! This healthy pasta salad is made with loads of fresh vegetables and a zippy Greek yogurt dressing.

Regular Pasta Salad: 379 calories and 26 grams fat

This Healthy Pasta Salad recipe: 288 calories and 11 grams fat

As a professional recipe developer, it has been my #1 mission to make good-for-you foods taste great, for more than 20 years. And this healthy recipe for pasta salad is the PERFECT example of how we reach that objective! 

The tangy creamy Greek yogurt dressing has just the right amount of mayo to taste like the higher fat and calorie versions. Plus I’ve added in a few flavor boosts (a splash of acid, a dollop of mustard, a tiny bit of sweetness for balance, and a pinch of fresh herbs) to make it taste worthy of a first-place prize in the recipe contest!

pasta salad with veggies and creamy dressing in a white bowl with a serving spoon in it

Table of contents

  • Ingredients For Healthy Pasta Salad
  • How To Make Pasta Salad Healthy
  • Serving Suggestions and Menu Ideas
  • How To Store Leftovers and Make Ahead Tips
  • Variations To Try
  • More Healthy Pasta Salad Recipes

Ingredients For Healthy Pasta Salad

  • Pasta: I use a pound of regular semolina pasta or durum wheat pasta, but you could choose a whole-wheat pasta or a gluten-free one. My favorite shape for pasta salad is rotini, but bowties, shells or another medium shape of similar size will work perfectly well too.
  • Vegetables: Broccoli, green onions (scallions) or 1 shallot, bell peppers and peas
  • Pasta Salad Dressing: plain Greek yogurt, mayonnaise, white wine vinegar, brown deli mustard, agave, honey or sugar, salt and freshly ground pepper. You’ll also need 2 teaspoons of chopped fresh herbs. We’ve tested this recipe with both dill and tarragon and love both. Dill is more classic tasting, but if you are a fan of tarragon try that!
  • Additional Stir-Ins: Ripe California black olives give this picnic salad vibes all around and we also added in a tiny bit of smoky crumbled cooked bacon, which in moderation is a big taste booster and only adds 16 calories per serving of salad. 

How To Make Pasta Salad Healthy

pasta cookign with broccoli

Step 1: Cook Pasta and Broccoli

First bring a large pot of generously salted water to a boil. Add your pasta, stir and set a timer for 1 minute less than the package instructions indicate for al dente. When the timer goes off, you’ll add the broccoli and cook it with the pasta for the remaining 1 minute. Immediately drain the pasta and broccoli and run cold water over it to cool it down and rinse away excess starch. 

whisking the dressing in a glass bowl

Step 2: Make Dressing

Next, whisk the Greek yogurt (or light sour cream), the mayonnaise, vinegar, mustard, agave or sugar, herb of your choice, salt and pepper.

the pasta and veggies in the bowl

Step 3: Mix Pasta Salad with Vegetables and Dressing

Add the drained pasta and broccoli, green onion (or shallot), bell pepper, peas, olives and bacon (if using) to the dressing and toss to combine. Serve immediately or chill.

Serving Suggestions and Menu Ideas

  • Serve with Barbecue Chicken or make Peach Barbecue Sauce and brush on your favorite protein.
  • This Caribbean Chicken or Greek Chicken Thighs are also great with this salad.
  • For a picnic serve with Healthy Chicken Salad sandwiches or chicken salad wraps
  • Keep the menu vegetarian and pair with Chickpea ‘tuna’ salad sandwiches
  • Make with Grilled Lamb Burgers or Portobello Mushroom Burgers
the pasta salad in a white bowl from overhead with a serving in a bowl in the background

How To Store Leftovers and Make Ahead Tips

  • Make Ahead: The BEST thing about this recipe (besides the taste and fact that it is healthier and lower calorie) is that it can be made ahead 2 days in advance. If prepping further ahead, up to4 days, mix the pasta with the dressing but keep the stir-ins and veggies separate. Taste and adjust seasoning before serving.
  • To Store: Cover the bowl with plastic wrap or foil or transfer to a resealable container. Keep refrigerated.
  • Leftovers can be enjoyed for up to four days. After two days the veggies will get a little soft and the dressing will get a little watery, but the taste will still be yummy.

If your pasta salad has been out on a picnic table or at room temp for two hours, discard the leftovers. In the food nerd world, we call this the temperature danger zone– it’s how food-borne pathogens thrive. Read more about what the USDA recommends for food safety here.

Variations To Try

  • If you do not like black olives you can omit them.
  • Same goes for bacon- you can easily make this vegetarian by omitting the bacon.
  • If you prefer another combination of vegetables you can simply add in your preferred combination. Aim for about 4 1/2 cups of chopped veggies total.
  • Tarragon has a strong flavor, so if you are not a fan of it, use the dill option, or you can sub in another fresh herb of your choice (like basil.)
the healthy pasta salad in a white bowl

More Healthy Pasta Salad Recipes

  • Healthy Macaroni Salad with Cheddar Cheese and Garden Veggies
  • Creamy Pasta Salad with Ham and fresh herbs
  • Creamy Pasta Salad with Salmon with Greek yogurt dressing
  • Greek Orzo Pasta Salad with cucumbers, feta and cherry tomatoes
  • Healthy Italian Pasta Salad with oil and vinegar dressing
  • Mexican Pasta Salad with black beans and veggies

At Healthy Seasonal Recipes, we specialize in cooking with fresh veggies and creating weeknight meals. Sign up HERE to get more produce-forward dinner ideas for FREE! If you make this recipe, please come back and leave a star rating and review. I would love to hear what you thought! Happy Cooking! ~Katie

Print
2F8

Creamy Healthy Pasta Salad


5 Stars 4 Stars 3 Stars 2 Stars 1 Star

No reviews

  • Author: Katie Webster
  • Healthy Eating Total Time: 35 minutes
  • JSON Yield: 10 cups
window.location.search Print Recipe
www.healthyseasonalrecipes.com/wp-admin/admin-ajax.php 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

When you want a classic tasting deliciously creamy pasta salad, but you’re hoping to skip the excess calories, turn to this blue ribbon recipe! This healthy pasta salad is made with loads of fresh vegetables and a zippy Greek yogurt dressing.


Ingredients

Units
  • 1 pound pasta
  • 2 cups tiny broccoli florets
  • 1 cup plain Greek yogurt or light sour cream
  • 1/2 cup mayonnaise
  • 2 tablespoons white wine vinegar
  • 1 tablespoon coarse grain or brown deli mustard
  • 2 teaspoons agave, honey or sugar
  • 2 teaspoons chopped tarragon or dill
  • 1 1/4 teaspoon salt, or to taste
  • 1/2 teaspoon freshly ground pepper
  • 2 green onions or 1 shallot, minced
  • 1 1/2 cups diced bell peppers, any color or a blend
  • 3/4 cup frozen sweet peas, thawed
  • 1/4 cup sliced ripe black olives
  • 3 strips crumbled cooked bacon, optional

Instructions

Bring a large pot of generously salted water to a boil. Add pasta, stir well and set a timer for 1 minute less than the package instructions indicate for al dente. Add broccoli and cook for 1 minute. Drain well and rinse with cold water.

Whisk yogurt (or sour cream), mayonnaise, vinegar, mustard, agave, herb, salt and pepper.

Add the drained pasta and broccoli, green onion (or shallot), bell pepper, peas, olives and bacon (if using) to the dressing and toss to combine. Serve immediately or chill.

Notes

    • Make Ahead: It can be made ahead 2 days in advance. If prepping further ahead, up to4 days, mix the pasta with the dressing but keep the stir-ins and veggies separate. Taste and adjust seasoning before serving.

    • To Store: Cover the bowl with plastic wrap or foil or transfer to a resealable container. Keep refrigerated.

    • Leftovers can be enjoyed for up to four days. 

  • Healthy EatingPrep Time: 20 minutes
  • Healthy EatingCook Time: 10 minutes
  • Healthy EatingCategory: Side Dish
  • JSONMethod: Stove Top
  • window.location.searchCuisine: American

Nutrition

  • Serving Size: 1 cup
  • Calories: 288
  • Sugar: 5 g
  • Sodium: 413
  • Fat: 11 g
  • Carbohydrates: 38 g
  • Fiber: 3 g
  • Protein: 10 g
window.trCommon={“minRating”:6,”ajaxurl”:”https://www.healthyseasonalrecipes.com/wp-admin/admin-ajax.php”,”ratingNonce”:””,”postId”:66192}; window.TastyRecipes = window.TastyRecipes || {}; window.TastyRecipes.smoothScroll = { init() { window.addEventListener( ‘click’, e => { let anchor = e.target; if ( ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) { if ( anchor.tagName === ‘A’ ) { return; } anchor = anchor.closest( ‘a’ ); 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’ } ); history.pushState( {}, ”, selector ); } }; (function( callback ) { if ( document.readyState !== ‘loading’ ) { callback(); } else { window.addEventListener( ‘load’, callback ); } })(() => { 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 = .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%%22%2C%22%E2%85%9C%22%3A%223%%22%2C%22%E2%85%9D%22%3A%225%%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( ); 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-convert-button’, buttonActiveClass = ‘tasty-recipes-convert-button-active’, buttons = document.querySelectorAll(‘.tasty-recipes-convert-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 unitType = button.dataset.unitType; var dataset = ‘nf’ + unitType.charAt(0).toUpperCase() + unitType.slice(1); var convertables = recipe.querySelectorAll(‘span[data-nf-original]’); convertables.forEach(function(convertable){ if (typeof convertable.dataset.amountOriginalType === ‘undefined’ && ‘usc’ === convertable.dataset.nfOriginal) { if (-1 !== convertable.innerText.indexOf(‘/’)) { convertable.dataset.amountOriginalType = ‘frac’; } if (-1 !== convertable.innerText.indexOf(‘.’)) { convertable.dataset.amountOriginalType = ‘number’; } Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) { if (-1 !== convertable.innerText.indexOf(vulgar)) { convertable.dataset.amountOriginalType = ‘vulgar’; } }); } convertable.innerText = convertable.dataset[dataset]; if (typeof convertable.dataset.unit !== ‘undefined’) { convertable.dataset.unit = convertable.dataset[dataset + ‘Unit’]; } if (typeof convertable.dataset.amount !== ‘undefined’) { convertable.dataset.amount = convertable.dataset[dataset]; if (‘metric’ === unitType) { convertable.dataset.amountShouldRound = parseInt(convertable.dataset.amount) >= 10 ? ‘integer’ : ‘number’; } else if (typeof convertable.dataset.amountOriginalType !== ‘undefined’) { convertable.dataset.amountShouldRound = convertable.dataset.amountOriginalType; } else { convertable.dataset.amountShouldRound = false; } convertable.innerText = window.tastyRecipesFormatAmount(convertable.dataset[dataset], convertable); } if (convertable.classList.contains(‘nutrifox-unit’)) { if (‘gram’ === convertable.dataset[dataset]) { convertable.innerText = ‘grams’; } } }); document.querySelectorAll(‘.tasty-recipes-scale-button-active’).forEach(function(scaleButton){ scaleButton.click(); }); 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 ); });

Original source: https://www.healthyseasonalrecipes.com/creamy-healthy-pasta-salad/

You May Also Like