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

Tasty Daily Home

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

Tasty Daily Home

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

Raspberry Passionfruit agave syrup Sour

Jump to Recipe·Print Recipe

If you’re looking for a refreshing drink that bursts with flavor, the Raspberry Passionfruit agave syrup Sour is just what you need! This vibrant concoction blends the tangy notes of passionfruit with the sweet tartness of raspberry, all sweetened gently with agave syrup. It’s become a favorite of mine for both casual family gatherings and those special occasions when you want to impress your friends. Plus, it’s quick to whip up, making it perfect for busy weeknights or leisurely weekends.

Raspberry Passionfruit agave syrup Sour image 2

What I love most about this recipe is how it brings a taste of summer to any day, no matter the season. With its deliciously fruity profile and luscious foam topping, each sip feels like a mini-vacation in a glass!

Raspberry Passionfruit agave syrup Sour image 3
Raspberry Passionfruit agave syrup Sour image 4

Why You’ll Love This Recipe

  • Quick and Easy: With just a few minutes of prep time, you can create a delightful drink that looks as good as it tastes.
  • Family-Friendly Appeal: The fruity flavors are sure to please everyone in the family, making it perfect for gatherings.
  • Make-Ahead Convenience: You can prepare the raspberry syrup ahead of time, allowing for easy assembly when guests arrive.
  • Customizable Garnishes: Fresh raspberries and lime wedges add a personal touch that elevates your drink’s presentation.

Ingredients You’ll Need

These simple and wholesome ingredients come together to create this delightful drink. You might already have some of them in your kitchen!

  • 2 oz agave syrup (silver or blanco)
  • 1 oz passionfruit juice
  • 1 oz raspberry syrup (store-bought or homemade)
  • 3/4 oz freshly squeezed lime juice
  • 1/2 oz simple syrup (optional, to taste)
  • 1 egg white (or 1 oz aquafaba for a vegan option)
  • Ice (for shaking)
  • Fresh raspberries and lime wedges (for garnish)

Variations

This recipe is wonderfully flexible, allowing you to tailor it to your taste preferences or dietary needs. Here are some fun variations to try:

  • Make it Vegan: Swap out the egg white for aquafaba, which will still give you that lovely frothy texture without any animal products.
  • Add Some Spice: Incorporate a dash of cayenne pepper or chili powder for a spicy-sweet twist that adds an exciting kick.
  • Berry Blend: Experiment by adding other berries like blackberries or blueberries into the mix for a different flavor profile.
  • Tropical Twist: Replace passionfruit juice with mango juice for an even more tropical vibe.

How to Make Raspberry Passionfruit agave syrup Sour

Step 1: Juice Your Lime

Start by juicing your fresh lime. Fresh lime juice adds brightness to this cocktail and balances out the sweetness from the syrups. Measure out your agave syrup, passionfruit juice, raspberry syrup, and any optional simple syrup while you’re at it!

Step 2: Prepare Raspberry Syrup (if using homemade)

If you’re making your own raspberry syrup, simply simmer together ½ cup of raspberries, ½ cup of sugar, and ½ cup of water until it thickens. Strain and let cool before using. This homemade version adds an extra layer of freshness that’s hard to beat!

Step 3: Combine Ingredients in Shaker

In a cocktail shaker, combine the agave syrup, passionfruit juice, raspberry syrup, lime juice, and either egg white or aquafaba. This step ensures all those delicious flavors meld together beautifully.

Step 4: Emulsify for Frothiness

Shake vigorously without ice for about 15-20 seconds. This emulsification process is key—it helps create that frothy texture we all love in cocktails!

Step 5: Shake with Ice

Now add ice to your shaker and shake again for another 15-20 seconds. This chills the drink while also diluting it slightly for that perfect smooth sip.

Step 6: Double-Strain into Glass

Double-strain the mixture into a chilled coupe or martini glass. This step is crucial as it ensures you have a silky finish by removing any pulp or bits of ice.

Step 7: Garnish and Enjoy!

Top off your drink with fresh raspberries and a lime wedge or grated lime zest for added visual appeal. Take a moment to admire your handiwork before taking that first delicious sip—it’s all about savoring life’s little pleasures!

