If you’re looking for a delicious and satisfying meal that brings a little bit of Tex-Mex magic into your kitchen, the Roasted Chile Relleno Quesadilla (with Fajita Veggies) is just what you need! This recipe is a true crowd-pleaser, perfect for busy weeknights or family gatherings. The combination of roasted poblano peppers, vibrant bell peppers, and gooey cheese creates a flavor explosion that your taste buds will thank you for. Plus, it’s quick to whip up, making it a favorite in my household.

What makes this quesadilla extra special is how simple it is to prepare. It’s one of those meals that feels indulgent yet doesn’t require hours of slaving away in the kitchen. Whether you’re serving it as a delightful lunch or a cozy dinner, this dish will surely bring smiles around the table!


Why You’ll Love This Recipe
- Quick and Easy: With just 10 minutes of prep time, you can have this delicious meal ready in under an hour!
- Family Favorite: Kids and adults alike will love the cheesy goodness and colorful veggies.
- Flexible Ingredients: Feel free to swap out veggies based on what you have at home.
- Make Ahead: You can prepare the filling ahead of time and assemble when you’re ready to cook.
- Satisfying Flavor: The roasted peppers combined with melted cheese create an irresistible taste that’s hard to beat.
Ingredients You’ll Need
Gathering these ingredients is half the fun! They are simple and wholesome, ensuring you can make this delightful quesadilla anytime. Here’s what you’ll need:
For the Filling
- 2 poblano peppers
- 1 bell pepper
- 1 medium red onion (thinly sliced)
- 1 garlic clove (finely grated)
- 2 cups shredded Oaxaca cheese
For the Quesadilla
- 2 burrito size flour tortillas
- 1 tbsp butter
- 1 tbsp olive oil
- 1 pinch salt
Variations
One of the best things about this Roasted Chile Relleno Quesadilla (with Fajita Veggies) is its flexibility! Here are some fun variations to try out:
- Add Some Protein: Toss in cooked chicken or black beans for an extra protein boost.
- Spice It Up: Add jalapeños or your favorite hot sauce if you like some heat.
- Change Up the Cheese: Experiment with different cheeses like cheddar or pepper jack for varied flavors.
- Go Vegan: Substitute the cheese with a plant-based alternative and use olive oil instead of butter.
How to Make Roasted Chile Relleno Quesadilla (with Fajita Veggies)
Step 1: Roast the Peppers
Start by roasting your poblano peppers until they’re charred and blistered. This step is crucial because roasting brings out their natural sweetness and adds a smoky flavor that pairs beautifully with the other ingredients. Once roasted, let them cool slightly before peeling off the skin—don’t worry; it’s easier than it sounds!
Step 2: Sauté the Vegetables
In a skillet, heat olive oil over medium heat. Add thinly sliced red onion and bell pepper. Sauté until they are tender and slightly caramelized. This not only enhances their flavor but also adds a lovely texture to your quesadilla.
Step 3: Assemble the Quesadillas
Now comes the fun part! Take one flour tortilla and sprinkle half of it with shredded Oaxaca cheese. Layer on your roasted poblano strips, sautéed vegetables, and then top with more cheese. Fold the tortilla over like a book—this helps keep all those tasty fillings inside!
Step 4: Cook Until Golden
Melt butter in your skillet over medium heat. Place the assembled quesadilla into the pan. Cook until golden brown on each side and the cheese has melted—about 3-4 minutes per side. Keep an eye on it; we want that perfect crispy outer layer!
Step 5: Slice and Serve
Once perfectly golden, take your quesadilla out of the skillet and let it rest for a minute before slicing into wedges. This waiting period helps everything settle nicely so that each bite is filled with cheesy goodness!
And there you have it—a beautiful Roasted Chile Relleno Quesadilla (with Fajita Veggies). Enjoy every bite!
Pro Tips for Making Roasted Chile Relleno Quesadilla (with Fajita Veggies)
Creating the perfect Roasted Chile Relleno Quesadilla is all about those little details that make a big difference. Here are some tips to help you achieve quesadilla perfection!
Choose Fresh Ingredients: Opt for fresh poblano and bell peppers for the best flavor and texture. Fresh veggies will enhance the overall taste of your quesadilla and give it that vibrant, colorful presentation.
Roast Your Peppers: Don’t skip roasting the poblano peppers! This step adds a smoky depth to your dish, making every bite more flavorful. Simply char them over an open flame or under the broiler until their skins are blistered.
Use a Good Quality Cheese: Shredded Oaxaca cheese melts beautifully and gives that gooey texture we love in quesadillas. If you can’t find it, consider using a mix of mozzarella and Monterey Jack for a similar effect.
Don’t Skip the Butter: Sautéing your quesadilla in butter adds richness and helps achieve that crispy, golden-brown exterior. For an extra touch, mix in a little olive oil to prevent burning while cooking.
Allow It to Rest: After cooking, let your quesadilla sit for a minute before cutting it. This helps the cheese set slightly, making it easier to slice without spilling out all that delicious filling.
How to Serve Roasted Chile Relleno Quesadilla (with Fajita Veggies)
Serving your Roasted Chile Relleno Quesadilla can be just as fun as making it! With a few creative touches, you can transform this humble dish into a feast for both the eyes and the palate.
Garnishes
- Fresh Cilantro: A sprinkle of chopped cilantro adds freshness and brightens up the flavors.
- Avocado Slices: Creamy avocado slices provide a rich contrast to the spicy peppers and melted cheese.
- Lime Wedges: A squeeze of lime juice right before digging in enhances all the flavors and adds a zesty kick.
Side Dishes
- Mexican Rice: Fluffy Mexican rice cooked with tomatoes and spices complements the quesadilla beautifully, adding heartiness to your meal.
- Black Beans: A side of seasoned black beans offers protein and fiber while balancing the richness of the quesadilla.
- Guacamole: This classic dip is creamy and flavorful, perfect for scooping alongside each cheesy bite!
- Salsa Fresca: A fresh salsa made from tomatoes, onions, and lime juice adds brightness and crunch, perfectly contrasting with the warm quesadilla.
Enjoy your culinary creation with friends or family—everyone will love this delicious twist on traditional Tex-Mex cuisine!
Make Ahead and Storage
This Roasted Chile Relleno Quesadilla is perfect for meal prep! You can make it ahead of time and enjoy it throughout the week. Here’s how to store your delicious creation properly:
Storing Leftovers
- Allow the quesadillas to cool completely before storing.
- Place them in an airtight container to keep them fresh.
- Store in the refrigerator for up to 3 days.
Freezing
- To freeze, wrap each quesadilla tightly in plastic wrap or foil.
- Place wrapped quesadillas in a freezer-safe bag or container.
- They can be stored in the freezer for up to 2 months.
Reheating
- For best results, reheat in a skillet over medium heat until warmed through and crispy.
- Alternatively, you can microwave for about 1-2 minutes, but this may result in a softer texture.
FAQs
Let’s answer some common questions you might have about this tasty dish!
How do I make Roasted Chile Relleno Quesadilla (with Fajita Veggies) vegan?
To make this recipe vegan, simply replace the cheese with a plant-based cheese alternative and use olive oil instead of butter for sautéing.
Can I customize the filling of my Roasted Chile Relleno Quesadilla (with Fajita Veggies)?
Absolutely! Feel free to add other vegetables like zucchini or mushrooms, or even black beans for extra protein. The possibilities are endless!
What kind of cheese works best for a Roasted Chile Relleno Quesadilla?
Oaxaca cheese is traditional, but you can also use Monterey Jack or a Mexican blend if you can’t find Oaxaca. Just ensure it’s melty and delicious!
Final Thoughts
I truly hope you enjoy making this Roasted Chile Relleno Quesadilla as much as I do! It’s not just a meal; it’s an experience that brings warmth and comfort to any table. Whether you’re preparing it for family or sharing with friends, this recipe is sure to be a hit. Happy cooking!
Tex-Mex Quesadillas
nnn
Why You’ll Love This Recipe
This Roasted Chile Relleno Quesadilla is a delicious twist on a classic dish, combining the smoky, rich flavors of roasted poblanos with the vibrant crunch of fajita veggies. It’s perfect for a quick weeknight dinner or a cozy weekend lunch. With gooey cheese and a crispy tortilla, every bite is a delightful experience. Plus, it’s easy to customize, making it a hit for everyone at the table!
Ingredients You’ll Need
- 2 poblano peppers
- 1 bell pepper
- 1 medium red onion (thinly sliced)
- 1 garlic clove (finely grated)
- 2 cups shredded Oaxaca cheese
- 2 burrito size flour tortillas
- 1 tbsp butter
- 1 tbsp olive oil
- 1 pinch salt
Variations
- Cheese Options: Swap Oaxaca cheese for Monterey Jack or mozzarella for a different flavor.
- Protein Boost: Add grilled chicken, steak, or black beans for added protein.
- Spicy Kick: Toss in some jalapeños or use a spicy cheese blend.
- Veggie Medley: Incorporate other veggies like zucchini or mushrooms for extra nutrition.
How to Make
- Roast the Peppers: Preheat your oven to 400°F (200°C). Place poblano peppers on a baking sheet and roast for 20-25 minutes, turning occasionally until the skin is blistered and charred. Remove from oven and let cool. Peel off the skin, remove seeds, and chop.
- Sauté the Veggies: In a skillet, heat olive oil over medium heat. Add the sliced bell pepper, onion, and grated garlic. Sauté for about 5-7 minutes until the veggies are soft. Season with salt.
- Assemble the Quesadilla: On one tortilla, layer half of the cheese, followed by the roasted poblano, sautéed veggies, and the remaining cheese. Top with the second tortilla.
- Cook the Quesadilla: In the same skillet, melt the butter over medium heat. Carefully place the quesadilla in the skillet and cook for 3-4 minutes on each side until golden brown and the cheese is melted.
- Slice and Serve: Remove from the skillet, let cool slightly, then slice into wedges.
Pro Tips
- Perfectly Roasted Peppers: For an even char, place the poblanos directly on an open flame if you have a gas stove.
- Crispy Tortilla: Ensure your skillet is hot enough before adding the quesadilla for that perfect crispy exterior.
- Cheese Melting: Allow the quesadilla to rest for a minute after cooking to help the cheese set slightly, making it easier to cut.
How to Serve
Serve your Roasted Chile Relleno Quesadilla hot with sides of salsa, guacamole, or sour cream for dipping. Garnish with fresh cilantro or avocado slices for an extra touch!
Make Ahead and Storage
- Make Ahead: You can roast the peppers and sauté the veggies a day in advance. Store them in the refrigerator until ready to assemble the quesadilla.
- Storage: Leftover quesadilla can be stored in an airtight container in the fridge for up to 3 days. Reheat in a skillet for the best texture.
FAQs
- Can I use other types of peppers? Yes! Bell peppers or Anaheim peppers can be great substitutes if you prefer a milder flavor.
- Is this recipe gluten-free? You can make it gluten-free by using corn tortillas instead of flour tortillas.
- Can I freeze the quesadillas? Yes, you can freeze assembled quesadillas. Just make sure to separate them with parchment paper and store them in a freezer-safe bag.
Final Thoughts
This Roasted Chile Relleno Quesadilla with Fajita Veggies is not just a meal; it’s an experience! Whether you’re feeding a crowd or enjoying a quiet night in, this dish is sure to impress. Enjoy the layers of flavor, the satisfying crunch, and the gooey cheese, and don’t forget to share your creations! Happy cooking!

