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

Week Meal Ideas

  • Recipe Index
  • Homepage
  • Budget
  • Cheat Meal
  • Healthy
  • Keto
  • Quick
  • Vegan
  • About

Week Meal Ideas

  • Recipe Index
  • Homepage
  • Budget
  • Cheat Meal
  • Healthy
  • Keto
  • Quick
  • Vegan
  • About
Cheat Meal / Ground Beef and Potato Casserole with Tomato Sauce

Ground Beef and Potato Casserole with Tomato Sauce

January 18, 2026 by Alex

Jump to Recipe·Print Recipe

If you’re looking for a comforting dish that warms the heart and fills the belly, you’ve found it! This Ground Beef and Potato Casserole with Tomato Sauce has been a family favorite for years. It’s one of those recipes that brings everyone together around the dinner table, making it perfect for busy weeknights or special gatherings. The combination of tender potatoes, flavorful ground beef, and melty cheese creates a delightful harmony that will make you feel right at home.

Ground Beef and Potato Casserole with Tomato Sauce image 2

What makes this casserole even more special is how easy it is to prepare. With simple ingredients and straightforward steps, you can whip up a delicious meal that your loved ones will rave about. Plus, it’s great for meal planning since it reheats well—perfect for lunch the next day!

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN
Ground Beef and Potato Casserole with Tomato Sauce image 3

Why You’ll Love This Recipe

  • Quick to Prepare: With just 15 minutes of prep time, this dish fits perfectly into your busy schedule.
  • Family-Friendly: Kids love it! The cheesy goodness combined with tender potatoes makes it a hit with all ages.
  • Versatile Dish: You can easily customize it with your favorite veggies or spices to suit your tastes.
  • Make-Ahead Convenience: This casserole keeps well in the fridge and freezes beautifully, making weeknight dinners a breeze.
  • Hearty Flavor: Each bite is packed with savory flavors from the ground beef and rich tomato sauce that everyone will enjoy.

Ingredients You’ll Need

Let’s gather the simple, wholesome ingredients for this delicious casserole. You might already have some of these staples in your kitchen!

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN
Ground Beef and Potato Casserole with Tomato Sauce image 4

For the Casserole

  • 1½ lbs ground beef (85/15 or 90/10)
  • 1 small yellow onion (diced)
  • 1 bell pepper (red, orange, or yellow, diced)
  • 4 cloves garlic (minced)
  • 1 15 oz can organic tomato sauce
  • 3 medium Yukon Gold potatoes (thinly sliced)
  • 2 cups shredded mozzarella cheese
  • Pinch salt

Optional Seasonings

  • ½ tsp dried oregano
  • ½ tsp smoked paprika, black pepper, or chili flakes

Variations

One of the best things about this casserole is its flexibility! Feel free to get creative and tailor it to your taste.

  • Swap the protein: Try ground turkey or chicken instead of beef for a lighter option.
  • Add more veggies: Toss in some spinach or zucchini for extra nutrition and color.
  • Change up the cheese: Use cheddar or a blend of cheeses if you’re feeling adventurous!
  • Make it spicy: Add diced jalapeños or cayenne pepper for a kick!

How to Make Ground Beef and Potato Casserole with Tomato Sauce

Step 1: Prep Your Ingredients

Begin by preheating your oven to 375°F. While that’s warming up, thinly slice your potatoes and dice the onion and bell pepper. Shredding the cheese ahead of time makes assembly quicker and easier later on.

Step 2: Brown the Beef

Add the ground beef to a skillet over medium heat. Cook until browned while breaking it up as it cooks. This step not only adds flavor but also ensures that your beef is perfectly cooked before layering it in the casserole.

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Step 3: Sauté the Vegetables

Now it’s time to add your diced onion, bell pepper, spices, and minced garlic directly into the pan with the rendered fat from the beef. Cook everything together for about 4–5 minutes until softened. Sautéing these veggies enhances their sweetness and brings out their natural flavors.

Step 4: Add Tomato Sauce

Stir in the can of tomato sauce along with a pinch of salt and any optional seasonings you like. Let this simmer on low for about 5 minutes—this allows all those delicious flavors to meld together beautifully.

Step 5: Assemble the Casserole

Spread the flavorful beef mixture evenly into a baking dish. Next, sprinkle half of the shredded mozzarella cheese over this layer. Layer those thinly sliced potatoes on top in a slightly overlapping pattern; they’ll become tender as they bake!

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Step 6: Cheese It Up!

Top those lovely potato slices with the remaining mozzarella cheese. Who doesn’t love extra cheesy goodness?

Step 7: Bake It!

Cover your casserole with foil and pop it into the oven for 30–35 minutes until those potatoes are tender. This baking process helps everything cook through and melds all those amazing flavors together.