Pro Tips for Making Raspberry Passionfruit agave syrup Sour

Creating the perfect Raspberry Passionfruit agave syrup Sour is all about attention to detail. Here are some tips to elevate your cocktail experience:

  • Use fresh ingredients: Freshly squeezed lime juice and ripe raspberries will enhance the flavor profile, making your drink taste vibrant and refreshing.

  • Proper shaking technique: Shake your cocktail vigorously without ice first to emulsify the egg white (or aquafaba) properly. This step ensures a beautiful frothy top, giving your drink that luxurious texture.

  • Double-strain for smoothness: Using a fine mesh strainer while pouring your cocktail helps remove any pulp or ice shards, resulting in a silky-smooth finish that’s pleasing to sip.

  • Chill your glassware: Pre-chill your coupe or martini glass in the freezer for a few minutes. A cold glass keeps your cocktail chilled longer and enhances the overall drinking experience.

  • Experiment with sweetness: Adjust the amount of simple syrup based on your taste preference. Keep in mind that different brands of raspberry syrup may vary in sweetness, so taste as you go!

How to Serve Raspberry Passionfruit agave syrup Sour

Serving your Raspberry Passionfruit agave syrup Sour is not just about taste; it’s also about presentation! Here are some ideas to make it visually appealing:

Garnishes

  • Fresh Raspberries: A few whole raspberries on top add a pop of color and highlight the berry flavors in the drink.
  • Lime Wedges: A wedge on the rim of the glass not only looks beautiful but also offers an easy way for guests to adjust their drink’s tartness.
  • Grated Lime Zest: Sprinkling some zest over the foam adds an aromatic touch that complements the citrus notes beautifully.

Side Dishes

  • Tropical Fruit Salad: A mix of mango, pineapple, and kiwi adds a refreshing contrast to the drink’s sweetness and enhances its tropical vibe.
  • Savory Avocado Toast: Topped with cherry tomatoes and microgreens, this dish provides a creamy, savory balance to the fruity cocktail.
  • Spicy Fish Tacos: The zesty flavors of fish tacos pair beautifully with the sour notes in the drink, creating a delightful culinary experience.
  • Crispy Vegetable Spring Rolls: These light and crunchy rolls offer a satisfying texture that complements the drink without overpowering its flavors.

Make Ahead and Storage

This Raspberry Passionfruit agave syrup Sour is perfect for meal prep, allowing you to enjoy this delightful drink anytime. Here’s how to store and manage your ingredients effectively:

Storing Leftovers

  • Keep any leftover raspberry syrup in an airtight container in the refrigerator for up to a week.
  • The agave syrup and passionfruit juice can also be stored in the fridge for several weeks.
  • If you have mixed the drink but not used it all, store it covered in the fridge and consume within 24 hours for the best taste.

Freezing

  • You can freeze leftover raspberry syrup in ice cube trays. Once frozen, transfer the cubes to a zip-top bag for easy access later.
  • The egg white or aquafaba cannot be frozen, so it’s best to prepare that fresh when you’re ready to make your drink.

Reheating

  • For any syrups you’ve stored, simply let them sit at room temperature or warm them slightly in a microwave before use.
  • Do not reheat blended drinks; it’s best to prepare them fresh each time for optimal flavor and texture.

FAQs

Here are some common questions about the Raspberry Passionfruit agave syrup Sour:

Can I use frozen raspberries for the Raspberry Passionfruit agave syrup Sour?

Absolutely! Frozen raspberries can be used to make raspberry syrup just as effectively as fresh ones. Just remember to thaw them before cooking down with sugar and water.

Is the Raspberry Passionfruit agave syrup Sour vegan-friendly?

Yes! By using aquafaba instead of egg whites, this recipe is completely vegan-friendly while still providing that lovely foam topping.

How long does it take to make Raspberry Passionfruit agave syrup Sour?

This refreshing cocktail takes only about 10 minutes from start to finish, making it an ideal choice for quick gatherings or spontaneous cocktail hours.

Can I adjust the sweetness of my Raspberry Passionfruit agave syrup Sour?

Definitely! Feel free to tweak the amount of simple syrup or agave syrup based on your personal taste preferences.

