If you’re looking for a dish that’s as comforting as it is delicious, let me introduce you to my beloved Creamy Caesar Pasta Salad. This recipe is a wonderful blend of creamy dressing, crunchy chickpeas, and fresh arugula, making it a perfect choice for any occasion. Whether you’re prepping for a busy weeknight dinner or need something special for a family gathering, this pasta salad has got you covered!

What makes this recipe truly special is its versatility. You can easily customize it with your favorite toppings or swap in seasonal ingredients. Trust me, once you try this creamy delight, it will quickly become a go-to in your kitchen!


Why You’ll Love This Recipe
- Quick and Easy: This dish comes together in just 40 minutes, making it ideal for busy days.
- Family-Friendly: Kids and adults alike will love the creamy dressing and crispy chickpeas.
- Make-Ahead Convenience: Perfect for meal prep! You can whip it up ahead of time and enjoy it throughout the week.
- Delicious Flavor: The combination of roasted chickpeas and fresh arugula adds a delightful crunch to every bite.
Ingredients You’ll Need
Gathering these simple, wholesome ingredients is half the fun! You’ll find everything you need to create a vibrant Creamy Caesar Pasta Salad right here.
For the Pasta Salad
- 8 oz short pasta (rotini, penne, or bowtie)
- 1 15 oz can chickpeas, drained and rinsed
- 2 tbsp olive oil
- 2 cups fresh arugula
- 1 1/2 cups Caesar dressing (store-bought or homemade)
- 1/4 cup shaved Parmesan cheese
- Salt and pepper (to taste)
- Cherry tomatoes, halved
- Grilled chicken, sliced (optional)
- Avocado, diced (optional)
Variations
This Creamy Caesar Pasta Salad is so flexible! Feel free to mix things up based on what you have on hand or what you’re in the mood for.
- Swap the protein: Replace grilled chicken with tofu or shrimp for different flavors.
- Add some crunch: Toss in some nuts or seeds like sunflower seeds or almonds for an extra texture boost.
- Go veggie: Add more veggies such as bell peppers or cucumbers to give it a fresh twist.
- Change the greens: If arugula isn’t your favorite, spinach or kale works wonderfully too!
How to Make Creamy Caesar Pasta Salad
Step 1: Roast the Chickpeas
Preheat the oven to 400°F. Start by patting dry the chickpeas with a clean towel. Toss them with olive oil, salt, and pepper before spreading them on a baking sheet. Roasting them until golden and crispy (about 20-25 minutes) adds that fabulous crunch that elevates this pasta salad.
Step 2: Cook the Pasta
Bring a large pot of salted water to a boil. Cook your chosen pasta following package instructions until al dente. After draining the pasta, toss in a few ice cubes into the colander with hot pasta—this quick cooling method helps keep your pasta from getting mushy later on!
Step 3: Prepare the Dressing
If your Caesar dressing feels thicker than you’d like, add just a splash of lemon juice or white vinegar. This little trick helps to thin it out while enhancing its bright flavors.
Step 4: Combine Ingredients
In a large mixing bowl, combine your cooled pasta with the Caesar dressing until every piece is evenly coated. Gently fold in those wonderfully crispy roasted chickpeas and fresh arugula—this step ensures each bite bursts with flavor.
Step 5: Serve It Up!
Top your salad with crumbled croutons for added crunch. Finish by sprinkling shaved Parmesan over everything. If you’re feeling adventurous, add cherry tomatoes or grilled chicken for extra flavor! Serve chilled or at room temperature for a delightful dish that everyone will love.
Enjoy creating your own version of this Creamy Caesar Pasta Salad! I can’t wait for you to taste how delicious it is!
Pro Tips for Making Creamy Caesar Pasta Salad
Creating the perfect creamy Caesar pasta salad is all about combining flavors and textures, and these tips will help you achieve just that!
Use high-quality dressing: A delicious Caesar dressing can make or break your salad. Opt for a store-bought brand known for its flavor or try making your own to ensure freshness.
Don’t skip the ice bath: Cooling your pasta quickly helps maintain its texture and prevents it from becoming mushy. The ice bath also keeps it from clumping together when added to the salad.
Customize your toppings: Feel free to experiment with different toppings such as grilled shrimp, roasted vegetables, or nuts. This adds variety and can cater to different dietary preferences.
Make it ahead of time: This dish tastes even better when it has time to sit and let the flavors meld together. Prepare it a few hours in advance for the best results.
Adjust seasoning to taste: Depending on the dressing used, you may need to adjust the salt and pepper levels. Always taste before serving!
How to Serve Creamy Caesar Pasta Salad
This creamy Caesar pasta salad is not only delicious but also visually appealing. It can be served in various ways, making it a great centerpiece for gatherings or a delightful addition to any meal.
Garnishes
- Fresh herbs: Chopped parsley or basil can add a pop of color and fresh flavor that brightens up the dish.
- Extra cheese: A sprinkle of additional shaved Parmesan or nutritional yeast enhances the cheesy flavor while adding an attractive finish.
- Lemon wedges: Placing lemon wedges on the side allows guests to squeeze fresh juice over their servings, offering a zesty lift.
Side Dishes
- Grilled Vegetable Platter: A colorful assortment of seasonal vegetables grilled to perfection adds a smoky element that complements the salad beautifully.
- Garlic Bread: Crispy garlic bread is always a crowd-pleaser, providing satisfying crunch and savory flavors that pair well with creamy pasta dishes.
- Cucumber Salad: A refreshing cucumber salad with a light vinaigrette balances out the richness of the pasta salad, making for a harmonious meal.
- Quinoa Salad: Packed with protein and fiber, a quinoa salad tossed with veggies and lemon dressing offers a nutritious side that’s both filling and healthy.
Now you’re ready to enjoy this creamy Caesar pasta salad at your next gathering! Whether it’s for potlucks, family dinners, or meal prep, this dish will surely be a hit. Happy cooking!
Make Ahead and Storage
This Creamy Caesar Pasta Salad is perfect for meal prep, making it easy to enjoy delicious, healthy meals throughout the week. You can prepare it in advance and store it in your refrigerator, ensuring you have a delightful dish ready whenever you need it.
Storing Leftovers
- Store any leftover pasta salad in an airtight container in the refrigerator.
- Consume within 3-4 days for the best flavor and freshness.
- If possible, keep the toppings (like croutons) separate until you’re ready to eat to maintain their crunch.
Freezing
- This pasta salad is not ideal for freezing due to the creamy dressing and fresh ingredients.
- However, if you need to freeze it, omit the arugula and toppings before freezing.
- Place in a freezer-safe container and consume within 1 month for best quality.
Reheating
- If you’ve stored leftovers, simply let them sit at room temperature for about 15 minutes before serving.
- Avoid reheating in the microwave as it may affect the texture of the pasta and dressing.
- Serve chilled or at room temperature for optimal taste.
FAQs
Here are some common questions about making this Creamy Caesar Pasta Salad.
Can I make Creamy Caesar Pasta Salad ahead of time?
Yes! This salad is perfect for making ahead. Just store it in an airtight container in the fridge. It’s great for meal prep!
What are some good toppings for Creamy Caesar Pasta Salad?
You can add grilled chicken, cherry tomatoes, diced avocado, or even extra crispy chickpeas for a delightful crunch!
Is there a way to make this recipe vegan?
Absolutely! Simply swap out the Parmesan cheese with a plant-based alternative and use vegan Caesar dressing.
How do I keep my Creamy Caesar Pasta Salad from getting soggy?
To prevent sogginess, store the dressing separately until you’re ready to serve. Combine right before eating for the freshest taste!
Final Thoughts
I hope you find joy in preparing this Creamy Caesar Pasta Salad! It’s not only quick and simple but also bursting with flavors that everyone will love. Whether you’re serving it at a gathering or enjoying it solo during lunch, it’s sure to bring a smile to your face. Happy cooking!
Salad
nnn
Why You’ll Love This Recipe
This Creamy Caesar Pasta Salad is a delightful twist on the classic Caesar salad, marrying the comforting texture of pasta with the rich, tangy flavors of Caesar dressing. It’s packed with protein from chickpeas, and the crispy roasted garbanzos add a satisfying crunch. With fresh arugula and optional toppings like grilled chicken and avocado, this dish is not only delicious but also versatile and perfect for any occasion!
Ingredients You’ll Need
- 8 oz short pasta (rotini, penne, or bowtie)
- 1 15 oz can chickpeas, drained and rinsed
- 2 tbsp olive oil
- 2 cups fresh arugula
- 1 1/2 cups Caesar dressing (store-bought or homemade)
- 1/4 cup shaved Parmesan cheese
- Salt and pepper (to taste)
- Cherry tomatoes (halved, optional)
- Grilled chicken (sliced, optional)
- Avocado (diced, optional)
Variations
- Pasta Choices: Feel free to swap the short pasta for whole wheat or gluten-free pasta to suit your dietary needs.
- Add Proteins: Incorporate diced tofu or shrimp for a different protein option.
- Veggie Boost: Toss in other vegetables like bell peppers, cucumbers, or red onions for extra crunch and flavor.
- Herb Infusion: Add fresh herbs like basil or parsley for a refreshing touch.
How to Make
- Preheat the oven to 400°F. Pat the chickpeas dry with a clean towel, then toss them with olive oil, salt, and pepper. Spread them out on a baking sheet and roast for 20-25 minutes, shaking the pan halfway, until golden and crispy.
- Bring a large pot of salted water to a boil. Cook the pasta according to the package instructions. Drain, then toss a few ice cubes into the colander with the hot pasta. Stir gently until the ice melts, cooling the pasta quickly. Set aside to cool completely.
- If the Caesar dressing feels too thick, stir in a splash of lemon juice or white vinegar to thin it out.
- In a large mixing bowl, toss the cooled pasta with the Caesar dressing until evenly coated. Add the roasted chickpeas and arugula, folding gently to combine.
- Sprinkle crumbled croutons on top for added crunch. Finish with shaved Parmesan and any optional toppings, like cherry tomatoes or grilled chicken. Serve chilled or at room temperature.
Pro Tips
- Chill the Pasta: Make sure the pasta is completely cooled before mixing with the dressing to prevent it from becoming soggy.
- Make it Ahead: Prepare the roasted chickpeas and pasta the day before to save time.
- Taste Test: Adjust the seasoning with additional salt, pepper, or Parmesan cheese according to your preference.
How to Serve
Serve this Creamy Caesar Pasta Salad in a large bowl for sharing, or portion it into individual bowls for a more formal presentation. It pairs beautifully with grilled meats or as a standalone dish for a light lunch or dinner.
Make Ahead and Storage
This pasta salad can be made ahead of time and stored in the refrigerator for up to 3 days. Keep the roasted chickpeas separate until serving to maintain their crunch. If the salad thickens in the fridge, simply add a splash of water or extra dressing before serving.
FAQs
Can I use homemade Caesar dressing?
Absolutely! Homemade dressing can add a personal touch and allows you to control the flavors.
Is this recipe vegan?
You can make it vegan by omitting the Parmesan cheese and using a vegan Caesar dressing.
Can I freeze this pasta salad?
It’s not recommended to freeze this salad as the pasta and dressing can change texture once thawed.
Final Thoughts
This Creamy Caesar Pasta Salad is a fantastic dish that combines the best of both worlds: the heartiness of pasta and the refreshing taste of Caesar salad. Whether you’re serving it at a gathering or enjoying it as a meal prep option, it’s sure to become a favorite! Enjoy every creamy, crunchy bite!
Creamy Caesar Pasta Salad
Indulge in the comforting flavors of our Creamy Caesar Pasta Salad, a delightful blend of hearty pasta, crispy roasted chickpeas, and peppery arugula. This dish brings a modern twist to the classic Caesar salad while being entirely adaptable to your taste preferences. Perfect for busy weeknights or family gatherings, this pasta salad is not only delicious but also quick to prepare. With creamy dressing enveloping every bite and optional toppings like grilled chicken or avocado for added nutrients, it’s sure to please everyone at the table. Plus, it’s great for meal prep—make it ahead and enjoy it throughout the week!
- Prep Time: 15 minutes
- Cook Time: 25 minutes
- Total Time: 40 minutes
- Yield: Serves 4
- Category: Main
- Method: Baking
- Cuisine: American
Ingredients
Scale
- 8 oz short pasta (rotini, penne, or bowtie)
- 1 15 oz can chickpeas, drained and rinsed
- 2 tbsp olive oil
- 2 cups fresh arugula
- 1 ½ cups Caesar dressing (store-bought or homemade)
- ¼ cup shaved Parmesan cheese
- Salt and pepper (to taste)
- Cherry tomatoes (halved, optional)
- Grilled chicken (sliced, optional)
- Avocado (diced, optional)
Instructions
- Preheat oven to 400°F. Pat chickpeas dry with a towel, toss with olive oil, salt, and pepper. Roast on a baking sheet for 20-25 minutes until golden and crispy.
- Boil salted water in a large pot. Cook pasta according to package instructions until al dente, then drain. Toss with ice cubes in the colander to cool quickly.
- If needed, thin your Caesar dressing with lemon juice or white vinegar.
- In a large bowl, combine cooled pasta with Caesar dressing until coated. Gently fold in roasted chickpeas and arugula.
- Top with croutons, shaved Parmesan, and any additional toppings like cherry tomatoes or grilled chicken.
Nutrition
- Serving Size: 1 cup (240g)
- Calories: 380
- Sugar: 3g
- Sodium: 640mg
- Fat: 16g
- Saturated Fat: 3g
- Unsaturated Fat: 11g
- Trans Fat: 0g
- Carbohydrates: 51g
- Fiber: 9g
- Protein: 14g
- Cholesterol: 10mg
window.trCommon={“minRating”:6,”ajaxurl”:”https:\/\/www.weekmealideas.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”15f0a86e7e”,”postId”:4759};
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 );
});



Leave a Comment