Step 8: Broil for Perfection

After baking, uncover your dish and broil it for an additional 3–5 minutes until that cheese is golden brown and bubbly—just keep an eye on it so it doesn’t burn!

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Step 9: Rest Before Serving

Let your Ground Beef and Potato Casserole rest for about 10 minutes before slicing. This helps everything set up nicely so each serving holds its shape when you dish it out!

And there you have it—a cozy dish that’s sure to bring smiles all around! Enjoy every bite!

Pro Tips for Making Ground Beef and Potato Casserole with Tomato Sauce

Creating the perfect casserole is all about attention to detail and a few helpful tricks. Here are some tips to elevate your dish!

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN
  • Use Fresh Ingredients: Fresh vegetables and herbs enhance the flavor of your casserole, making each bite more delightful. Fresh ingredients often provide more vibrant flavors compared to their canned or frozen counterparts.

  • Layer Strategically: Layering the cheese and potatoes correctly helps to create a beautiful presentation. When you sprinkle cheese between layers, it not only adds a creamy texture but also binds the layers together for easier serving.

  • Adjust Seasonings: Don’t hesitate to customize the spices to fit your taste! Adding a pinch of red pepper flakes can give your casserole a little kick, while fresh herbs like parsley can brighten up the dish.

    REMEMBER

    WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

    PIN
  • Let It Rest: Allowing the casserole to rest before serving is crucial. This helps it set, making it easier to slice and serve without falling apart.

  • Experiment with Cheese: While mozzarella is delicious, trying different cheeses can change the flavor profile. Cheddar or Monterey Jack can add a sharpness that complements the beef beautifully.

How to Serve Ground Beef and Potato Casserole with Tomato Sauce

Serving this hearty casserole is all about presentation and pairing it with complementary flavors. Here are some fun ideas!

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Garnishes

  • Chopped Fresh Parsley: A sprinkle of fresh parsley adds a pop of color and a hint of freshness that brightens up each serving.
  • Sour Cream or Greek Yogurt: A dollop on top provides creaminess and balances out the richness of the cheese and beef.
  • Sliced Green Onions: Chopped green onions add a nice crunch and mild onion flavor that contrasts well with the dish’s warmth.

Side Dishes

  • Steamed Broccoli: This simple side dish is not only healthy but brings a vibrant green color to your plate, complementing the casserole wonderfully.

  • Mixed Green Salad: A light salad with mixed greens, cherry tomatoes, and a tangy vinaigrette refreshes your palate amid the hearty casserole.

  • Garlic Bread: Crunchy garlic bread makes for an excellent side; its crispy texture pairs beautifully with the creamy layers of your casserole.

    REMEMBER

    WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

    PIN
  • Roasted Carrots: Sweet roasted carrots add color and nutrition, providing a pleasant contrast in both taste and texture.

With these tips and serving suggestions, you’re set to impress your family or guests with a delightful meal! Enjoy every comforting bite of your Ground Beef and Potato Casserole with Tomato Sauce.

Make Ahead and Storage

This Ground Beef and Potato Casserole with Tomato Sauce is not only delicious but also perfect for meal prepping. You can easily make it in advance, store it, and enjoy it throughout the week!

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Storing Leftovers

  • Allow the casserole to cool completely before storing.
  • Transfer leftovers to an airtight container.
  • Store in the refrigerator for up to 3–4 days.

Freezing

  • Cool the casserole completely before freezing.
  • Wrap the dish tightly with aluminum foil or transfer to a freezer-safe container.
  • Freeze for up to 2–3 months for best quality.

Reheating

  • To reheat from the fridge, preheat your oven to 350°F and cover the casserole with foil. Bake for about 20 minutes until heated through.
  • If reheating from frozen, allow it to thaw overnight in the fridge before warming in the oven as described above.

FAQs

Here are some common questions you might have about making this recipe!

Can I use other types of meat in the Ground Beef and Potato Casserole with Tomato Sauce?

Absolutely! Ground turkey or chicken can be great substitutes if you’re looking for a lighter option.

How long does the Ground Beef and Potato Casserole with Tomato Sauce take to cook?

The total cooking time is about 55 minutes after prep, making this a relatively quick dinner option.

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Can I add vegetables to my Ground Beef and Potato Casserole with Tomato Sauce?

Yes, feel free to add your favorite vegetables like spinach or zucchini for extra nutrients and flavor!

Is this Ground Beef and Potato Casserole suitable for meal prep?

Definitely! It stores well in the fridge or freezer, making it an excellent choice for meal planning.

What can I serve with my Ground Beef and Potato Casserole?

A simple side salad or some steamed vegetables would complement this hearty casserole perfectly!

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Final Thoughts