What should I garnish my Raspberry Passionfruit agave syrup Sour with?

Fresh raspberries and lime wedges are perfect garnishes that not only enhance the visual appeal but also add a burst of freshness!

Final Thoughts

I truly hope you enjoy making this vibrant Raspberry Passionfruit agave syrup Sour! This cocktail captures a delightful blend of flavors that’s perfect for any occasion. Remember, experimenting with flavors is part of the fun—so don’t hesitate to make it your own. Cheers to creating wonderful memories with every sip!

Print

Raspberry Passionfruit agave syrup Sour

Print Recipe

5 Stars 4 Stars 3 Stars 2 Stars 1 Star

No reviews

Indulge in the vibrant and refreshing Raspberry Passionfruit agave syrup Sour, a delightful drink that promises to elevate any occasion! This fruity concoction harmonizes the sweet-tart essence of raspberries with the exotic tang of passionfruit, all seamlessly sweetened with agave syrup. Whether you’re hosting a family gathering or simply enjoying a quiet evening at home, this easy-to-make beverage is sure to impress. With its luscious foam topping and colorful presentation, each sip transports you to a sunny paradise, making it a perfect treat for any time of year.

  • Author: Chef Adrian Vale
  • Prep Time: 10 minutes
  • Cook Time: 0 minutes
  • Total Time: 10 minutes
  • Yield: Serves 1 cocktail 1x
  • Category: Cocktail
  • Method: Shaking
  • Cuisine: Modern American

Ingredients


Scale
  • 2 oz agave syrup
  • 1 oz passionfruit juice
  • 1 oz raspberry syrup (store-bought or homemade)
  • 3/4 oz freshly squeezed lime juice
  • 1/2 oz simple syrup (optional)
  • 1 egg white or 1 oz aquafaba (for vegan option)
  • Ice (for shaking)
  • Fresh raspberries and lime wedges (for garnish)


Instructions

  1. Juice the fresh lime and measure out your other ingredients.
  2. If making homemade raspberry syrup, simmer raspberries, sugar, and water until thickened, then strain.
  3. In a cocktail shaker, combine agave syrup, passionfruit juice, raspberry syrup, lime juice, and egg white or aquafaba.
  4. Shake vigorously without ice for about 15-20 seconds to emulsify.
  5. Add ice and shake again for another 15-20 seconds to chill.
  6. Double-strain into a chilled glass to ensure smoothness.
  7. Garnish with fresh raspberries and a lime wedge or grated zest.

Nutrition

  • Serving Size: 1 cocktail
  • Calories: 165
  • Sugar: 25g
  • Sodium: 5mg
  • Fat: 0g
  • Saturated Fat: 0g
  • Unsaturated Fat: 0g
  • Trans Fat: 0g
  • Carbohydrates: 39g
  • Fiber: 1g
  • Protein: <1g
  • 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.tastydailyhome.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”0675c382e4″,”postId”:1555};
window.TastyRecipes = window.TastyRecipes || {};

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

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

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

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

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

(function(){

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

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

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

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

window.tastyRecipesUpdatePrintLink = () => {

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

if ( ! printButton ) {
return;
}

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

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

let unit = ”;
let scale = ”;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

failure( xhr );
};

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

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

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

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

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

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

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

if ( ! data.count ) {
return;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

« Previous Post
Mediterranean Chicken with Lemons and Olives
Next Post »
Impressive Cranberry Brie Stuffed Chicken

If you enjoyed this…

Mini Bunny Cupcakes

Mini Bunny Cupcakes

BBQ Salmon Bowls with Mango Avocado Salsa

BBQ Salmon Bowls with Mango Avocado Salsa

Apple Turkey Burgers

Apple Turkey Burgers

Primary Sidebar

Browse by Diet

HealthyBudgetKetoQuickVeganCheat Meal
  • About
  • Contact
  • DISCLAIMER
  • Homepage
  • PRIVACY POLICY
  • Recipe Index
  • TERMS AND CONDITIONS

© 2026 Tasty Daily Home · All Rights Reserved · Created by Chef Adrian Vale · About · Privacy Policy · Terms & Conditions · Disclaimer · Contact