<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Penny Pinchin&#039; Mom</title>
	<atom:link href="https://pennypinchinmom.com/recipes/soup/feed/" rel="self" type="application/rss+xml" />
	<link>https://pennypinchinmom.com</link>
	<description>Life. Family. Finances.</description>
	<lastBuildDate>Wed, 08 Apr 2026 12:50:52 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://pennypinchinmom.com/wp-content/uploads/2020/09/cropped-favicon-ppm-512px-32x32.png</url>
	<title>Penny Pinchin&#039; Mom</title>
	<link>https://pennypinchinmom.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>White Bean Spinach Soup</title>
		<link>https://pennypinchinmom.com/white-bean-spinach-soup-2/</link>
		
		<dc:creator><![CDATA[Penny Pinchin Mom]]></dc:creator>
		<pubDate>Wed, 08 Apr 2026 12:39:20 +0000</pubDate>
				<category><![CDATA[Soup]]></category>
		<category><![CDATA[Entrees]]></category>
		<guid isPermaLink="false">https://pennypinchinmom.com/?p=405275</guid>

					<description><![CDATA[<p>The post <a rel="nofollow" href="https://pennypinchinmom.com/white-bean-spinach-soup-2/">White Bean Spinach Soup</a> appeared first on <a rel="nofollow" href="https://pennypinchinmom.com">Penny Pinchin&#039; Mom</a>.</p>
<p>The post <a rel="nofollow" href="https://pennypinchinmom.com/white-bean-spinach-soup-2/">White Bean Spinach Soup</a> appeared first on <a rel="nofollow" href="https://pennypinchinmom.com">Penny Pinchin&#039; Mom</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The post <a rel="nofollow" href="https://pennypinchinmom.com/white-bean-spinach-soup-2/">White Bean Spinach Soup</a> appeared first on <a rel="nofollow" href="https://pennypinchinmom.com">Penny Pinchin&#039; Mom</a>.</p>

<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="930" height="680" data-pin-url="https://pennypinchinmom.com/white-bean-spinach-soup-2/?tp_image_id=405277" src="https://pennypinchinmom.com/wp-content/uploads/2026/04/White-Bean-Spinach-Soup-1.jpg" alt="" class="wp-image-405277" srcset="https://pennypinchinmom.com/wp-content/uploads/2026/04/White-Bean-Spinach-Soup-1.jpg 930w, https://pennypinchinmom.com/wp-content/uploads/2026/04/White-Bean-Spinach-Soup-1-250x183.jpg 250w, https://pennypinchinmom.com/wp-content/uploads/2026/04/White-Bean-Spinach-Soup-1-768x562.jpg 768w" sizes="(max-width: 930px) 100vw, 930px" /></figure>


<svg aria-hidden="true" style="position: absolute;width: 0;height: 0;overflow: hidden" xmlns="http://www.w3.org/2000/svg">
<defs>
<symbol viewbox="9 9 46 42" id="wpt-star-full">
	<path d="m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z" />
</symbol>
</defs>
</svg>
<a class="button tasty-recipes-print-button tasty-recipes-no-print tasty-recipes-print-above-card" href="https://pennypinchinmom.com/white-bean-spinach-soup-2/print/405279/">Print</a><span class="tasty-recipes-jump-target" id="tasty-recipes-405279-jump-target" style="display:block;padding-top:2px;margin-top:-2px;"></span><div id="tasty-recipes-405279" data-tr-id="405279" class="tasty-recipes tasty-recipes-405279 tasty-recipes-display tasty-recipes-no-image">


<h2 class="tasty-recipes-title" data-tasty-recipes-customization="h2-color.color h2-transform.text-transform">White Bean Spinach Soup</h2>
<div class="tasty-recipes-image-button-container">
		<div class="tasty-recipes-buttons">
				<div class="tasty-recipes-button-wrap">
			
<a class="button tasty-recipes-print-button tasty-recipes-no-print" href="https://pennypinchinmom.com/white-bean-spinach-soup-2/print/405279/" target="_blank" data-tasty-recipes-customization="">
			<img decoding="async" class="svg-print" data-pin-nopin="true" src="https://pennypinchinmom.com/wp-content/plugins/tasty-recipes/templates/buttons/images/icon-print.png">
		Print Recipe</a>
		</div>
						<div class="tasty-recipes-button-wrap">
			
<a class="share-pin button" data-pin-custom="true" data-href="https://www.pinterest.com/pin/create/bookmarklet/?url=https%3A%2F%2Fpennypinchinmom.com%2Fwhite-bean-spinach-soup-2%2F" href="https://www.pinterest.com/pin/create/bookmarklet/?url=https%3A%2F%2Fpennypinchinmom.com%2Fwhite-bean-spinach-soup-2%2F" data-tasty-recipes-customization="">
			<img decoding="async" class="svg-pinterest" data-pin-nopin="true" src="https://pennypinchinmom.com/wp-content/plugins/tasty-recipes/templates/buttons/images/icon-pinterest.png">
		Pin Recipe</a>
<script>
	const share_pin_buttons = document.getElementsByClassName( 'share-pin button' );
	if ( share_pin_buttons ) {
		for ( let share_key = 0; share_key < share_pin_buttons.length; share_key++ ) {
			share_pin_buttons[share_key].addEventListener( 'click', (e) => {
				e.stopPropagation();
				window.open(e.target.dataset.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=500');
				return false;
			} );
		}
	}
</script>
		</div>
			</div>
</div>
	<div class="tasty-recipes-rating" data-tasty-recipes-customization="body-color.color">
							<p><span data-tasty-recipes-customization="detail-label-color.color" class="rating-label"></span></p>
			</div>


	<div class="tasty-recipes-description" data-tasty-recipes-customization="body-color.color">
		<p>This White Bean Spinach Soup is proof that you don&#8217;t need meat to make a filling, satisfying dinner. One can of white beans, a handful of pasta, fresh spinach, and a few pantry staples come together in one pot in 30 minutes for well under $5 for a family of four. The beans and pasta give you plenty of protein and fiber, the lemon juice brightens everything up at the end, and the whole thing tastes even better the next day as leftovers. Budget soup doesn&#8217;t get much better than this.</p>
	</div>

	<div class="tasty-recipes-details" data-tasty-recipes-customization="body-color.color">
		<ul>
							<li class="author"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Author:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-author-name">Penny Pinchin Mom</span></li>
							<li class="prep-time"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Prep Time:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-prep-time">10 minutes</span></li>
							<li class="cook-time"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Cook Time:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-cook-time">20 minutes</span></li>
							<li class="total-time"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Total Time:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-total-time">30 minutes</span></li>
							<li class="yield"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Yield:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-yield">4 servings</span></li>
					</ul>
	</div>

	<div class="tasty-recipes-ingredients">
		<div class="tasty-recipes-ingredients-header">
			<div class="tasty-recipes-ingredients-clipboard-container">
				<h3 data-tasty-recipes-customization="h3-color.color h3-transform.text-transform">Ingredients</h3>
							</div>
			<div class="tasty-recipes-units-scale-container">
											</div>
		</div>
		<div class="tasty-recipes-ingredients-body" data-tasty-recipes-customization="body-color.color">
			<ul>
<li class="whitespace-normal break-words pl-2"><span data-amount="2" data-unit="tablespoon">2 tablespoons</span> olive oil</li>
<li class="whitespace-normal break-words pl-2"><span data-amount="1">1</span> small yellow onion, diced</li>
<li class="whitespace-normal break-words pl-2"><span data-amount="2">2</span> cloves garlic, minced</li>
<li class="whitespace-normal break-words pl-2"><span data-amount="1" data-unit="cup">1 cup</span> celery, diced (about <span data-amount="2">2</span> stalks)</li>
<li class="whitespace-normal break-words pl-2"><span data-amount="1" data-unit="teaspoon">1 teaspoon</span> Italian seasoning (or Herbs de Provence)</li>
<li class="whitespace-normal break-words pl-2"><span data-amount="0.5" data-unit="teaspoon">1/2 teaspoon</span> salt</li>
<li class="whitespace-normal break-words pl-2"><span data-amount="0.25" data-unit="teaspoon">1/4 teaspoon</span> black pepper</li>
<li class="whitespace-normal break-words pl-2"><span data-amount="4" data-unit="cup">4 cups</span> vegetable broth</li>
<li class="whitespace-normal break-words pl-2"><span data-amount="1" data-unit="tablespoon">1 tablespoon</span> lemon juice (about <span data-amount="0.5">half a</span> lemon)</li>
<li class="whitespace-normal break-words pl-2"><span data-amount="0.75" data-unit="cup">3/4 cup</span> uncooked pasta shells or macaroni</li>
<li class="whitespace-normal break-words pl-2"><span data-amount="1">1</span> (15 oz) can Great Northern beans, drained and rinsed</li>
<li class="whitespace-normal break-words pl-2"><span data-amount="3" data-unit="cup">3 cups</span> fresh spinach</li>
<li class="whitespace-normal break-words pl-2">Dried parsley to taste</li>
</ul>
<!--INSIDE_INGREDIENTS-->		</div>
		<p
	id="shop-with-instacart-v1" 	data-affiliate_id="2676"
	data-source_origin="affiliate_hub"
	data-affiliate_platform="recipe_widget">
</p>
<div class="tasty-recipes-cook-mode">
	<div class="tasty-recipes-cook-mode__container">
		<label class="tasty-recipes-cook-mode__switch">
			<input type="checkbox" id="tasty_recipes_6ae8a32e035fa_cookmode">
			<span class="tasty-recipes-cook-mode__switch-slider tasty-recipes-cook-mode__switch-round"
				data-tasty-recipes-customization="button-color.background button-text-color.color"></span>
		</label>
		<label for="tasty_recipes_6ae8a32e035fa_cookmode">
			<span class="tasty-recipes-cook-mode__label">Cook Mode</span>
			<span class="tasty-recipes-cook-mode__helper">
				Prevent your screen from going dark			</span>
		</label>
	</div>
</div>
	</div>

	<div class="tasty-recipe-instructions">
		<div class="tasty-recipes-instructions-header">
			<h3 data-tasty-recipes-customization="h3-color.color h3-transform.text-transform">Instructions</h3>
					</div>
		<div class="tasty-recipes-instructions-body" data-tasty-recipes-customization="body-color.color">
			<ul>
<li id="instruction-step-1" class="whitespace-normal break-words pl-2">Heat the olive oil in a large pot over medium heat. Add the onion and cook for 5 minutes, stirring occasionally, until softened.</li>
<li id="instruction-step-2" class="whitespace-normal break-words pl-2">Add the garlic and celery and continue cooking for another 5 minutes.</li>
<li id="instruction-step-3" class="whitespace-normal break-words pl-2">Stir in the Italian seasoning, salt, and pepper. Add the broth, lemon juice, and pasta and stir to combine. Bring to a boil, then reduce heat to low and simmer for about 10 minutes.</li>
<li id="instruction-step-4" class="whitespace-normal break-words pl-2">Add the beans and spinach. Stir well and continue simmering for another 5 to 10 minutes until the spinach is wilted and the pasta is tender. Taste and adjust seasoning as needed.</li>
<li id="instruction-step-5" class="whitespace-normal break-words pl-2">Serve hot. A sprinkle of dried parsley on top is plenty.</li>
</ul>
		</div>
	</div>



	<div class="tasty-recipes-notes">
		<h3 data-tasty-recipes-customization="h3-color.color h3-transform.text-transform">Notes</h3>
		<div class="tasty-recipes-notes-body" data-tasty-recipes-customization="body-color.color">
			<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"><strong>Budget notes.</strong> This soup comes in around $4.10 for four servings at store-brand prices, about $1.00 per person. The two things that keep the cost down are canned beans instead of a protein, and using Italian seasoning from your pantry instead of buying a specialty herb blend. Vegetable broth is the other main cost, and a Great Value 32 oz carton runs about $2 at Walmart. You only need half of it for this recipe, so save the rest for another soup later in the week.</p>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"><strong>Use dried parsley instead of fresh.</strong> Fresh parsley runs close to $1 a bunch and you only use a small amount. Dried parsley works fine as a garnish here and saves you money.</p>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"><strong>Swap the greens.</strong> Kale or Swiss chard both work in place of spinach. They take a few extra minutes to soften but hold up better if you&#8217;re planning to eat this as leftovers throughout the week.</p>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"><strong>Make it heartier.</strong> Add a second can of beans to stretch it further, or toss in a diced carrot or zucchini with the celery. Either way, the cost stays well under $5.</p>
<p>&nbsp;</p>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"><strong>Storage.</strong> Refrigerate in an airtight container for up to 5 days. The pasta will absorb liquid as it sits, so add a splash of broth or water when reheating. Freezes well for up to 6 months.</p>
		</div>
	</div>





<footer class="tasty-recipes-entry-footer">
	<h3 data-tasty-recipes-customization="footer-heading-color.color h3-transform.text-transform footer-heading.innerText">Did you make this recipe?</h3>
	<div data-tasty-recipes-customization="footer-description-color.color footer-description.innerHTML"><p>Share a photo and tag us — we can&#8217;t wait to see what you&#8217;ve made!</p></div>
</footer>



<script>
window.trCommon={"minRating":6,"ajaxurl":"https:\/\/pennypinchinmom.com\/wp-admin\/admin-ajax.php","ratingNonce":"","postId":405275};
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(){
document.querySelectorAll('[data-tr-ingredient-checkbox]').forEach(function(el) {
var input = el.querySelector('.tr-ingredient-checkbox-container input[type="checkbox"]');
if ( ! input ) {
return;
}
if (input.checked) {
el.dataset.trIngredientCheckbox = 'checked';
}
el.addEventListener('click', function(event) {
if ( 'A' === event.target.nodeName
|| 'INPUT' === event.target.nodeName
|| 'LABEL' === event.target.nodeName ) {
return;
}
input.click();
});
input.addEventListener('change', function() {
el.dataset.trIngredientCheckbox = input.checked ? 'checked' : '';
});
});
}());

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 <= 0 ) {
return;
}
for ( const rating of ratings ) {
rating.addEventListener( 'click', event => {
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 < this.minRating ) {
commentTextarea.setAttribute( 'required', '' );
return;
}

commentTextarea.removeAttribute( 'required' );
},
maybeSendRating( rating, element ) {
if ( this.savingRating === rating ) {
return;
}

this.savingRating = rating;
window.TastyRecipes.staticTooltip.init( element );

const recipeCardElement = element.closest( '.tasty-recipes' );
if ( ! recipeCardElement ) {
window.TastyRecipes.staticTooltip.destroy();
return;
}

window.TastyRecipes.ajax.sendPostRequest(
window.trCommon.ajaxurl,
{
action: 'tasty_recipes_save_rating',
rating,
nonce: window.trCommon.ratingNonce,
post_id: window.trCommon.postId,
recipe_id: recipeCardElement.dataset.trId,
},
( response ) => {
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 );
});
</script></div><p>The post <a rel="nofollow" href="https://pennypinchinmom.com/white-bean-spinach-soup-2/">White Bean Spinach Soup</a> appeared first on <a rel="nofollow" href="https://pennypinchinmom.com">Penny Pinchin&#039; Mom</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Wendy&#8217;s Copycat Chili Recipe</title>
		<link>https://pennypinchinmom.com/wendys-copycat-chili-recipe/</link>
		
		<dc:creator><![CDATA[Penny Pinchin Mom]]></dc:creator>
		<pubDate>Mon, 25 Nov 2024 20:09:54 +0000</pubDate>
				<category><![CDATA[Entrees]]></category>
		<category><![CDATA[Soup]]></category>
		<guid isPermaLink="false">https://pennypinchinmom.com/?p=335836</guid>

					<description><![CDATA[<p>The post <a rel="nofollow" href="https://pennypinchinmom.com/wendys-copycat-chili-recipe/">Wendy&#8217;s Copycat Chili Recipe</a> appeared first on <a rel="nofollow" href="https://pennypinchinmom.com">Penny Pinchin&#039; Mom</a>.</p>
<p>When our family craves comfort food but wants to stay on budget, this copycat Wendy&#8217;s chili recipe hits the spot perfectly. I&#8217;ve tweaked the original recipe to work beautifully in a slow cooker, making it even more convenient for busy weeknights. My kids actually prefer this version to the restaurant&#8217;s &#8211; and at a fraction ... <a href="https://pennypinchinmom.com/wendys-copycat-chili-recipe/" class="more-link">Read More <span class="screen-reader-text">about  Wendy&#8217;s Copycat Chili Recipe</span></a></p>
<p>The post <a rel="nofollow" href="https://pennypinchinmom.com/wendys-copycat-chili-recipe/">Wendy&#8217;s Copycat Chili Recipe</a> appeared first on <a rel="nofollow" href="https://pennypinchinmom.com">Penny Pinchin&#039; Mom</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The post <a rel="nofollow" href="https://pennypinchinmom.com/wendys-copycat-chili-recipe/">Wendy&#8217;s Copycat Chili Recipe</a> appeared first on <a rel="nofollow" href="https://pennypinchinmom.com">Penny Pinchin&#039; Mom</a>.</p>

<p class="wp-block-paragraph">When our family craves comfort food but wants to stay on budget, this copycat Wendy&#8217;s chili recipe hits the spot perfectly. I&#8217;ve tweaked the original recipe to work beautifully in a slow cooker, making it even more convenient for busy weeknights. My kids actually prefer this version to the restaurant&#8217;s &#8211; and at a fraction of the cost!</p>



<p class="wp-block-paragraph"><strong>Other Recipes to Check Out</strong></p>



<ul class="wp-block-list">
<li><a href="https://pennypinchinmom.com/easy-white-chicken-chili/" data-type="post" data-id="332509">Easy White Chicken Chili</a></li>



<li><a href="https://pennypinchinmom.com/wp-content/uploads/2016/12/black-and-white-bean-spicy-chili.png" data-type="attachment" data-id="289702">Black And White Bean Spicy Chili Recipe</a></li>



<li><a href="https://pennypinchinmom.com/saucy-white-chili/">Saucy White Chili</a></li>
</ul>


<svg aria-hidden="true" style="position: absolute;width: 0;height: 0;overflow: hidden" xmlns="http://www.w3.org/2000/svg">
<defs>
<symbol viewbox="9 9 46 42" id="wpt-star-full">
	<path d="m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z" />
</symbol>
</defs>
</svg>
<a class="button tasty-recipes-print-button tasty-recipes-no-print tasty-recipes-print-above-card" href="https://pennypinchinmom.com/wendys-copycat-chili-recipe/print/335837/">Print</a><span class="tasty-recipes-jump-target" id="tasty-recipes-335837-jump-target" style="display:block;padding-top:2px;margin-top:-2px;"></span><div id="tasty-recipes-335837" data-tr-id="335837" class="tasty-recipes tasty-recipes-335837 tasty-recipes-display tasty-recipes-has-image">


<h2 class="tasty-recipes-title" data-tasty-recipes-customization="h2-color.color h2-transform.text-transform">Wendy&#8217;s Copycat Chili Recipe</h2>
<div class="tasty-recipes-image-button-container">
			<div class="tasty-recipes-image">
			<img decoding="async" width="150" height="150" src="https://pennypinchinmom.com/wp-content/uploads/2024/11/Wendys-Copycat-Chili-Recipe-150x150.png" class="attachment-thumbnail size-thumbnail" alt="" data-pin-nopin="true" data-pin-url="https://pennypinchinmom.com/wendys-copycat-chili-recipe/?tp_image_id=335839" />		</div>
		<div class="tasty-recipes-buttons">
				<div class="tasty-recipes-button-wrap">
			
<a class="button tasty-recipes-print-button tasty-recipes-no-print" href="https://pennypinchinmom.com/wendys-copycat-chili-recipe/print/335837/" target="_blank" data-tasty-recipes-customization="">
			<img decoding="async" class="svg-print" data-pin-nopin="true" src="https://pennypinchinmom.com/wp-content/plugins/tasty-recipes/templates/buttons/images/icon-print.png">
		Print Recipe</a>
		</div>
						<div class="tasty-recipes-button-wrap">
			
<a class="share-pin button" data-pin-custom="true" data-href="https://www.pinterest.com/pin/create/bookmarklet/?url=https%3A%2F%2Fpennypinchinmom.com%2Fwendys-copycat-chili-recipe%2F" href="https://www.pinterest.com/pin/create/bookmarklet/?url=https%3A%2F%2Fpennypinchinmom.com%2Fwendys-copycat-chili-recipe%2F" data-tasty-recipes-customization="">
			<img decoding="async" class="svg-pinterest" data-pin-nopin="true" src="https://pennypinchinmom.com/wp-content/plugins/tasty-recipes/templates/buttons/images/icon-pinterest.png">
		Pin Recipe</a>
<script>
	const share_pin_buttons = document.getElementsByClassName( 'share-pin button' );
	if ( share_pin_buttons ) {
		for ( let share_key = 0; share_key < share_pin_buttons.length; share_key++ ) {
			share_pin_buttons[share_key].addEventListener( 'click', (e) => {
				e.stopPropagation();
				window.open(e.target.dataset.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=500');
				return false;
			} );
		}
	}
</script>
		</div>
			</div>
</div>
	<div class="tasty-recipes-rating" data-tasty-recipes-customization="body-color.color">
							<p><span data-tasty-recipes-customization="detail-label-color.color" class="rating-label"></span></p>
			</div>



	<div class="tasty-recipes-details" data-tasty-recipes-customization="body-color.color">
		<ul>
							<li class="author"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Author:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-author-name">Penny Pinchin Mom</span></li>
							<li class="prep-time"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Prep Time:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-prep-time">20 minutes</span></li>
							<li class="cook-time"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Cook Time:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-cook-time">4-8 hours</span></li>
							<li class="total-time"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Total Time:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-total-time">4 hours 20 minutes &#8211; 8 hours 20 minutes</span></li>
							<li class="category"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Category:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-category">Dinner</span></li>
					</ul>
	</div>

	<div class="tasty-recipes-ingredients">
		<div class="tasty-recipes-ingredients-header">
			<div class="tasty-recipes-ingredients-clipboard-container">
				<h3 data-tasty-recipes-customization="h3-color.color h3-transform.text-transform">Ingredients</h3>
							</div>
			<div class="tasty-recipes-units-scale-container">
											</div>
		</div>
		<div class="tasty-recipes-ingredients-body" data-tasty-recipes-customization="body-color.color">
			<ul>
<li class="whitespace-normal break-words"><span data-amount="2">2</span> pounds ground beef</li>
<li class="whitespace-normal break-words"><span data-amount="29" data-unit="ounce">29 ounce</span> can tomato sauce</li>
<li class="whitespace-normal break-words"><span data-amount="29" data-unit="ounce">29 ounce</span> canned kidney beans with liquid</li>
<li class="whitespace-normal break-words"><span data-amount="29" data-unit="ounce">29 ounce</span> canned pinto beans with liquid</li>
<li class="whitespace-normal break-words"><span data-amount="1" data-unit="cup">1 cup</span> medium diced onion</li>
<li class="whitespace-normal break-words"><span data-amount="0.5" data-unit="cup">1/2 cup</span> diced green chili</li>
<li class="whitespace-normal break-words"><span data-amount="0.25" data-unit="cup">1/4 cup</span> diced celery (<span data-amount="1">1</span> stalk)</li>
<li class="whitespace-normal break-words"><span data-amount="3">3</span> medium tomatoes, chopped</li>
<li class="whitespace-normal break-words"><span data-amount="1.5" data-unit="teaspoon">1 1/2 teaspoons</span> black pepper</li>
<li class="whitespace-normal break-words"><span data-amount="2" data-unit="teaspoon">2 teaspoons</span> salt</li>
<li class="whitespace-normal break-words"><span data-amount="2" data-unit="teaspoon">2 teaspoons</span> cumin powder</li>
<li class="whitespace-normal break-words"><span data-amount="3" data-unit="tablespoon">3 tablespoons</span> chili powder</li>
<li class="whitespace-normal break-words"><span data-amount="2" data-unit="cup">2 cups</span> water<img decoding="async" class="aligncenter size-full wp-image-335838" src="https://pennypinchinmom.com/wp-content/uploads/2024/11/wendys-copycat-chili-ingredients.png" alt="" width="1447" height="882" srcset="https://pennypinchinmom.com/wp-content/uploads/2024/11/wendys-copycat-chili-ingredients.png 1447w, https://pennypinchinmom.com/wp-content/uploads/2024/11/wendys-copycat-chili-ingredients-250x152.png 250w, https://pennypinchinmom.com/wp-content/uploads/2024/11/wendys-copycat-chili-ingredients-950x579.png 950w, https://pennypinchinmom.com/wp-content/uploads/2024/11/wendys-copycat-chili-ingredients-768x468.png 768w" sizes="(max-width: 1447px) 100vw, 1447px" /></li>
</ul>
<!--INSIDE_INGREDIENTS-->		</div>
		<p
	id="shop-with-instacart-v1" 	data-affiliate_id="2676"
	data-source_origin="affiliate_hub"
	data-affiliate_platform="recipe_widget">
</p>
<div class="tasty-recipes-cook-mode">
	<div class="tasty-recipes-cook-mode__container">
		<label class="tasty-recipes-cook-mode__switch">
			<input type="checkbox" id="tasty_recipes_6ae8a32e0cb35_cookmode">
			<span class="tasty-recipes-cook-mode__switch-slider tasty-recipes-cook-mode__switch-round"
				data-tasty-recipes-customization="button-color.background button-text-color.color"></span>
		</label>
		<label for="tasty_recipes_6ae8a32e0cb35_cookmode">
			<span class="tasty-recipes-cook-mode__label">Cook Mode</span>
			<span class="tasty-recipes-cook-mode__helper">
				Prevent your screen from going dark			</span>
		</label>
	</div>
</div>
	</div>

	<div class="tasty-recipe-instructions">
		<div class="tasty-recipes-instructions-header">
			<h3 data-tasty-recipes-customization="h3-color.color h3-transform.text-transform">Instructions</h3>
					</div>
		<div class="tasty-recipes-instructions-body" data-tasty-recipes-customization="body-color.color">
			<ul>
<li id="instruction-step-1" class="whitespace-normal break-words">Brown the ground beef in a large skillet over medium heat. Drain excess fat.</li>
<li id="instruction-step-2" class="whitespace-normal break-words">Add the browned beef to your slow cooker.</li>
<li id="instruction-step-3" class="whitespace-normal break-words">Add onions, celery, chilies, and tomatoes.</li>
<li id="instruction-step-4" class="whitespace-normal break-words">Pour in the tomato sauce, kidney beans, and pinto beans (with their liquid).</li>
<li id="instruction-step-5" class="whitespace-normal break-words">Season with salt, pepper, cumin, and chili powder.</li>
<li id="instruction-step-6" class="whitespace-normal break-words">Add water and stir to combine all ingredients.</li>
<li id="instruction-step-7" class="whitespace-normal break-words">Cover and cook on low for 6-8 hours or on high for 4 hours.</li>
</ul>
		</div>
	</div>



	<div class="tasty-recipes-notes">
		<h3 data-tasty-recipes-customization="h3-color.color h3-transform.text-transform">Notes</h3>
		<div class="tasty-recipes-notes-body" data-tasty-recipes-customization="body-color.color">
			<p class="whitespace-pre-wrap break-words">This recipe makes plenty for leftovers, which taste even better the next day. I often freeze portions for quick meals on busy nights. Serve with shredded cheese, sour cream, or diced onions &#8211; just like at Wendy&#8217;s!</p>
<p>&nbsp;</p>
<p class="whitespace-pre-wrap break-words"><strong>Money-Saving Tip:</strong> Watch for sales on ground beef and stock up on canned beans when they&#8217;re discounted. I&#8217;ve found these ingredients often go on sale during the cooler months when chili season is in full swing.</p>
		</div>
	</div>





<footer class="tasty-recipes-entry-footer">
	<h3 data-tasty-recipes-customization="footer-heading-color.color h3-transform.text-transform footer-heading.innerText">Did you make this recipe?</h3>
	<div data-tasty-recipes-customization="footer-description-color.color footer-description.innerHTML"><p>Share a photo and tag us — we can&#8217;t wait to see what you&#8217;ve made!</p></div>
</footer>



<script>
window.trCommon={"minRating":6,"ajaxurl":"https:\/\/pennypinchinmom.com\/wp-admin\/admin-ajax.php","ratingNonce":"","postId":335836};
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(){
document.querySelectorAll('[data-tr-ingredient-checkbox]').forEach(function(el) {
var input = el.querySelector('.tr-ingredient-checkbox-container input[type="checkbox"]');
if ( ! input ) {
return;
}
if (input.checked) {
el.dataset.trIngredientCheckbox = 'checked';
}
el.addEventListener('click', function(event) {
if ( 'A' === event.target.nodeName
|| 'INPUT' === event.target.nodeName
|| 'LABEL' === event.target.nodeName ) {
return;
}
input.click();
});
input.addEventListener('change', function() {
el.dataset.trIngredientCheckbox = input.checked ? 'checked' : '';
});
});
}());

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 <= 0 ) {
return;
}
for ( const rating of ratings ) {
rating.addEventListener( 'click', event => {
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 < this.minRating ) {
commentTextarea.setAttribute( 'required', '' );
return;
}

commentTextarea.removeAttribute( 'required' );
},
maybeSendRating( rating, element ) {
if ( this.savingRating === rating ) {
return;
}

this.savingRating = rating;
window.TastyRecipes.staticTooltip.init( element );

const recipeCardElement = element.closest( '.tasty-recipes' );
if ( ! recipeCardElement ) {
window.TastyRecipes.staticTooltip.destroy();
return;
}

window.TastyRecipes.ajax.sendPostRequest(
window.trCommon.ajaxurl,
{
action: 'tasty_recipes_save_rating',
rating,
nonce: window.trCommon.ratingNonce,
post_id: window.trCommon.postId,
recipe_id: recipeCardElement.dataset.trId,
},
( response ) => {
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 );
});
</script></div><p>The post <a rel="nofollow" href="https://pennypinchinmom.com/wendys-copycat-chili-recipe/">Wendy&#8217;s Copycat Chili Recipe</a> appeared first on <a rel="nofollow" href="https://pennypinchinmom.com">Penny Pinchin&#039; Mom</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Easy White Chicken Chili</title>
		<link>https://pennypinchinmom.com/easy-white-chicken-chili/</link>
		
		<dc:creator><![CDATA[Penny Pinchin Mom]]></dc:creator>
		<pubDate>Mon, 01 Aug 2022 19:52:21 +0000</pubDate>
				<category><![CDATA[Side Dishes]]></category>
		<category><![CDATA[Soup]]></category>
		<guid isPermaLink="false">https://pennypinchinmom.com/?p=332509</guid>

					<description><![CDATA[<p>The post <a rel="nofollow" href="https://pennypinchinmom.com/easy-white-chicken-chili/">Easy White Chicken Chili</a> appeared first on <a rel="nofollow" href="https://pennypinchinmom.com">Penny Pinchin&#039; Mom</a>.</p>
<p>If you want an awesome alternative to beef chili, you are going to love this Easy White Chicken Chili! It’s so easy to just cook in one pan, and it’s absolutely delicious. My husband cannot stop ranting and raving about how much he loves this white chicken chili recipe! He’s made me promise that it ... <a href="https://pennypinchinmom.com/easy-white-chicken-chili/" class="more-link">Read More <span class="screen-reader-text">about  Easy White Chicken Chili</span></a></p>
<p>The post <a rel="nofollow" href="https://pennypinchinmom.com/easy-white-chicken-chili/">Easy White Chicken Chili</a> appeared first on <a rel="nofollow" href="https://pennypinchinmom.com">Penny Pinchin&#039; Mom</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The post <a rel="nofollow" href="https://pennypinchinmom.com/easy-white-chicken-chili/">Easy White Chicken Chili</a> appeared first on <a rel="nofollow" href="https://pennypinchinmom.com">Penny Pinchin&#039; Mom</a>.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-289689 size-full" src="https://pennypinchinmom.com/wp-content/uploads/2017/02/easy-white-chicken-chili-pinterest-1.png" alt="white chicken chili" width="467" height="700" srcset="https://pennypinchinmom.com/wp-content/uploads/2017/02/easy-white-chicken-chili-pinterest-1.png 467w, https://pennypinchinmom.com/wp-content/uploads/2017/02/easy-white-chicken-chili-pinterest-1-167x250.png 167w, https://pennypinchinmom.com/wp-content/uploads/2017/02/easy-white-chicken-chili-pinterest-1-267x400.png 267w" sizes="auto, (max-width: 467px) 100vw, 467px" /></p>
<p>If you want an awesome alternative to beef chili, you are going to love this Easy White Chicken Chili! It’s so easy to just cook in one pan, and it’s absolutely delicious. My husband cannot stop ranting and raving about how much he loves this white chicken chili recipe! He’s made me promise that it will be in regular rotation from now on, and I don’t mind one bit!</p>
<p>Check out these other soup and chili recipes:</p>
<ul>
<li><a href="https://pennypinchinmom.com/cream-of-broccoli-soup/">Cream of Broccoli Soup</a></li>
<li><a href="https://pennypinchinmom.com/saucy-white-chili/">Saucy White Chili</a></li>
<li><a href="https://pennypinchinmom.com/black-white-bean-spicy-chili-recipe/">Black and White Bean Saucy Chili</a></li>
<li><a href="https://pennypinchinmom.com/wendys-copycat-chili-recipe/">Wendy&#8217;s Copycat Chili</a></li>
</ul>
<p><svg aria-hidden="true" style="position: absolute;width: 0;height: 0;overflow: hidden" xmlns="http://www.w3.org/2000/svg">
<defs>
<symbol viewbox="9 9 46 42" id="wpt-star-full">
	<path d="m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z" />
</symbol>
</defs>
</svg>
<a class="button tasty-recipes-print-button tasty-recipes-no-print tasty-recipes-print-above-card" href="https://pennypinchinmom.com/easy-white-chicken-chili/print/332510/">Print</a><span class="tasty-recipes-jump-target" id="tasty-recipes-332510-jump-target" style="display:block;padding-top:2px;margin-top:-2px;"></span><div id="tasty-recipes-332510" data-tr-id="332510" class="tasty-recipes tasty-recipes-332510 tasty-recipes-display tasty-recipes-has-image">


<h2 class="tasty-recipes-title" data-tasty-recipes-customization="h2-color.color h2-transform.text-transform">Easy White Chicken Chili</h2>
<div class="tasty-recipes-image-button-container">
			<div class="tasty-recipes-image">
			<img loading="lazy" decoding="async" width="150" height="150" src="https://pennypinchinmom.com/wp-content/uploads/2017/09/easy-white-chicken-chili-pinterest-2-300x300-150x150.png" class="attachment-thumbnail size-thumbnail" alt="" data-pin-nopin="true" data-pin-url="https://pennypinchinmom.com/easy-white-chicken-chili/?tp_image_id=304176" />		</div>
		<div class="tasty-recipes-buttons">
				<div class="tasty-recipes-button-wrap">
			
<a class="button tasty-recipes-print-button tasty-recipes-no-print" href="https://pennypinchinmom.com/easy-white-chicken-chili/print/332510/" target="_blank" data-tasty-recipes-customization="">
			<img decoding="async" class="svg-print" data-pin-nopin="true" src="https://pennypinchinmom.com/wp-content/plugins/tasty-recipes/templates/buttons/images/icon-print.png">
		Print Recipe</a>
		</div>
						<div class="tasty-recipes-button-wrap">
			
<a class="share-pin button" data-pin-custom="true" data-href="https://www.pinterest.com/pin/create/bookmarklet/?url=https%3A%2F%2Fpennypinchinmom.com%2Feasy-white-chicken-chili%2F" href="https://www.pinterest.com/pin/create/bookmarklet/?url=https%3A%2F%2Fpennypinchinmom.com%2Feasy-white-chicken-chili%2F" data-tasty-recipes-customization="">
			<img decoding="async" class="svg-pinterest" data-pin-nopin="true" src="https://pennypinchinmom.com/wp-content/plugins/tasty-recipes/templates/buttons/images/icon-pinterest.png">
		Pin Recipe</a>
<script>
	const share_pin_buttons = document.getElementsByClassName( 'share-pin button' );
	if ( share_pin_buttons ) {
		for ( let share_key = 0; share_key < share_pin_buttons.length; share_key++ ) {
			share_pin_buttons[share_key].addEventListener( 'click', (e) => {
				e.stopPropagation();
				window.open(e.target.dataset.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=500');
				return false;
			} );
		}
	}
</script>
		</div>
			</div>
</div>
	<div class="tasty-recipes-rating" data-tasty-recipes-customization="body-color.color">
							<p><span data-tasty-recipes-customization="detail-label-color.color" class="rating-label"></span></p>
			</div>



	<div class="tasty-recipes-details" data-tasty-recipes-customization="body-color.color">
		<ul>
							<li class="author"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Author:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-author-name">Tracie</span></li>
							<li class="prep-time"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Prep Time:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-prep-time">10 mins</span></li>
							<li class="cook-time"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Cook Time:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-cook-time">20 mins</span></li>
							<li class="total-time"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Total Time:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-total-time">30 mins</span></li>
							<li class="yield"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Yield:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-yield">4</span></li>
							<li class="category"><strong data-tasty-recipes-customization="detail-label-color.color" class="tasty-recipes-label">Category:</strong> <span data-tasty-recipes-customization="detail-value-color.color" class="tasty-recipes-category">Soup</span></li>
					</ul>
	</div>

	<div class="tasty-recipes-ingredients">
		<div class="tasty-recipes-ingredients-header">
			<div class="tasty-recipes-ingredients-clipboard-container">
				<h3 data-tasty-recipes-customization="h3-color.color h3-transform.text-transform">Ingredients</h3>
							</div>
			<div class="tasty-recipes-units-scale-container">
											</div>
		</div>
		<div class="tasty-recipes-ingredients-body" data-tasty-recipes-customization="body-color.color">
			<ul>
<li>Two chicken breasts</li>
<li>One yellow onion, chopped</li>
<li><span data-amount="2" data-unit="tablespoon"><span data-amount="2" data-unit="tablespoon">2 tablespoon</span></span>s minced garlic</li>
<li><span data-amount="4" data-unit="cup"><span data-amount="4" data-unit="cup">4 cup</span></span>s of chicken stock</li>
<li>Two cans of Great Northern Beans</li>
<li><span data-amount="2"><span data-amount="2">2</span></span> small (4 oz) cans of chopped green chilis</li>
<li><span data-amount="0.5" data-unit="teaspoon"><span data-amount="0.5" data-unit="teaspoon">1/2 teaspoon</span></span> pepper</li>
<li><span data-amount="1" data-unit="tsp"><span data-amount="1" data-unit="tsp">1 tsp</span></span> salt</li>
<li><span data-amount="0.75" data-unit="teaspoon"><span data-amount="0.75" data-unit="teaspoon">3/4 teaspoon</span></span> oregano</li>
<li><span data-amount="1" data-unit="tsp"><span data-amount="1" data-unit="tsp">1 tsp</span></span> cumin</li>
<li><span data-amount="0.5" data-unit="teaspoon"><span data-amount="0.5" data-unit="teaspoon">1/2 teaspoon</span></span> chili powder</li>
<li><span data-amount="0.5" data-unit="teaspoon"><span data-amount="0.5" data-unit="teaspoon">1/2 teaspoon</span></span> cayenne pepper</li>
<li><span data-amount="0.25" data-unit="cup"><span data-amount="0.25" data-unit="cup">1/4 cup</span></span> fresh chopped cilantro</li>
<li><span data-amount="0.25" data-unit="cup"><span data-amount="0.25" data-unit="cup">1/4 cup</span></span> half and half</li>
<li><span data-amount="4" data-unit="oz"><span data-amount="4" data-unit="oz">4 oz</span></span> cream cheese, softened</li>
<li>Sliced avacado (optional)</li>
<li>White corn tortilla chips (optional)</li>
<li>Sour Cream (optional)</li>
</ul>
<!--INSIDE_INGREDIENTS-->		</div>
		<p
	id="shop-with-instacart-v1" 	data-affiliate_id="2676"
	data-source_origin="affiliate_hub"
	data-affiliate_platform="recipe_widget">
</p>
<div class="tasty-recipes-cook-mode">
	<div class="tasty-recipes-cook-mode__container">
		<label class="tasty-recipes-cook-mode__switch">
			<input type="checkbox" id="tasty_recipes_6ae8a32e14686_cookmode">
			<span class="tasty-recipes-cook-mode__switch-slider tasty-recipes-cook-mode__switch-round"
				data-tasty-recipes-customization="button-color.background button-text-color.color"></span>
		</label>
		<label for="tasty_recipes_6ae8a32e14686_cookmode">
			<span class="tasty-recipes-cook-mode__label">Cook Mode</span>
			<span class="tasty-recipes-cook-mode__helper">
				Prevent your screen from going dark			</span>
		</label>
	</div>
</div>
	</div>

	<div class="tasty-recipe-instructions">
		<div class="tasty-recipes-instructions-header">
			<h3 data-tasty-recipes-customization="h3-color.color h3-transform.text-transform">Instructions</h3>
					</div>
		<div class="tasty-recipes-instructions-body" data-tasty-recipes-customization="body-color.color">
			<ol>
<li id="instruction-step-1">Heat a large pot on high heat</li>
<li id="instruction-step-2">Once heated, place the chicken breasts in the bottom.</li>
<li id="instruction-step-3">Add in the onion, green chilis, beans, chicken stock, and cilantro, and mix well.</li>
<li id="instruction-step-4">Let it cook at a low boil for 5-8 minutes, stirring occasionally.</li>
<li id="instruction-step-5">Remove the chicken breasts, and shred them with a fork.</li>
<li id="instruction-step-6">Put the chicken back in the pot.</li>
<li id="instruction-step-7">Add the half and half and the softened cream cheese to the pot, and stir until completely mixed.</li>
<li id="instruction-step-8">Cook for five more minutes, stirring often.</li>
<li id="instruction-step-9">Garnish with the sour cream, avocado, and tortilla chips if desired.</li>
</ol>
		</div>
	</div>








<footer class="tasty-recipes-entry-footer">
	<h3 data-tasty-recipes-customization="footer-heading-color.color h3-transform.text-transform footer-heading.innerText">Did you make this recipe?</h3>
	<div data-tasty-recipes-customization="footer-description-color.color footer-description.innerHTML"><p>Share a photo and tag us — we can't wait to see what you've made!</p></div>
</footer>



<script>
window.trCommon={"minRating":6,"ajaxurl":"https:\/\/pennypinchinmom.com\/wp-admin\/admin-ajax.php","ratingNonce":"","postId":332509};
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(){
document.querySelectorAll('[data-tr-ingredient-checkbox]').forEach(function(el) {
var input = el.querySelector('.tr-ingredient-checkbox-container input[type="checkbox"]');
if ( ! input ) {
return;
}
if (input.checked) {
el.dataset.trIngredientCheckbox = 'checked';
}
el.addEventListener('click', function(event) {
if ( 'A' === event.target.nodeName
|| 'INPUT' === event.target.nodeName
|| 'LABEL' === event.target.nodeName ) {
return;
}
input.click();
});
input.addEventListener('change', function() {
el.dataset.trIngredientCheckbox = input.checked ? 'checked' : '';
});
});
}());

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 <= 0 ) {
return;
}
for ( const rating of ratings ) {
rating.addEventListener( 'click', event => {
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 < this.minRating ) {
commentTextarea.setAttribute( 'required', '' );
return;
}

commentTextarea.removeAttribute( 'required' );
},
maybeSendRating( rating, element ) {
if ( this.savingRating === rating ) {
return;
}

this.savingRating = rating;
window.TastyRecipes.staticTooltip.init( element );

const recipeCardElement = element.closest( '.tasty-recipes' );
if ( ! recipeCardElement ) {
window.TastyRecipes.staticTooltip.destroy();
return;
}

window.TastyRecipes.ajax.sendPostRequest(
window.trCommon.ajaxurl,
{
action: 'tasty_recipes_save_rating',
rating,
nonce: window.trCommon.ratingNonce,
post_id: window.trCommon.postId,
recipe_id: recipeCardElement.dataset.trId,
},
( response ) => {
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 );
});
</script></div></p>
<p>The post <a rel="nofollow" href="https://pennypinchinmom.com/easy-white-chicken-chili/">Easy White Chicken Chili</a> appeared first on <a rel="nofollow" href="https://pennypinchinmom.com">Penny Pinchin&#039; Mom</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 

Served from: pennypinchinmom.com @ 2026-11-02 09:50:22 by W3 Total Cache
-->