If you’re looking for a delicious and quick meal, look no further! This Chili Chicken Breast Recipe is not just any ordinary chicken dish; it’s a sweet and spicy delight that’s perfect for busy weeknights or family gatherings. The juicy chicken breasts are coated in a mouthwatering sauce that makes every bite feel like a special occasion. Whether you serve it over rice, noodles, or even cauliflower rice, this recipe is sure to impress everyone at the table.

What makes this dish even more special is how easy it is to whip up. With simple ingredients and straightforward steps, you’ll find yourself reaching for this recipe time and again!


Why You’ll Love This Recipe
- Quick Preparation: In just 10 minutes of prep time, you can marinate the chicken and have it ready to cook!
- Flavorful Sauce: The combination of honey, soy sauce, and spices creates a finger-licking sauce that will tantalize your taste buds.
- Versatile Serving Options: Serve it with rice, noodles, or veggies—this dish fits any meal plan!
- Perfect for Meal Prep: Make extra and enjoy leftovers throughout the week; it reheats beautifully!
- Family-Friendly: Kids love the sweet and spicy flavor profile, making it a hit for all ages.
Ingredients You’ll Need
Creating this Chili Chicken Breast Recipe is simple with these wholesome ingredients. You probably have many of them in your pantry already!
For the Marinade
- ½ cup soy sauce (low sodium)
- ¼ cup honey
- 2 teaspoons sesame oil
- 1 teaspoon garlic powder
- ½ teaspoon chili flakes
- ½ teaspoon ginger (ground)
For the Chicken
- 2 pounds chicken breasts (boneless skinless)
- 1 tablespoon cornstarch
- 3 tablespoons water
For Cooking
- 2 teaspoons olive oil
- sesame seeds (optional for serving)
- green onions (optional for serving)
Variations
One of the best parts about this Chili Chicken Breast Recipe is its flexibility! Feel free to customize based on your preferences or what you have on hand.
- Swap the protein: Try using tofu or tempeh for a vegetarian option that still packs tons of flavor.
- Add more heat: If you love spicy food, increase the amount of chili flakes or add some sliced fresh chilies.
- Veggie boost: Toss in some bell peppers or broccoli when cooking the chicken for added nutrition and color.
- Sweeten the deal: Substitute maple syrup for honey if you’re looking for an alternative sweetener.
How to Make Chili Chicken Breast Recipe
Step 1: Prepare the Marinade
In a small bowl, whisk together the soy sauce, honey, sesame oil, garlic powder, chili flakes, and ginger. This marinade brings out incredible flavors in the chicken. It’s crucial to let those flavors meld together before adding them to the chicken.
Step 2: Marinate the Chicken
Place your chicken breasts in a Ziploc bag and pour in one-third of your marinade. Seal the bag and mix it around so that each piece of chicken gets coated well. Letting it marinate in the fridge for an hour allows the chicken to soak up all that delicious flavor!
Step 3: Make the Cornstarch Slurry
While waiting for your chicken to marinate, combine cornstarch with water in another small bowl until smooth. This will help thicken our sauce later on and give it that lovely glossy finish we all adore.
Step 4: Cook the Chicken
Heat olive oil in a large skillet over medium heat. Add your marinated chicken breasts to the skillet. Cook them for about 5-6 minutes on each side until they are golden-brown and no longer pink inside. It’s important not to overcrowd the pan so that they cook evenly!
Step 5: Thicken Your Sauce
Once your chicken is cooked through, remove it from the pan but keep it warm. Pour in the remaining marinade along with your cornstarch slurry into the same pan. Lower your heat and stir continuously while simmering until thickened—this process only takes about 1-2 minutes!
Step 6: Combine Chicken with Sauce
Return your cooked chicken back into the pan with that luscious sauce. Baste each piece thoroughly so they soak up every bit of flavor. Ensure that each piece reaches an internal temperature of 165F—this guarantees juicy perfection!
Step 7: Garnish and Serve
Finally, garnish your dish with sesame seeds and chopped green onions if desired. Serve this beautiful dish over rice or noodles—it’s sure to be a crowd-pleaser! Enjoy every savory bite of this delightful Chili Chicken Breast Recipe!
Pro Tips for Making Chili Chicken Breast Recipe
To ensure your Chili Chicken Breast turns out perfectly every time, keep these handy tips in mind!
Marinate for Maximum Flavor: Allowing the chicken to marinate for at least an hour infuses it with flavor and ensures that it stays juicy during cooking.
Use a Meat Thermometer: To guarantee that your chicken is thoroughly cooked and safe to eat, use a meat thermometer. The internal temperature should reach 165°F (75°C) for perfectly tender chicken.
Don’t Overcrowd the Pan: Cooking the chicken in batches if necessary prevents steaming and allows for that beautiful golden-brown color on each piece.
Adjust Spice Levels: If you prefer a milder dish, reduce the amount of chili flakes or omit them altogether. You can always add more spice to individual servings later!
Thicken the Sauce to Perfection: Stirring continuously while simmering the sauce ensures it thickens evenly without clumping, giving you a smooth and glossy finish.
How to Serve Chili Chicken Breast Recipe
This delightful dish is not only easy to prepare but also versatile in how you can present it. Here are some ideas to make your meal even more enjoyable!
Garnishes
- Sesame Seeds: A sprinkle of sesame seeds adds a nutty crunch and enhances the Asian flair of your dish.
- Chopped Green Onions: Fresh green onions provide a pop of color and a mild onion flavor that complements the sweetness of the sauce.
Side Dishes
- Steamed Jasmine Rice: This fragrant rice is perfect for soaking up the delicious sauce, making each bite even more satisfying.
- Stir-Fried Vegetables: A colorful medley of bell peppers, broccoli, and snap peas tossed in soy sauce adds texture and nutrition to your meal.
- Cauliflower Rice: For a low-carb alternative, serve your chili chicken over cauliflower rice. It’s light yet filling and absorbs flavors beautifully.
- Noodles: Whether you choose rice noodles or whole wheat pasta, they make an excellent base for this dish, adding heartiness without overpowering the flavors.
With these tips and serving suggestions, your Chili Chicken Breast will be not just a meal but an experience! Enjoy every bite as you savor the sweet and spicy harmony of this delightful recipe.
Make Ahead and Storage
This Chili Chicken Breast Recipe is perfect for meal prep! It’s easy to make in advance, and the flavors deepen as it sits, making your meals even more delicious throughout the week.
Storing Leftovers
- Store leftover chicken in an airtight container.
- Refrigerate within two hours of cooking.
- Enjoy within 3-4 days for the best taste and quality.
Freezing
- Allow the chicken to cool completely before freezing.
- Place chicken in a freezer-safe bag or container, removing as much air as possible.
- Freeze for up to 3 months. For best results, label with the date.
Reheating
- Thaw frozen chicken overnight in the refrigerator before reheating.
- Warm the chicken in a skillet over medium heat until heated through, about 5-7 minutes.
- Alternatively, microwave on low power in short intervals until hot.
FAQs
Here are some frequently asked questions about this delightful recipe!
Can I use other types of meat in this Chili Chicken Breast Recipe?
Yes! You can substitute chicken breasts with boneless skinless thighs or even firm tofu for a plant-based option. Just adjust the cooking time accordingly.
How can I make this Chili Chicken Breast Recipe spicier?
To add more heat, increase the amount of chili flakes or include fresh chopped chilies. You could also serve it with a spicy dipping sauce on the side!
What can I serve with this Chili Chicken Breast Recipe?
This dish pairs wonderfully with steamed rice, noodles, or sautéed vegetables. Cauliflower rice is also a great low-carb alternative!
Can I make this Chili Chicken Breast Recipe ahead of time?
Absolutely! The marinade works beautifully overnight, enhancing the flavor of your chicken. Simply marinate it a day ahead for an even more flavorful meal!
What is the best way to ensure my chicken stays juicy while cooking?
Make sure not to overcook your chicken. Use a meat thermometer to check that it reaches 165°F at its center; this will yield tender and juicy results.
Final Thoughts
I hope you enjoy making this Chili Chicken Breast Recipe as much as I do! It’s not only quick and easy but also bursting with flavor that will surely impress your family and friends. Don’t hesitate to experiment with different sides or spice levels. Happy cooking!
Asian Chicken Recipes
nnn
Why You’ll Love This Recipe
This Chili Chicken Breast Recipe is a delightful blend of sweet and spicy flavors that will tantalize your taste buds. The tender, juicy chicken absorbs the rich sauce, making every bite a burst of deliciousness. Plus, it’s quick and easy to prepare, perfect for busy weeknights or a cozy weekend dinner. Serve it over rice or noodles for a comforting meal that everyone will love!
Ingredients You’ll Need
- ½ cup soy sauce (low sodium)
- ¼ cup honey
- 2 teaspoons sesame oil
- 1 teaspoon garlic powder
- ½ teaspoon chili flakes
- ½ teaspoon ginger (ground)
- 1 tablespoon cornstarch
- 2 pounds chicken breasts (boneless skinless)
- 3 tablespoons water
- 2 teaspoons olive oil
- Sesame seeds (optional for serving)
- Green onions (optional for serving)
Variations
- Spicy Kick: Add more chili flakes or a splash of sriracha to the marinade for an extra kick.
- Vegetable Add-ins: Toss in your favorite vegetables like bell peppers, broccoli, or snap peas during the cooking process for added nutrition and color.
- Gluten-Free: Substitute soy sauce with tamari or coconut aminos for a gluten-free option.
How to Make
- In a small bowl, whisk together the soy sauce, honey, sesame oil, garlic powder, chili flakes, and ginger.
- Mix the cornstarch with water in another bowl until smooth.
- Place chicken breasts in a Ziploc bag and add 1/3 of the soy sauce mixture. Marinate in the fridge for 1 hour.
- Combine the cornstarch slurry with the remaining soy sauce mixture.
- Heat olive oil in a skillet over medium heat. Cook marinated chicken for 5-6 minutes on each side until golden-brown and cooked through.
- Add the soy sauce mixture to the skillet and simmer until thickened, about 1-2 minutes.
- Return chicken to the skillet, coating it with the sauce. Ensure the internal temperature reaches 165°F.
- Garnish with sesame seeds and green onions before serving.
Pro Tips
- Marinate Longer: For even more flavor, marinate the chicken overnight.
- Cooking Temperature: Use a meat thermometer to ensure your chicken is perfectly cooked without drying out.
- Sauce Thickness: If the sauce is too thick, add a little water to reach your desired consistency.
How to Serve
Serve your Chili Chicken Breast over a bed of steaming rice or noodles. Pair it with sautéed vegetables or a fresh salad for a complete meal. Don’t forget to sprinkle some sesame seeds and chopped green onions on top for a beautiful presentation!
Make Ahead and Storage
- Make Ahead: You can marinate the chicken a day in advance for maximum flavor.
- Storage: Store leftovers in an airtight container in the fridge for up to 3 days. Reheat gently on the stovetop or microwave.
FAQs
Can I use chicken thighs instead of breasts?
Yes, chicken thighs will work beautifully and add extra juiciness!What can I substitute for honey?
Maple syrup or agave nectar can be used as a substitute for honey.Is this recipe freezer-friendly?
Yes, you can freeze the marinated chicken. Just make sure to thaw it in the fridge before cooking.
Final Thoughts
This Chili Chicken Breast Recipe is not only simple and quick to make but also a crowd-pleaser that’s sure to impress! Whether you’re looking for a weeknight dinner or a dish to serve at a gathering, this recipe delivers on flavor and satisfaction. Enjoy the sweet and spicy goodness with your loved ones!
Chili Chicken Breast Recipe
If you’re seeking a meal that combines convenience with robust flavors, this Chili Chicken Breast Recipe is your answer. In just a matter of minutes, you can prepare juicy chicken breasts enveloped in a sweet and spicy sauce that elevates any dinner table. The marinade, crafted from soy sauce, honey, and a blend of spices, penetrates the chicken to create an unforgettable taste experience. Whether you serve it over fluffy rice, hearty noodles, or fresh vegetables, this dish promises to become a family favorite. Ideal for busy weeknights or meal prep, you’ll find yourself reaching for this recipe time and again!
- Prep Time: 10 minutes
- Cook Time: 15 minutes
- Total Time: 25 minutes
- Yield: Serves approximately 4 people 1x
- Category: Main
- Method: Skillet
- Cuisine: Asian
Ingredients
Scale
- ½ cup low sodium soy sauce
- ¼ cup honey
- 2 teaspoons sesame oil
- 1 teaspoon garlic powder
- ½ teaspoon chili flakes
- ½ teaspoon ground ginger
- 2 pounds boneless skinless chicken breasts
- 1 tablespoon cornstarch
- 3 tablespoons water
- 2 teaspoons olive oil
- Sesame seeds (optional for serving)
- Green onions (optional for serving)
Instructions
- In a bowl, whisk together soy sauce, honey, sesame oil, garlic powder, chili flakes, and ginger.
- Place chicken in a Ziploc bag with one-third of the marinade. Seal and refrigerate for at least one hour.
- Mix cornstarch with water in another bowl until smooth.
- Heat olive oil in a skillet over medium heat. Cook marinated chicken for about 5-6 minutes on each side until golden brown and fully cooked.
- Pour remaining marinade and cornstarch slurry into the skillet; simmer until thickened (1-2 minutes).
- Return the chicken to the skillet to coat it with the sauce before serving.
Nutrition
- Serving Size: 1 chicken breast (170g)
- Calories: 335
- Sugar: 18g
- Sodium: 690mg
- Fat: 6g
- Saturated Fat: 1g
- Unsaturated Fat: 4g
- Trans Fat: 0g
- Carbohydrates: 46g
- Fiber: 1g
- Protein: 28g
- Cholesterol: 85mg
window.trCommon={“minRating”:6,”ajaxurl”:”https:\/\/www.weekmealideas.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”f4dba257bc”,”postId”:3306};
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