Roasted Chile Relleno Quesadilla (with Fajita Veggies)
Prep Time:
10 minutesCook Time:
20 minutesTotal Time:
30 minutesYield:
Serves 2Category:
MainMethod:
FryingCuisine:
Tex-Mex
Description
If you’re craving a hearty and flavorful meal, look no further than the Roasted Chile Relleno Quesadilla with Fajita Veggies. This delicious dish features roasted poblano peppers and sautéed bell peppers, combined with gooey Oaxaca cheese, all tucked inside a crispy tortilla. Perfect for busy weeknights or casual gatherings, this quesadilla is quick to prepare and can easily be customized to suit your taste. Each bite delivers a satisfying blend of smoky, cheesy goodness that will leave everyone at the table smiling. Serve it with fresh salsa or creamy avocado slices for an extra touch of flavor!
Ingredients
Scale
- 2 poblano peppers
- 1 bell pepper
- 1 medium red onion (thinly sliced)
- 1 garlic clove (finely grated)
- 2 cups shredded Oaxaca cheese
- 2 burrito-sized flour tortillas
- 1 tbsp butter
- 1 tbsp olive oil
- 1 pinch salt
Instructions
- Roast the poblano peppers in an oven preheated to 400°F (200°C) for about 20-25 minutes until the skin is blistered. Let cool, then peel, seed, and chop.
- In a skillet, heat olive oil over medium heat. Add sliced bell pepper, red onion, and grated garlic; sauté for 5-7 minutes until softened. Season with salt.
- On one tortilla, layer half of the cheese, followed by chopped roasted poblano, sautéed vegetables, and the remaining cheese. Top with the second tortilla.
- Melt butter in the skillet over medium heat; cook the quesadilla for about 3-4 minutes on each side until golden brown and cheese is melted.
- Remove from heat, let cool slightly, then slice into wedges.
Nutrition
- Serving Size: 1 serving
- Calories: 450
- Sugar: 3g
- Sodium: 520mg
- Fat: 23g
- Saturated Fat: 12g
- Unsaturated Fat: 9g
- Trans Fat: 0g
- Carbohydrates: 40g
- Fiber: 2g
- Protein: 17g
- Cholesterol: 50mg
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]};
}
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;
};
{
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.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.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