If you’re looking for a quick weeknight dinner that’s bursting with flavor, you’re in the right place! This Sizzling Chinese Pepper Steak with Onions is a favorite in our household, bringing together tender beef strips and crisp onions in a savory sauce that will make your taste buds dance. The best part? It’s ready in just 30 minutes! Whether you’re whipping it up after a long day or serving it at a family gathering, this dish is sure to impress.

The vibrant colors and aromatic spices make this stir-fry not just a meal but an experience. Perfect for any occasion, from casual dinners to special celebrations, this recipe will quickly become a staple in your culinary repertoire!


Why You’ll Love This Recipe
- Quick and Easy: You can have this delightful dish on your table in just 30 minutes, making it perfect for busy weeknights.
- Family-Friendly: Everyone loves a good stir-fry! The combination of beef and onions appeals to both kids and adults alike.
- Flavor-Packed: The bold flavors of soy sauce, ginger, and garlic create a mouthwatering experience that feels like dining out.
- Versatile: Serve it over rice or noodles, or even toss in some extra veggies for added nutrition and color.
- High-Protein Delight: With lean beef as the star ingredient, this dish not only satisfies hunger but also provides a protein boost.
Ingredients You’ll Need
Let’s gather our simple and wholesome ingredients for this delicious dish! You’ll find everything you need right at your local grocery store.
For the Marinade
- 1 lb (450g) beef strips (sirloin or ribeye)
- 2 tbsp (30g) vegetable oil
- 2 cloves garlic, minced
- 1 tbsp (15g) grated fresh ginger
- 1 tbsp (15g) soy sauce
- 1 tbsp (15g) oyster sauce (optional)
- 1 tsp sesame oil
- Salt and pepper to taste
For the Stir-Fry
- 2 tbsp (30g) soy sauce
- 2 tbsp (30g) oyster sauce (optional)
- 2 tbsp (30g) hoisin sauce
- 2 tbsp (30g) rice vinegar
- 1 tbsp (15g) cornstarch
- 2 tbsp (30g) vegetable oil
- 1 large onion, sliced
- 1 tbsp (15g) vegetable oil
- Salt and pepper to taste
Variations
One of the best things about this recipe is its flexibility! Feel free to switch things up based on what you have on hand or your personal preferences.
- Swap the protein: Try chicken, tofu, or even seitan for a delightful twist. Each option brings its unique flavor!
- Add extra veggies: Toss in bell peppers, broccoli, or snap peas for added color and nutrients.
- Make it spicy: Add sliced chili peppers or a drizzle of hot honey if you love some heat!
- Gluten-free option: Substitute soy sauce with tamari for a gluten-free version without sacrificing flavor.
How to Make Sizzling Chinese Pepper Steak with Onions
Step 1: Prepare the Marinade
In a bowl, whisk together soy sauce, oyster sauce, ginger, garlic, and sesame oil. This marinade packs tons of flavor into the beef. Toss those juicy strips into the marinade and let them soak up all those delicious notes for about 10-15 minutes.
Step 2: Cook the Onions
Heat 1 tablespoon of vegetable oil in a skillet over medium heat. Add the sliced onions and sauté until soft and slightly caramelized. This step is essential because caramelizing brings out their natural sweetness that balances beautifully with the savory beef.
Step 3: Sear the Beef
In the same pan, increase the heat to high and add 2 tablespoons of vegetable oil. Once hot, add the marinated beef strips and stir-fry for 2-3 minutes until browned. This quick cooking method ensures they stay tender while developing a lovely crust.
Step 4: Make the Sauce
In a small bowl, whisk together soy sauce, hoisin sauce, rice vinegar, and cornstarch. Pour this mixture over your sizzling beef and let it simmer until thickened. This sauce is what ties all those wonderful flavors together!
Step 5: Combine & Serve
Add those sautéed onions back into the pan with the beef mixture, stirring gently to combine everything evenly. Serve hot over steamed rice or noodles for an authentic touch! Enjoy every bite of your homemade Sizzling Chinese Pepper Steak with Onions – it’s sure to be a hit!
Pro Tips for Making Sizzling Chinese Pepper Steak with Onions
Cooking this dish can be a breeze! Here are some tips to ensure your Sizzling Chinese Pepper Steak turns out perfect every time:
- Marinate for Flavor: Letting the beef sit in the marinade for at least 15 minutes enhances its flavor and tenderness, making every bite deliciously savory.
- High Heat Cooking: Using high heat while stir-frying helps to achieve that signature sizzle and caramelization, giving your beef a beautiful texture and taste.
- Prep Ingredients Ahead: Have all your ingredients prepped and ready before you start cooking. This makes the process smoother and ensures that nothing burns while you’re busy chopping or measuring.
- Don’t Overcrowd the Pan: If you’re cooking for a larger group, consider doing it in batches. Overcrowding can lower the pan’s temperature, causing the beef to steam rather than sear.
- Add Fresh Vegetables: Feel free to toss in other vegetables like bell peppers or snap peas during the stir-fry for added color, crunch, and nutrition!
How to Serve Sizzling Chinese Pepper Steak with Onions
Presentation is key when serving this delightful dish! Here are some ideas to elevate your meal.
Garnishes
- Chopped Green Onions: Sprinkle fresh chopped green onions on top for a burst of color and mild onion flavor that complements the dish beautifully.
- Sesame Seeds: A light sprinkle of toasted sesame seeds adds a nutty flavor and a lovely crunch that enhances the overall texture.
Side Dishes
- Steamed Jasmine Rice: Fluffy jasmine rice is an excellent base that absorbs the flavorful sauce, making each bite satisfying.
- Stir-Fried Broccoli: Quick-stir fried broccoli not only adds vibrant color but also provides a nutritious crunch that pairs well with the tender beef.
- Garlic Noodles: Tossed in garlic and soy sauce, these noodles make a wonderful accompaniment, soaking up any extra sauce from your steak.
- Asian Cucumber Salad: A refreshing cucumber salad with a tangy dressing offers a nice contrast to the richness of the steak, balancing out your meal perfectly.
Make Ahead and Storage
This Sizzling Chinese Pepper Steak with Onions is perfect for meal prep, allowing you to enjoy a delicious homemade dinner even on the busiest nights. Here’s how to store and enjoy your leftovers:
Storing Leftovers
- Store any leftover pepper steak in an airtight container in the refrigerator.
- It will stay fresh for up to 3 days.
- Ensure the beef and sauce are well mixed before storing for optimal flavor retention.
Freezing
- To freeze, place cooled pepper steak in a freezer-safe container or bag.
- It can be frozen for up to 3 months.
- Label the container with the date for easy tracking.
Reheating
- For best results, reheat in a skillet over medium heat until warmed through.
- You can also microwave it in short intervals (1-2 minutes) until hot, stirring halfway through.
- Add a splash of water or broth if it seems dry during reheating.
FAQs
Can I make Sizzling Chinese Pepper Steak with Onions ahead of time?
Absolutely! This dish is great for meal prep. You can marinate the beef and prepare the sauce ahead of time. Just sauté everything when you’re ready to eat!
What should I serve with Sizzling Chinese Pepper Steak with Onions?
This dish pairs wonderfully with steamed rice or noodles. You could also serve it alongside stir-fried vegetables for a complete meal.
Can I use other vegetables in Sizzling Chinese Pepper Steak with Onions?
Yes! Feel free to add bell peppers, broccoli, or snap peas for extra color and nutrition. The recipe is versatile and can accommodate your favorite veggies.
Final Thoughts
I hope you enjoy making this Sizzling Chinese Pepper Steak with Onions as much as I do! It’s a quick and flavorful dish that brings a taste of restaurant-quality cuisine right into your home. Whether it’s a weeknight dinner or a special occasion, this recipe is sure to impress. Happy cooking!
Sizzling Chinese Pepper Steak with Onions
Sizzling Chinese Pepper Steak with Onions is a vibrant and flavorful dish that transforms simple ingredients into an unforgettable meal. In just 30 minutes, you can enjoy tender beef strips tossed with caramelized onions in a savory sauce that tantalizes your taste buds. Perfect for busy weeknights or special gatherings, this easy stir-fry is a family favorite that appeals to both kids and adults alike. Whether served over rice or noodles, every bite promises a delightful experience that captures the essence of restaurant-quality cuisine right in your home.
- Prep Time: 15 minutes
- Cook Time: 15 minutes
- Total Time: 30 minutes
- Yield: Serves 4
- Category: Main
- Method: Stir-frying
- Cuisine: Chinese
Ingredients
Scale
- 1 lb beef strips (sirloin or ribeye)
- 1 large onion, sliced
- 2 tbsp soy sauce
- 2 tbsp hoisin sauce
- 2 tbsp rice vinegar
- 1 tbsp cornstarch
- 4 tbsp vegetable oil
- 2 cloves garlic, minced
- 1 tbsp grated fresh ginger
- Salt and pepper to taste
Instructions
- Prepare the Marinade: In a bowl, mix soy sauce, hoisin sauce, garlic, ginger, and cornstarch. Add beef strips and marinate for 10-15 minutes.
- Cook Onions: Heat vegetable oil in a skillet over medium heat. Sauté sliced onions until soft and caramelized.
- Sear Beef: Increase heat to high, add marinated beef to the skillet, and stir-fry for 2-3 minutes until browned.
- Make Sauce: Combine remaining soy sauce, hoisin sauce, rice vinegar in a bowl; pour over beef and simmer until thickened.
- Combine & Serve: Mix sautéed onions back into the pan with beef. Serve hot over steamed rice or noodles.
Nutrition
- Serving Size: 1 serving
- Calories: 320
- Sugar: 8g
- Sodium: 800mg
- Fat: 18g
- Saturated Fat: 3g
- Unsaturated Fat: 12g
- Trans Fat: 0g
- Carbohydrates: 20g
- Fiber: 2g
- Protein: 24g
- Cholesterol: 80mg
window.trCommon={“minRating”:6,”ajaxurl”:”https:\/\/www.weekmealideas.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”10526be5c6″,”postId”:7766};
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