If you’re looking for a show-stopping appetizer that’s as easy to make as it is delicious, the Grilled Peach and Burrata Crostini is your answer. This delightful dish combines the sweetness of grilled peaches with the creamy richness of burrata cheese, creating a perfect balance of flavors that will impress your guests at any gathering. Whether you’re hosting a summer BBQ, a cozy family get-together, or an elegant dinner party, this crostini will be a hit on your table.

What makes this recipe extra special is its vibrant presentation and the way each bite bursts with flavor. It’s not just about eating; it’s about enjoying the moment with friends and family. Plus, it requires minimal prep time—allowing you to savor every delightful moment of your occasion!


Why You’ll Love This Recipe
- Quick and Easy: With just 20 minutes from start to finish, you’ll have a stunning appetizer ready in no time!
- Fresh and Flavorful: The combination of grilled peaches and creamy burrata creates a refreshing taste that’s perfect for warm summer days.
- Impressive Presentation: This dish not only tastes amazing but also looks beautiful on any platter—perfect for impressing your guests.
- Versatile Serving: Great for casual gatherings or fancy dinners, making it a go-to recipe for any occasion.
- Make-Ahead Friendly: Prep some components in advance so you can enjoy more time with loved ones.
Ingredients You’ll Need
To create this delicious Grilled Peach and Burrata Crostini, you’ll need simple, wholesome ingredients that come together beautifully. Let’s gather what we need!
For the Crostini
- 1 crusty baguette, sliced into 1-inch pieces
- 2 ripe peaches, halved and pitted
- 8 oz high-quality burrata cheese
- 2 tbsp balsamic glaze
- Fresh basil leaves for garnish
- 2 tbsp extra virgin olive oil
- Salt and pepper to taste
Variations
This recipe is wonderfully flexible! Feel free to get creative based on what you have at home or your personal taste preferences.
- Swap the cheese: Instead of burrata, try using creamy goat cheese for a tangy twist.
- Add some crunch: Incorporate a sprinkle of chopped nuts like pistachios or walnuts for added texture.
- Mix up the fruit: Substitute peaches with grilled figs or nectarines for a unique flavor profile.
- Make it vegan: Swap out the burrata for a plant-based cream cheese alternative to cater to vegan diets.
How to Make Grilled Peach and Burrata Crostini
Step 1: Prepare Your Grill
First things first! Preheat your grill to medium-high heat. This step is crucial because it ensures that both the peaches and baguette slices get those lovely grill marks while achieving that delicious caramelization.
Step 2: Brush the Baguette Slices
Take those beautiful baguette slices and brush each side with extra virgin olive oil. This not only adds flavor but also helps them crisp up nicely on the grill—perfect for holding all those toppings without getting soggy.
Step 3: Grill the Peaches
Place the peach halves cut-side down on the grill. Grill them for about 3-4 minutes until they develop those gorgeous caramelized lines. This brings out their natural sweetness and enhances their flavor!
Step 4: Grill the Baguette Slices
Now, it’s time to grill those baguette slices! Place them on the grill for about 2-3 minutes on each side until they turn crisp and golden brown. Keep an eye on them; we want them perfectly toasted!
Step 5: Assemble Your Crostini
Spread generous amounts of burrata cheese over each grilled baguette slice. Top them off with those luscious grilled peach halves, then drizzle everything with balsamic glaze for that sweet-tangy kick.
Step 6: Garnish and Serve
Finish off by garnishing with fresh basil leaves, adding a pop of color and flavor. Season lightly with salt and pepper before serving. Your Grilled Peach and Burrata Crostini are now ready to wow your guests! Enjoy every delightful bite while basking in compliments!
Pro Tips for Making Grilled Peach and Burrata Crostini
Making the perfect Grilled Peach and Burrata Crostini is all about the details! Here are some tips to ensure your dish shines:
- Choose ripe peaches: Selecting perfectly ripe peaches enhances the sweetness and flavor, making your crostini even more delicious.
- Use quality burrata cheese: High-quality burrata has a creamier texture and richer flavor, elevating your appetizer to restaurant-quality.
- Don’t skip the balsamic glaze: A drizzle of balsamic glaze adds a tangy sweetness that perfectly complements the grilled peaches and creamy burrata.
- Grill with care: Keep an eye on the grill to prevent burning; you want those lovely grill marks without charring the bread or fruit.
- Serve immediately: These crostini are best enjoyed fresh off the grill for that delightful crunch and warm flavors.
How to Serve Grilled Peach and Burrata Crostini
Presentation can elevate any dish, and your Grilled Peach and Burrata Crostini is no exception! Here are some creative serving ideas:
Garnishes
- Fresh mint leaves: A sprinkle of fresh mint adds a refreshing touch that contrasts beautifully with the sweetness of the peaches.
- Chopped nuts: Toasted almonds or walnuts can provide an extra layer of crunch and richness, enhancing the overall texture.
Side Dishes
- Arugula salad: A simple arugula salad with lemon vinaigrette offers a peppery bite that complements the sweet crostini beautifully.
- Grilled vegetables: Zucchini, bell peppers, or asparagus tossed in olive oil and grilled make for a colorful, healthy side that pairs well.
- Caprese salad skewers: Cherry tomatoes, basil, and mozzarella drizzled with olive oil bring together fresh flavors that echo those in your main dish.
- Quinoa salad: A light quinoa salad with cucumbers and feta cheese not only adds nutrition but also balances out the creamy richness of the crostini.
Make Ahead and Storage
Grilled Peach and Burrata Crostini is perfect for meal prep and entertaining. You can easily prepare some components in advance, allowing you to enjoy this delicious appetizer with minimal effort on the day of your gathering.
Storing Leftovers
- Store any leftover crostini in an airtight container in the refrigerator.
- It’s best to consume leftovers within 1-2 days for optimal freshness.
- Keep the grilled peaches separate from the crostini to maintain their texture.
Freezing
- While it’s not ideal to freeze assembled crostini, you can freeze grilled peach halves.
- Place them in a single layer on a baking sheet to freeze, then transfer to a freezer-safe bag for up to 3 months.
- Thaw the peaches in the refrigerator before using them again.
Reheating
- To reheat grilled peaches, place them in a skillet over medium heat for a few minutes until warmed through.
- Avoid reheating assembled crostini as it can make the bread soggy; they are best enjoyed cold or at room temperature.
FAQs
Can I make Grilled Peach and Burrata Crostini ahead of time?
Absolutely! You can prepare the grilled peaches and toasted baguette slices ahead of time. Assemble just before serving for the best flavor and texture.
What can I substitute for burrata cheese in Grilled Peach and Burrata Crostini?
If burrata isn’t available, creamy goat cheese is a delightful alternative that pairs beautifully with grilled peaches.
How long do Grilled Peach and Burrata Crostini last?
Leftover crostini should be eaten within 1-2 days when stored properly in the refrigerator. Enjoy them cold for the best experience!
Final Thoughts
Grilled Peach and Burrata Crostini is such a special dish that combines sweetness, creaminess, and crunch in every bite. I hope you’ll enjoy making it as much as I do! It’s perfect for gatherings or an indulgent snack at home. Don’t hesitate to share your thoughts once you’ve tried this recipe—happy cooking!
Grilled Peach and Burrata Crostini
Grilled Peach and Burrata Crostini is a stunning appetizer that perfectly marries the sweetness of grilled peaches with the creamy richness of burrata cheese. This dish not only tantalizes your taste buds but also adds a vibrant touch to any gathering, whether it’s a summer BBQ or an elegant dinner party. With its quick preparation time and impressive presentation, these crostini are sure to be the highlight of your table. Each bite bursts with flavor, allowing you to savor moments with friends and family while delighting in this easy-to-make, gourmet snack.
- Prep Time: 10 minutes
- Cook Time: 10 minutes
- Total Time: 20 minutes
- Yield: Serves approximately 8 crostini 1x
- Category: Appetizer
- Method: Grilling
- Cuisine: Italian
Ingredients
Scale
- 1 crusty baguette, sliced into 1-inch pieces
- 2 ripe peaches, halved and pitted
- 8 oz high-quality burrata cheese
- 2 tbsp balsamic glaze
- Fresh basil leaves for garnish
- 2 tbsp extra virgin olive oil
- Salt and pepper to taste
Instructions
- Preheat your grill to medium-high heat.
- Brush both sides of the baguette slices with extra virgin olive oil.
- Grill peach halves cut-side down for about 3-4 minutes until caramelized.
- Grill baguette slices for about 2-3 minutes on each side until crisp and golden.
- Spread burrata cheese on each grilled slice, top with grilled peach halves, and drizzle with balsamic glaze.
- Garnish with fresh basil leaves and season lightly with salt and pepper before serving.
Nutrition
- Serving Size: 1 crostini (approx. 50g)
- Calories: 150
- Sugar: 5g
- Sodium: 220mg
- Fat: 9g
- Saturated Fat: 2g
- Unsaturated Fat: 7g
- Trans Fat: 0g
- Carbohydrates: 14g
- Fiber: 1g
- Protein: 5g
- Cholesterol: 0mg
window.trCommon={“minRating”:6,”ajaxurl”:”https:\/\/www.familytableideas.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”eb851911a6″,”postId”:4208};
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