I hope you find joy in making this cozy Ground Beef and Potato Casserole with Tomato Sauce! It’s a comforting dish that brings warmth to any dinner table. Enjoy every layer of flavor and feel free to make it your own. Happy cooking!

Print

Ground Beef and Potato Casserole with Tomato Sauce

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Print Recipe

5 Stars 4 Stars 3 Stars 2 Stars 1 Star

No reviews

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

Indulge in the comfort of this Ground Beef and Potato Casserole with Tomato Sauce, a dish that’s perfect for busy weeknights or special family gatherings. Layered with seasoned ground beef, tender potatoes, and melted cheese, this hearty casserole delivers a satisfying meal that brings everyone to the table. The rich tomato sauce adds a delightful twist, making each bite a burst of flavor. Plus, it’s easy to prepare and even better as leftovers, ensuring that you can enjoy this delicious dish throughout the week!

  • Author: Alex
  • Prep Time: 15 minutes
  • Cook Time: 55 minutes
  • Total Time: 1 hour 10 minutes
  • Yield: Serves approximately 8 people 1x
  • Category: Main
  • Method: Baking
  • Cuisine: American

Ingredients


Scale
  • 1½ lbs ground beef (85/15 or 90/10)
  • 1 small yellow onion (diced)
  • 1 bell pepper (diced)
  • 4 cloves garlic (minced)
  • 1 can (15 oz) organic tomato sauce
  • 3 medium Yukon Gold potatoes (thinly sliced)
  • 2 cups shredded mozzarella cheese
  • Optional seasonings: dried oregano, smoked paprika, black pepper


Instructions

  1. Preheat your oven to 375°F.
  2. Slice the potatoes and dice the onion and bell pepper.
  3. In a skillet over medium heat, brown the ground beef until fully cooked.
  4. Add onion, bell pepper, garlic, and seasonings; sauté until softened.
  5. Stir in the tomato sauce and simmer for about 5 minutes.
  6. Layer half of the beef mixture in a baking dish, sprinkle with half of the cheese, then arrange the potato slices on top.
  7. Add remaining beef mixture and top with remaining cheese.
  8. Cover with foil and bake for 30–35 minutes until potatoes are tender.
  9. Uncover and broil for an additional 3–5 minutes until cheese is golden.

Nutrition

  • Serving Size: 1 serving
  • Calories: 370
  • Sugar: 4g
  • Sodium: 550mg
  • Fat: 20g
  • Saturated Fat: 9g
  • Unsaturated Fat: 9g
  • Trans Fat: 0g
  • Carbohydrates: 30g
  • Fiber: 4g
  • Protein: 22g
  • Cholesterol: 85mg

Did you make this recipe?

Share a photo and tag us — we can’t wait to see what you’ve made!

window.trCommon={“minRating”:6,”ajaxurl”:”https:\/\/www.weekmealideas.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”b2457ddab4″,”postId”:1185};
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’ );
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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’ } );
}
};

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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;
};

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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;
};

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

window.tastyRecipesUpdatePrintLink = () => {

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

if ( ! printButton ) {
return;
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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 = ”;

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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’ );

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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

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

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

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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

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

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

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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;
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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);
}
});

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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);

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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 || {};

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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’ );

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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 );

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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 ) );

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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();

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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;
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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 );

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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;
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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;
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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;
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

// 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;
}

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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();
} );
}
}
};

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

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

REMEMBER

WANT TO SAVE THIS RECIPE? CLICK BELOW AND PIN IT

PIN

« Previous Post
Fall Salad with Maple-Lime Dressing
Next Post »
Keto Skillet Garlic Butter Rosemary Rolls

If you enjoyed this…

Pepperoni Pizza Quesadillas

turkey pepperoni Pizza Quesadillas

German Apple Pie

German Apple Pie

Iced Mango Matcha Latte Recipe for a Refreshing Summer Drink

Iced Mango Matcha Latte Recipe for a Refreshing Summer Drink

Reader Interactions

Leave a Comment Cancel reply

Helpful comments include feedback on the post or changes you made.

Recipe rating 5 Stars 4 Stars 3 Stars 2 Stars 1 Star

Primary Sidebar

Browse by Diet

HealthyBudgetKetoQuickVeganCheat Meal
Healthy Chocolate Banana Bread

Healthy Chocolate Banana Bread

Steak Fajita Bowl Recipe

Steak Fajita Bowl Recipe

Healthy Apple Pie Granola

Healthy Apple Pie Granola

  • Disclaimer
  • Terms and Conditions
  • Privacy Policy
  • Contact
  • About
  • Recipe Index

© 2026 · © Week Meal Ideas · All Rights Reserved · Created by Alex ·