Don't hesitate to contact us Today! Phone: 877-301-7773

Email Us at onepaat@hotmail.com

No itemsNo items
  • Office of Long Term Living – Quality Assurance Helpline 800-757-5042 555 Walnut Street, Harrisburg, PA 17101-1919
  • Allegheny County Area Agency on Aging 412-350-4235 2100 Wharton Street, 2nd Fl., Pittsburgh, PA 15203
  • Beaver County Department of Aging 724-847-2262 1020 8th Ave., Beaver Falls, PA 15010
  • Cambria County Department of Aging 814-539-5595 110 Franklin Street, Johnstown, PA 15901
  • Washington County Department of Aging 724-228-6856 100 West Beau Street, Washington, PA 15301
  • Westmoreland County Department of Aging 724-830-4444 Troutman’s Building 200 S Main Street Greensburg, PA 15601

    Alternative news

  • How to Make Vanilla Cinnamon Protein Donuts

    When a donut craving strikes, most people assume they have to choose between indulgence and nutrition. Fortunately, that’s not the case with these homemade protein donuts.

    Baked instead of fried and made with protein-rich, nutrient-dense ingredients, these cinnamon vanilla protein donuts offer a satisfying way to enjoy a classic treat while supporting your health goals.

    Unlike traditional donuts, which are often loaded with refined flour, vegetable oils and excessive amounts of sugar, protein donuts are formulated with ingredients that can help provide longer-lasting energy, improved satiety and additional nutritional benefits. This recipe combines gluten-free flour, almond flour, vanilla whey protein, eggs, coconut oil, pure maple syrup and warming cinnamon to create donuts that are soft, fluffy and naturally sweetened.

    The result is a bakery-style donut with a tender crumb, rich vanilla flavor and subtle cinnamon spice. Topped with a maple vanilla glaze made from maple butter and real vanilla bean, these protein donuts work equally well as a better-for-you breakfast, post-workout snack or healthier dessert.

    As high-protein baked goods continue to grow in popularity, protein donuts have become a favorite among health-conscious consumers looking for alternatives to traditional pastries. These donuts deliver the familiar flavor and texture people love while incorporating ingredients that contribute more protein, healthy fats and beneficial nutrients.

    What are protein donuts?

    Protein donuts are baked donuts made with ingredients that provide a higher protein content than conventional donut recipes. Rather than relying solely on refined flour and sugar, protein donuts typically incorporate protein powder, eggs, nut flours or other nutrient-dense ingredients that help improve the overall nutritional profile.

    One reason protein donuts have become increasingly popular is their ability to provide greater satiety compared to traditional donuts.

    Protein plays an important role in helping support muscle maintenance and recovery while also contributing to feelings of fullness after eating. When combined with healthy fats and fiber-containing ingredients, protein-rich baked goods can help create a more balanced snack or breakfast option.

    Many protein donut recipes also utilize alternative flours, natural sweeteners and baked preparation methods rather than deep frying. This creates a donut that still delivers the soft, cake-like texture and sweet flavor people expect, but with ingredients that may better align with certain wellness goals.

    These cinnamon vanilla protein donuts are an excellent example. They contain protein from whey protein powder and eggs, healthy fats from almond flour and coconut oil, and natural sweetness from maple syrup. The combination produces a delicious donut that tastes indulgent while providing more nutritional value than many conventional options.

    Key ingredients

    Gluten-free all-purpose flour with xanthan gum

    The foundation of these protein donuts begins with gluten-free all-purpose flour. While gluten-free baking can sometimes result in dense or crumbly textures, flour blends that contain xanthan gum help create structure and elasticity that more closely resembles traditional baked goods.

    Xanthan gum acts as a binding agent, helping hold ingredients together and improving moisture retention. This contributes to the soft, cake-like texture that makes these protein donuts so enjoyable. The gluten-free flour also serves as the primary structural component of the recipe, helping the donuts maintain their shape while remaining tender.

    Almond flour

    Almond flour adds both nutritional value and texture. Made from finely ground almonds, this flour naturally contains healthy monounsaturated fats, fiber, vitamin E and plant compounds with antioxidant properties.

    From a baking perspective, almond flour contributes moisture and richness while helping create a soft crumb. Its subtle nutty flavor complements the cinnamon, maple and vanilla notes throughout the recipe.

    Because almond flour contains healthy fats, it also helps prevent baked goods from becoming dry.

    Vanilla whey protein powder

    Protein powder is what transforms this recipe from a standard baked donut into a true protein donut. Vanilla whey protein powder increases the protein content while adding flavor and helping create a more satisfying finished product.

    Whey protein is considered a complete protein because it provides all nine essential amino acids. These amino acids play important roles in muscle repair, recovery and overall protein synthesis.

    Including whey protein in baked goods is an effective way to increase protein intake without significantly altering flavor.

    The vanilla flavor also enhances the overall taste profile, creating a richer and more dessert-like experience.

    Baking powder and baking soda

    Protein-rich baked goods can sometimes become dense if they are not properly leavened. Baking powder and baking soda work together to help these protein donuts rise during baking.

    This combination creates air pockets within the batter, resulting in a lighter texture and softer crumb. Without these ingredients, the donuts would be significantly heavier and less appealing.

    Ground cinnamon

    Cinnamon provides the signature warm spice flavor that makes these protein donuts especially comforting. Beyond its flavor benefits, cinnamon contains naturally occurring plant compounds known as polyphenols that possess antioxidant activity.

    For centuries, cinnamon has been used both as a culinary spice and as a traditional wellness ingredient. Its naturally sweet flavor also helps enhance perceived sweetness without requiring additional sweeteners.

    Salt

    Although only a small amount is used, salt plays an important role in balancing flavors throughout the recipe. Salt helps amplify the sweetness of maple syrup, enhances vanilla notes and rounds out the cinnamon flavor.

    In baking, salt is often overlooked, but it contributes significantly to creating a more complex and enjoyable flavor profile.

    Eggs

    Eggs provide several important functions in these protein donuts. Nutritionally, they contribute high-quality protein, healthy fats, choline, and a variety of vitamins and minerals.

    From a baking standpoint, eggs act as a binder that helps hold the ingredients together. They also contribute moisture, structure and richness.

    The proteins in eggs help create stability within the batter, while the fats help maintain a tender texture.

    Coconut oil

    Coconut oil helps create the moist, tender texture that gives these protein donuts their bakery-style consistency. It contributes richness without overpowering the other flavors.

    Coconut oil also contains medium-chain triglycerides, a type of fat that is metabolized differently than many long-chain fatty acids. In baking, its primary role is to improve texture and moisture retention while supporting a soft crumb.

    Pure maple syrup or honey

    Rather than relying on refined sugar, this recipe uses pure maple syrup or honey as a natural sweetener.

    Maple syrup provides a rich flavor that pairs beautifully with vanilla and cinnamon while contributing trace amounts of minerals, such as manganese and zinc. Honey offers a similar natural sweetness and contains various beneficial plant compounds.

    In addition to sweetness, both ingredients contribute moisture, helping create soft and tender protein donuts.

    Milk

    Milk helps hydrate the batter and ensures the ingredients combine smoothly. Whether using dairy milk or a plant-based alternative, milk contributes moisture and helps create the proper consistency for baking.

    Depending on the variety selected, milk may also provide protein, calcium and other essential nutrients.

    Vanilla extract

    While optional, vanilla extract significantly enhances the flavor of these protein donuts. Vanilla helps bring together the maple, cinnamon and protein powder flavors while adding warmth and depth.

    Even a small amount can elevate the overall taste and create a more dessert-like experience.

    Maple butter

    Maple butter serves as the foundation of the glaze that finishes these protein donuts. Made by heating and whipping pure maple syrup, maple butter provides concentrated maple flavor with a smooth, spreadable consistency.

    When used as a glaze, it adds sweetness and richness without requiring conventional frosting ingredients.

    Vanilla bean

    Real vanilla bean provides an intense vanilla flavor that is difficult to replicate with extract alone. The tiny black specks from vanilla bean seeds also give the glaze a premium, gourmet appearance.

    In addition to its rich aroma, vanilla contains naturally occurring antioxidant compounds that contribute to its appeal as both a culinary and wellness ingredient.

    How to make vanilla cinnamon protein donuts

    Making homemade protein donuts is surprisingly simple and requires only a few basic baking steps. Begin by preheating the oven to 350 degrees Fahrenheit and lightly greasing a silicone donut pan with coconut oil.

    In a large mixing bowl, whisk together the gluten-free all-purpose flour, almond flour, vanilla whey protein powder, baking powder, baking soda, ground cinnamon and salt. Combining the dry ingredients first helps ensure the leavening agents and spices are distributed evenly throughout the batter.

    In a separate bowl, whisk together the eggs, melted coconut oil, pure maple syrup or honey, milk, and optional vanilla extract until smooth and fully incorporated. This mixture provides the moisture, richness and sweetness that help create a tender donut texture.

    Next, pour the wet ingredients into the dry ingredients, and stir gently until just combined. Avoid overmixing, which can affect the final texture of the donuts.

    Once the batter is ready, spoon or pipe it into the prepared donut molds, filling each about three-quarters full to allow room for rising during baking. Bake for approximately 15 to 20 minutes, or until the tops are lightly golden and a toothpick inserted into the center comes out clean.

    After baking, allow the donuts to cool in the pan for several minutes before transferring them to a wire rack.

    For an optional finishing touch, prepare a simple maple vanilla glaze by gently softening maple butter and stirring in freshly scraped vanilla bean seeds or vanilla bean paste. Once the donuts have cooled completely, drizzle or spread the glaze over the tops.

    The result is a batch of soft, fluffy protein donuts with warm cinnamon flavor, rich vanilla notes and a naturally sweet maple finish that tastes every bit as indulgent as a traditional bakery donut.

    More healthy baked goods

    In addition to these protein donuts, you can make other healthy donut recipes and baked goods you can enjoy guilt-free. Here are some recipes to try:

    Julia Trigo, who runs delight-fuel, is a vocationally trained cook from Austria, food nerd and lover of fitness. Her goal is to help people achieve complete health and well-being by sharing her knowledge of healthy living and clean cooking with fresh and whole foods.

    Print
    Vanilla cinnamon protein donuts

    Vanilla Cinnamon Protein Donuts


    5 Stars 4 Stars 3 Stars 2 Stars 1 Star

    No reviews

    • Author: Julia Trigo
    • Total Time: 30 minutes
    • Yield: 10
    • Diet: Gluten Free
    const share_pin_buttons = document.getElementsByClassName( 'share-pin button' ); if ( share_pin_buttons ) { for ( let share_key = 0; share_key { 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; } ); } }

    Description

    These homemade protein donuts are baked, gluten-free and naturally sweetened with maple syrup. They make for a delicious high-protein breakfast or snack.


    Ingredients

    Dry ingredients:

    • 1½ cups gluten-free all-purpose flour (with xanthan gum)
    • ½ cup almond flour
    • 1 scoop vanilla whey protein powder
    • 1 teaspoon baking powder
    • ½ teaspoon baking soda
    • 1½ teaspoons ground cinnamon
    • ¼ teaspoon salt

    Wet ingredients:

    • 2 large eggs
    • ⅓ cup melted coconut oil
    • ½ cup pure maple syrup
    • ½ cup milk of choice (dairy or non-dairy)
    • 1 teaspoon vanilla extract (optional)

    Maple vanilla glaze (optional):

    • ¼ cup maple butter
    • ½ vanilla bean pod, seeds scraped (or ½ teaspoon vanilla bean paste)

    Instructions

    1. Preheat the oven to 350 degrees F, and lightly grease a silicone donut pan with coconut oil.
    2. In a large bowl, whisk together the flour, protein powder, baking powder, baking soda, cinnamon and salt.
    3. In a separate bowl, whisk the eggs, melted coconut oil, maple syrup, milk and vanilla until smooth.
    4. Add the wet ingredients to the dry ingredients, and stir until just combined.
    5. Spoon or pipe batter into donut molds, filling each about ¾ full.
    6. Bake for 15 to 20 minutes, or until a toothpick comes out clean.
    7. Cool in the pan for 5 minutes, then transfer to a wire rack.
    8. Warm maple butter over low heat, and then stir in vanilla bean seeds or paste.
    9. Dip or drizzle cooled donuts with glaze.
    10. Let glaze set for 30 to 60 minutes before serving.
    • Prep Time: 10 min
    • Cook Time: 20 min
    • Category: Desserts
    • Method: Baking
    • Cuisine: American

    Nutrition

    • Serving Size: 1 donut (74g)
    • Calories: 237
    • Sugar: 10.6g
    • Sodium: 154mg
    • Fat: 11.5g
    • Saturated Fat: 7g
    • Unsaturated Fat: 3.7g
    • Trans Fat: 0g
    • Carbohydrates: 28.1g
    • Fiber: 1.4g
    • Protein: 6.4g
    • Cholesterol: 39mg
    window.trCommon={"minRating":6,"ajaxurl":"https:\/\/draxe.com\/wp-admin\/admin-ajax.php","ratingNonce":"","postId":368731}; 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() ); window.TastyRecipes = window.TastyRecipes || {}; window.TastyRecipes.cookMode = { wakeLockApi: false, wakeLock: false, cookModeSelector: '.tasty-recipes-cook-mode', init() { if ("wakeLock" in navigator && "request" in navigator.wakeLock) { this.wakeLockApi = navigator.wakeLock; } const cookModes = document.querySelectorAll(this.cookModeSelector); if (cookModes.length > 0) { for (const cookMode of cookModes) { if (this.wakeLockApi) { cookMode.querySelector('input[type="checkbox"]').addEventListener("change", event => { this.checkboxChange(event.target); }, false); } else { cookMode.style.display = "none"; } } } }, checkboxChange(checkbox) { if (checkbox.checked) { this.lock(); } else { this.unlock(); } }, setCheckboxesState(state) { const checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type="checkbox"]'); for (const checkbox of checkboxes) { checkbox.checked = state; } }, async lock() { try { this.wakeLock = await this.wakeLockApi.request("screen"); this.wakeLock.addEventListener("release", () => { this.wakeLock = false; this.setCheckboxesState(false); }); this.setCheckboxesState(true); } catch (error) { this.setCheckboxesState(false); } }, unlock() { if (this.wakeLock) { this.wakeLock.release(); this.wakeLock = false; } this.setCheckboxesState(false); } }; (function(callback) { if (document.readyState !== "loading") { callback(); } else { document.addEventListener("DOMContentLoaded", callback); } })(() => { window.TastyRecipes.cookMode.init(); }); window.TastyRecipes = window.TastyRecipes || {}; window.TastyRecipes.staticTooltip = { element: null, tooltipElement: null, deleting: false, init( element ) { if ( this.deleting ) { return; } this.element = element; this.buildElements(); }, destroy() { if ( ! this.tooltipElement || this.deleting ) { return; } this.deleting = true; this.tooltipElement.classList.remove( 'opened' ); setTimeout( () => { this.tooltipElement.remove(); this.deleting = false; }, 500 ); }, buildElements() { const tooltipElement = document.createElement( 'div' ); tooltipElement.classList.add( 'tasty-recipes-static-tooltip'); tooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' ); const currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' ); if ( currentTooltipElement ) { document.body.replaceChild( tooltipElement, currentTooltipElement ); } else { document.body.appendChild( tooltipElement ); } this.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' ); }, show() { if ( ! this.tooltipElement ) { return; } const tooltipTop = this.element.getBoundingClientRect().top + window.scrollY - 10 // 10px offset. - this.tooltipElement.getBoundingClientRect().height; const tooltipLeft = this.element.getBoundingClientRect().left - ( this.tooltipElement.getBoundingClientRect().width / 2 ) + ( this.element.getBoundingClientRect().width / 2 ) - 1; const posLeft = Math.max( 10, tooltipLeft ); this.maybeRemoveTail( posLeft !== tooltipLeft ); this.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' ); this.tooltipElement.classList.add( 'opened' ); }, maybeRemoveTail( removeTail ) { if ( removeTail ) { this.tooltipElement.classList.add( 'tr-hide-tail' ); } else { this.tooltipElement.classList.remove( 'tr-hide-tail' ); } }, changeMessage( message ) { if ( ! this.tooltipElement ) { return; } this.tooltipElement.innerHTML = message; } }; window.TastyRecipes.ajax = { sendPostRequest( url, data, success, failure ) { const xhr = new XMLHttpRequest(); xhr.open( 'POST', url, true ); xhr.send( this.preparePostData( data ) ); xhr.onreadystatechange = () => { if ( 4 !== xhr.readyState ) { return; } if ( xhr.status === 200 ) { success( JSON.parse( xhr.responseText ) ); return; } failure( xhr ); }; xhr.onerror = () => { failure( xhr ); }; }, preparePostData( data ) { const formData = new FormData(); for ( const key in data ) { formData.append( key, data[key] ); } return formData; }, }; window.TastyRecipes.ratings = { defaultRating: 0, currentRatingPercentage: 100, savingRating: false, init( minRating ) { this.minRating = minRating; this.formWatchRating(); this.closeTooltipWhenClickOutside(); this.addBodyClassBasedOnSelectedRating(); this.backwardCompFormRatingPosition(); }, formWatchRating() { const ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]'); if ( ratings.length { event.preventDefault(); this.defaultRating = event.target.closest( '.checked' ).dataset.rating; this.setCheckedStar( event.target ); this.maybeSendRating( this.defaultRating, event.target ); this.setRatingInForm( this.defaultRating ); } ); } }, closeTooltipWhenClickOutside() { window.addEventListener( 'click', e => { // Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself. if ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) { return; } window.TastyRecipes.staticTooltip.destroy(); } ); }, setRatingInForm( rating ) { const ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value="' + rating + '"]' ); if ( ! ratingInput ) { return; } ratingInput.click(); }, addBodyClassBasedOnSelectedRating() { const ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' ); if ( ! ratingInputs ) { return; } for ( const ratingInput of ratingInputs ) { ratingInput.addEventListener( 'click', currentEvent => { const selectedRating = currentEvent.target.getAttribute( 'value' ); this.handleBodyClassByRating( selectedRating ); this.toggleCommentTextareaRequired( selectedRating ); } ); } }, handleBodyClassByRating( rating ) { if ( rating < this.minRating ) { document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' ); return; } document.body.classList.add( 'tasty-recipes-selected-minimum-rating' ); }, toggleCommentTextareaRequired( rating ) { const commentTextarea = document.getElementById( 'comment' ); if ( ! commentTextarea ) { return; } if ( rating { window.TastyRecipes.staticTooltip.changeMessage( response.data.message ); window.TastyRecipes.staticTooltip.show(); this.updateAverageText( response.data, recipeCardElement ); this.maybeFillCommentForm( response.data ); // Hide the tooltip after 5 seconds. setTimeout( () => { this.maybeResetTooltip( recipeCardElement, response.data, rating ); }, 5000 ); }, () => { this.resetTooltip( recipeCardElement ); } ); }, updateAverageText( data, recipeCardElement ) { if ( ! data.average ) { return; } this.setRatingPercent( data ); if ( ! data.count ) { return; } const quickLink = document.querySelector( '.tasty-recipes-rating-link' ); if ( quickLink ) { this.setTextInContainer( quickLink, data ); this.setPartialStar( quickLink ); } const cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' ); cardStars.dataset.trDefaultRating = data.average; this.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data ); }, setTextInContainer( container, data ) { if ( ! container ) { return; } if ( data.label ) { const ratingLabelElement = container.querySelector( '.rating-label' ); if ( ratingLabelElement ) { ratingLabelElement.innerHTML = data.label; } return; } const averageElement = container.querySelector( '.average' ); if ( averageElement ) { averageElement.textContent = data.average; } const countElement = container.querySelector( '.count' ); if ( countElement ) { countElement.textContent = data.count; } }, setPartialStar( container ) { const highestStar = container.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' ); if ( highestStar ) { highestStar.dataset.trClip = this.currentRatingPercentage; } }, setRatingPercent( data ) { this.defaultRating = data.average.toFixed( 1 ); const parts = data.average.toFixed( 2 ).toString().split( '.' ); this.currentRatingPercentage = parts[1] ? parts[1] : 100; if ( this.currentRatingPercentage === '00' ) { this.currentRatingPercentage = 100; } }, setCheckedStar( target ) { const cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' ); const selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' ); if ( selectedRatingElement ) { delete selectedRatingElement.dataset.trChecked; } const thisStar = target.closest( '.tasty-recipes-rating' ); thisStar.dataset.trChecked = 1; thisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100; }, maybeFillCommentForm( data ) { if ( ! data.comment || ! data.comment.content ) { return; } const commentForm = document.querySelector( '#commentform' ); if ( ! commentForm ) { return; } const commentBox = commentForm.querySelector( '[name=comment]' ); if ( ! commentBox || commentBox.value ) { return; } // Add comment details for editing. commentBox.innerHTML = data.comment.content; if ( data.comment.name ) { commentForm.querySelector( '[name=author]' ).value = data.comment.name; commentForm.querySelector( '[name=email]' ).value = data.comment.email; } }, maybeResetTooltip( recipeCardElement, data, rating ) { if ( this.savingRating === rating ) { this.resetTooltip( recipeCardElement, data ); } }, resetTooltip( recipeCardElement, data ) { window.TastyRecipes.staticTooltip.destroy(); this.savingRating = false; // Reset the default rating. const cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' ); if ( cardRatingContainer ) { this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating; cardRatingContainer.dataset.trDefaultRating = this.defaultRating; this.resetSelectedStar( cardRatingContainer, data ); } }, resetSelectedStar( cardRatingContainer ) { const selectedRatingElement = cardRatingContainer.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' ); if ( selectedRatingElement ) { selectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage; selectedRatingElement.parentNode.dataset.trChecked = 1; } const previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' ); if ( previousSelectedElement ) { const currentSelectedRating = previousSelectedElement.querySelector('[data-rating]'); if ( currentSelectedRating !== selectedRatingElement ) { delete previousSelectedElement.dataset.trChecked; } } }, backwardCompFormRatingPosition() { const ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' ); if ( ! ratingsButtons ) { return; } const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons); if ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) { ratingsButtons.style.direction = 'rtl'; } if ( typeof tastyRecipesRating !== 'undefined' ) { // Select the rating that was previously selected in admin. ratingsButtons.querySelector( '.tasty-recipes-rating[value="' + tastyRecipesRating + '"]' ).checked = true; } const ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' ); for (const ratingSpan of ratingSpans) { ratingSpan.addEventListener( 'click', event => { if ( ratingSpan === event.target ) { return; } ratingSpan.previousElementSibling.click(); } ); } } }; (function(callback) { if (document.readyState !== "loading") { callback(); } else { window.addEventListener( 'load', callback ); } })(() => { window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 ); });

    The post How to Make Vanilla Cinnamon Protein Donuts appeared first on Dr. Axe.

    Read more »
  • 11 Spring Soups, Including the Best Seasonal Ingredients

    Spring soups are the perfect bridge between hearty winter comfort foods and the lighter, fresher meals of warmer weather. As seasonal produce like asparagus, peas, carrots, leeks, spinach and fresh herbs begin appearing at farmers markets and grocery stores, it’s an ideal time to make nourishing bowls packed with flavor and nutrition.

    Unlike heavier cold-weather stews, spring soups often feature vibrant vegetables, bright herbs and lighter broths while still delivering satisfying protein, fiber and healthy fats. They’re versatile enough for lunch, dinner or meal prep, and many spring soup recipes help you naturally eat more vegetables without sacrificing comfort.

    Whether you’re looking for creamy spring soup recipes, broth-based spring soups or nutrient-dense vegetable blends, these healthy recipes highlight some of the best ingredients the season has to offer. Seasonal soups can also help support hydration, digestion and balanced eating thanks to their high water and nutrient content.

    What are spring soups?

    Spring soups are soups made with seasonal spring ingredients, typically featuring fresh vegetables, leafy greens, herbs and lighter broths compared to heavier winter soups. Common ingredients in spring soup recipes include asparagus, peas, spinach, carrots, leeks, fennel, artichokes, spring onions, and fresh herbs like parsley, dill and basil.

    Many spring soups combine nutrient-dense vegetables with proteins and healthy fats to create balanced meals that feel both comforting and refreshing. Some spring soup recipes are creamy and blended, while others are broth-based with chunky vegetables and grains.

    The concept of seasonal soups has existed for centuries, with spring soups traditionally highlighting newly harvested vegetables after winter. Historical references to “spring soup” date back to at least the 1800s, often describing soups made with fresh seasonal herbs and vegetables.

    What are the benefits of eating spring soups?

    Eating spring soups offers several health and wellness benefits, especially when they’re made with fresh seasonal produce and balanced ingredients.

    1. Helps increase vegetable intake

    Spring soup recipes make it easy to consume multiple servings of vegetables in a single meal. Ingredients like spinach, asparagus, peas and carrots provide vitamins, minerals, antioxidants and fiber.

    One study published in the International Journal for Vitamin and Nutrition Research analyzed dietary habits in more than 4,900 French adults and found that people who consumed soup regularly had significantly higher intakes of vegetables and important nutrients like beta-carotene, folate and vitamin C compared to non-soup consumers.

    Researchers concluded that soup consumption “may be beneficial in promotional programs to increase vegetable consumption” because soups often serve as an easy, palatable way to incorporate more vegetables into the diet.

    2. Supports hydration

    Because soups contain a high water content, they can help support hydration while also delivering nutrients and electrolytes.

    Research published in Medicine and Science in Sports and Exercise found that consuming soup before exercise helped improve fluid retention and hydration status compared to water alone.

    3. Can support healthy weight management

    Many spring soups are naturally lower in calories while still being filling because they contain fiber-rich vegetables, protein and broth-based liquids.

    One study published in the journal Appetite found that eating soup before a meal significantly reduced overall calorie intake and increased feelings of fullness, which may support healthy weight management. In the study, adults who consumed a low-energy-dense soup before lunch ate about 20 percent fewer calories during the meal compared to when no soup was consumed.

    Researchers concluded that soup can help moderate energy intake by promoting satiety without increasing hunger later on.

    4. Encourages seasonal eating

    Eating seasonally often means fresher ingredients with better flavor and nutrient quality. Seasonal produce may also be more affordable and environmentally friendly.

    5. May aid digestive health

    Vegetables, legumes and herbs used in spring soups can provide fiber that helps support gut health and digestion.

    A study published in the European Journal of Clinical Nutrition found that soup consumption slowed gastric emptying and increased feelings of digestive comfort and satiety compared to solid foods with the same ingredients and calorie content. Researchers concluded that the liquid structure of soup may positively influence gastrointestinal function by promoting slower digestion and enhancing digestive processing in the stomach.

    6. Easy to meal prep

    Many spring soup recipes store well in the refrigerator or freezer, making them convenient for busy schedules.

    What are the best ingredients for spring soups?

    The best ingredients for spring soups are fresh, seasonal vegetables and herbs that add flavor, color and nutrients without making the soup feel overly heavy.

    Some of the top spring soup ingredients include:

    • Asparagus
    • Green peas
    • Leeks
    • Spinach
    • Carrots
    • Spring onions
    • Fennel
    • Artichokes
    • Mushrooms
    • Fresh herbs
    • Bone broth or vegetable broth
    • Lentils and beans
    • Chicken
    • Coconut milk
    • Olive oil

    These ingredients can help create balanced spring soups that provide protein, fiber and healthy fats for satiety and nutrition. Adding legumes, lean proteins or ancient grains can also make spring soup recipes more filling and satisfying.

    Here is a bit more on the best ingredients to use to make spring soup recipes:

    1. Seasonal spring vegetables

    One of the best parts of making spring soups is taking advantage of fresh seasonal produce from your local grocery store or farmers market. Some of the top choices include:

    • Asparagus: tender with a mildly sweet flavor that’s synonymous with spring
    • Green peas or snap peas: naturally sweet and vibrant
    • Spinach or mixed baby greens: light, versatile and packed with nutrients
    • Leeks: offer a delicate onion-like flavor ideal for soups
    • Young carrots: bring natural sweetness and bright color
    • Fennel: contributes a subtle licorice-like taste
    • Artichokes: earthy, hearty and in season during spring

    2. Ingredients for texture and creaminess

    You don’t need heavy cream, flour or excess pasta to create a rich, satisfying soup. These ingredients can add body while keeping spring soups lighter:

    • Potatoes: blend beautifully into a naturally creamy texture
    • Cauliflower: a lighter option that still adds smoothness
    • White beans: provide creaminess along with plant-based protein and fiber

    3. Flavorful broth options

    A well-made broth creates the foundation for delicious spring soup recipes while keeping them light and nourishing. Consider using:

    • Vegetable broth
    • Chicken broth
    • Bone broth for added richness and protein

    4. Protein additions

    Many spring soups can be low in protein, so adding a quality protein source can help make them more balanced and satisfying. Great additions include:

    • Shredded chicken
    • Whitefish pieces
    • Lentils or chickpeas
    • White beans
    • Poached or soft-boiled eggs
    • Bone broth as the soup base

    5. Healthy fats for satiety and flavor

    Including healthy fats can help make soups more satisfying while enhancing flavor and texture. Some good options are:

    • Coconut milk for added creaminess
    • Avocado oil or olive oil for sautéing vegetables
    • A drizzle of olive oil before serving
    • Avocado slices, pesto or Greek yogurt as toppings

    6. Simple ways to boost flavor

    Flavor is what transforms a basic soup into something memorable. These ingredients can brighten and deepen the flavor of spring soups:

    • Fresh lemon juice or lemon zest
    • Apple cider vinegar
    • Garlic and fresh ginger
    • Herbs like parsley, dill, basil, mint and chives

    Healthy spring soup recipes

    1. Asparagus soup

    Asparagus soup

    Spring is the season for asparagus, one of the first green vegetables to show up. Classic asparagus soup is often made with cream, but this version gets its creaminess from Yukon gold potatoes and chicken bone broth, which also helps add protein.

    In a medium stockpot, heat olive oil on medium heat. Add scallions, and cook for 2 minutes. Add the potatoes, garlic, salt, pepper and chicken broth.

    Allow it to come to a boil, and then simmer on low heat for 15 minutes or until potatoes are fork tender. Add the asparagus, and cook for 10 more minutes.

    Remove it from the heat, and allow it to cool for about 5 minutes.

    Transfer the soup to a blender, and add the frozen peas, lemon juice and lemon zest. Blend on high. Add the basil, and continue to blend until smooth and fully combined.

    Make the gremolata (do this while the asparagus cooks). In a small bowl, mix the parsley, breadcrumbs and lemon zest. Sprinkle it on top of the soup.

    Macros: Each 273-calorie serving contains 28 grams of carbohydrates, 7 grams of fiber, 6 grams of fat and 19 grams of protein.

    2. Carrot ginger soup

    Carrot ginger soup

    Carrot and ginger are a classic spring pairing, balancing sweet, earthy carrots with pungent, warming ginger.

    Make this carrot ginger soup with three cups of carrots, half an Idaho potato, half an onion and optional shredded chicken as the base. Add a couple cups of vegetable broth or chicken bone broth.

    Use butter or olive oil as the fat, and then add about one-third cup coconut milk.

    Flavor the soup with freshly grated ginger, garlic, cinnamon, pepper and sea salt. After cooking and blending the soup, stir in fresh dill.

    Macros: Each 236-calorie serving contains roughly 19 grams of carbohydrates, 4 grams of fiber, 12 grams of fat and 15 grams of protein.

    You can also try this carrot ginger soup recipe.

    3. Miso soup

    Miso soup

    This traditional Japanese soup uses a miso broth made from softened miso paste. Other ingredients include bone broth, mushrooms, vegetables, leafy greens and seaweed.

    Heat water and bone broth in a medium pot over medium heat until it reaches a gentle simmer. Add the mushrooms, onion, garlic, ginger, collard greens, seaweed and coconut aminos, and cook for about five minutes until the vegetables begin to soften.

    While the soup cooks, place the miso in a small bowl with a small amount of hot water, and whisk until smooth. Remove the soup from the heat, stir in the dissolved miso mixture until combined, then divide into two bowls and serve warm.

    It’s flavorful, low in calories and gut-friendly.

    Macros: Each 173-calorie serving contains 24 grams of carbohydrates, 2 grams of fat and 17 grams of protein.

    Here is another miso soup recipe to try.

    4. Potato leek soup

    Potato leek soup

    Potato leek soup is often thought of as a winter dish, but leeks are a spring vegetable. To make this version feel lighter and more spring-like, it uses cauliflower along with potatoes and skips milk or heavy cream.

    Use half a medium head of cauliflower, one onion, a couple of leeks, three stalks of celery and two Yukon gold potatoes, peeled and chopped. Use butter as the fat.

    Cook with six cups of water and five scoops of chicken bone broth.

    For flavor, add a bay leaf and fresh thyme. After cooking and blending, top with cooked turkey bacon pieces and sliced green onions.

    Macros: Each 334-calorie serving contains roughly 54 grams of carbohydrates, 7 grams of fiber, 10 grams of fat and 18 grams of protein.

    Here is another potato leek soup recipe you can make.

    5. Creamy broccoli soup

    Creamy broccoli soup

    Cream of broccoli soup is often loaded with butter and flour, but this version uses coconut oil, coconut milk and bone broth to create texture along with quality fats.

    With broccoli, greens, green onions and garlic, this creamy broccoli soup is nutrient-rich. One serving provides at least 100 percent of the daily required value of manganese, vitamin A, vitamin C and vitamin K.

    Begin by preparing and chopping all of the vegetables.

    Heat the oil in a large soup pot over medium heat. Then add the green onions and garlic, and sauté for one to two minutes until softened and fragrant.

    Stir in the broccoli, and continue cooking, stirring often, until it becomes vibrant green. Add the basil and remaining greens, cover the pot, and allow the vegetables to steam for about three to four minutes.

    Carefully transfer the cooked vegetables to a food processor or high-speed blender, working in batches if needed, and blend with a small amount of the coconut milk until smooth and creamy. Return the puréed mixture to the pot, and then stir in the remaining coconut milk, broth, salt and curry powder.

    Warm the soup gently over medium heat for about 10 minutes, stirring occasionally, before serving.

    Macros: Each 362-calorie serving contains roughly 32 grams of carbohydrates, 15 grams of fiber, 20 grams of fat and 25 grams of protein.

    You can also try this creamy broccoli soup recipe or even creamy broccoli soup with cheese.

    6. Broccoli cauliflower soup

    Broccoli cauliflower soup

    Broccoli soup is familiar, but broccoli cauliflower soup brings two cruciferous vegetables together for a flavorful, colorful soup with help from turmeric.

    Use half a head of cauliflower and half a head of broccoli for the base, and then use olive oil and coconut milk as the fat. Cook in a bone broth base.

    For flavor, add garlic, turmeric, curry powder, whole grain mustard, pepper and sea salt. After cooking and blending, mix in fresh lemon juice, fresh cilantro and dill.

    Macros: Each 210-calorie serving contains roughly 9 grams of carbohydrates, 5 grams of fiber, 16 grams of fat and 11 grams of protein.

    Try this cauliflower soup recipe as well, or make a curried cauliflower soup.

    7. Blended pea soup

    Blended pea soup

    Peas are a classic spring vegetable, though frozen peas also work well in this blended pea soup. It also includes chickpeas and anti-inflammatory spices.

    The bulk of this soup comes from one can of chickpeas, drained and rinsed, three parsnips and four cups of peas. The fat comes from one cup of coconut milk, and the liquid is six cups of chicken bone broth.

    Flavor it with curry paste, coriander, turmeric, ginger, garlic powder, pepper and sea salt. Cook for about 20 minutes, and then blend. Top with fresh cilantro and chopped cooked beef bacon.

    Macros: Each 297-calorie serving contains roughly 29 grams of carbohydrates, 9 grams of fiber, 16 grams of fat and 16 grams of protein.

    8. Kennett Square mushroom soup

    Kennett Square mushroom soup

    Kennett Square is considered the “mushroom capital of the world,” producing around 60 percent of mushrooms in the U.S. This mushroom soup makes the most of those earthy spring flavors.

    Sauté four diced shallots in avocado oil in a pot. Add six cups of fresh mushrooms, such as crimini, shiitake and oyster, along with two chopped leeks, whites only, and four chopped celery stalks. Sauté briefly.

    Add one cup coconut milk and four cups of chicken bone broth. Stir in one tablespoon of herbs de Provence.

    Optionally add sherry, making sure to cook it off. Cook for about 45 minutes, or make it in an Instant Pot for 10 minutes.

    Blend the soup, adding arrowroot powder to thicken if desired.

    Macros: Each 359-calorie serving contains roughly 53 grams of carbohydrates, 8 grams of fiber, 17 grams of fat and 12 grams of protein.

    9. French onion soup

    French onion soup

    Classic French onion soup can be overly rich for an everyday meal, but this homemade version is more balanced in macros.
    To make it more spring-like, use spring onions and fresh thyme.

    Melt the butter in a Dutch oven over medium heat, and then gradually add the onions, cooking and stirring frequently until softened and deeply caramelized.

    Season with sea salt, and continue cooking over lower heat until the onions develop a rich golden color and sweet flavor. Increase the heat slightly, and pour in the wine to deglaze the pan, allowing the liquid to cook down into the onions. Stir in the chickpea flour to help thicken the soup base.

    In a separate saucepan, prepare the chicken broth by whisking the bone broth protein into hot water until smooth. Add the prepared chicken broth, beef broth, additional bone broth protein, balsamic vinegar, thyme, sea salt and pepper to the onions.

    Bring the soup to a boil, reduce to a simmer and cook until the flavors meld together.

    Meanwhile, toast the bread cubes in the oven until lightly crisp and golden. To serve, ladle the soup into oven-safe bowls, top with the toasted bread and sprinkle generously with Gruyère cheese.

    Place the bowls under the broiler for a few minutes until the cheese is melted, bubbly and golden brown, and then serve immediately.

    Macros: Each 343-calorie serving contains 18 grams of carbohydrates, 3 grams of fiber, 16 grams of fat and 26 grams of protein.

    Here is another healthy French onion soup you can make.

    10. Red lentil soup

    Red lentil soup

    This healthy, low-calorie vegan soup is loaded with vitamin A, vitamin C and vitamin K while still being satisfying. It uses spring greens like kale and Swiss chard, along with young carrots and spring onions.

    Sauté chopped celery, spring onions, garlic and carrots with coconut oil in a large soup pot. Add six cups vegetable broth or chicken bone broth for more protein, one cup red lentils, two cups chopped kale or Swiss chard, fresh thyme, black pepper, and sea salt.

    Cook for 25 minutes or until the lentils are tender.

    Macros: Each 206-calorie serving contains 33 grams of carbohydrates, 5 grams of fiber, 8 grams of fat and 6 grams of protein.

    11. Spring minestrone soup

    See the recipe card below for how to make this spring soup recipe.

    Frequently asked questions

    What are the best vegetables for spring soups?

    Some of the best vegetables for spring soups include asparagus, peas, carrots, spinach, leeks, fennel, artichokes and green beans because they’re fresh, flavorful and nutrient-dense during spring.

    Are spring soups healthy?

    Yes, many spring soup recipes are highly nutritious because they typically contain vegetables, fiber, protein and healthy fats while being lower in calories than heavier winter dishes.

    Can you freeze spring soups?

    Most spring soups freeze well, especially broth-based soups and blended vegetable soups. Cream-based soups may separate slightly after thawing but can usually be reheated successfully.

    What protein can you add to spring soups?

    Chicken, lentils, white beans, chickpeas and collagen-rich broth are all excellent protein additions for spring soup recipes.

    What makes a soup a spring soup?

    A spring soup usually features lighter textures and seasonal spring ingredients, such as peas, asparagus, herbs, spinach and leeks, instead of heavier winter vegetables and cream-heavy bases.

    Conclusion

    • Spring soups are one of the best ways to enjoy the fresh flavors of the season while nourishing your body with vegetables, fiber, protein and healthy fats.
    • Whether you prefer creamy spring soup recipes, broth-based spring soups or hearty vegetable blends, these recipes make it easy to enjoy seasonal eating in a comforting and satisfying way.
    • From asparagus and peas to spinach and fresh herbs, spring soup recipes highlight some of the most nutrient-dense ingredients available during the season.
    • Adding these healthy spring soups into your meal rotation can help support balanced nutrition, hydration and easy meal prep throughout spring.
    Print
    Spring soups

    Spring Minestrone Soup Recipe


    5 Stars 4 Stars 3 Stars 2 Stars 1 Star

    No reviews

    • Author: Ethan Boldt
    • Total Time: 40 minutes
    • Yield: 4
    • Diet: Gluten Free
    const share_pin_buttons = document.getElementsByClassName( 'share-pin button' ); if ( share_pin_buttons ) { for ( let share_key = 0; share_key { 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; } ); } }

    Description

    A classic spring minestrone soup features light, fresh ingredients, typically combining leeks, carrots, asparagus, baby potatoes, green beans, peas and spinach in a savory broth, finished with lemon and parmesan. This veggie-packed one-pot meal is perfect for early spring, often elevated with white beans and pesto.


    Ingredients

    • 2 tablespoons extra virgin olive oil
    • 1 leek, chopped (or 1 bunch green onions)
    • 2 cloves garlic, minced
    • 6 cups chicken bone broth
    • 1 pound Yukon gold potatoes, chopped into chunks
    • ½ pound asparagus, woody ends removed, cut into 1-inch pieces
    • 1 cup shelled fresh peas (or frozen)
    • 1 cup sugar snap peas (trimmed)
    • 1 (15-ounce) can chickpeas or cannellini beans (rinsed and drained)
    • 2 handfuls fresh spinach
    • sea salt and black pepper to taste

    Optional:

    • lemon juice
    • fresh herbs (dill, mint or parsley)
    • fresh Parmesan cheese
    • pesto

    Instructions

    1. Heat olive oil in a large pot over medium heat.
    2. Add leeks (or green onions), and cook until soft, about 5 minutes.
    3. Add garlic, and cook for 1 minute until fragrant.
    4. Add the stock and potatoes. Bring to a boil, then reduce heat and simmer for 10 minutes until potatoes are almost tender.
    5. Add the asparagus, peas, sugar snap peas and chickpeas. Cook for another 5 to 8 minutes until all vegetables are tender but still bright green.
    6. Stir in the spinach, and cook just until wilted, about 1 minute. Remove from heat, and stir in fresh lemon juice or herbs.
    7. Ladle into bowls, and top with freshly grated Parmesan cheese or pesto.
    • Prep Time: 15 min
    • Cook Time: 25 min
    • Category: Soups
    • Method: Stovetop
    • Cuisine: American

    Nutrition

    • Serving Size: 1 bowl (690g)
    • Calories: 258
    • Sugar: 9.2g
    • Sodium: 217mg
    • Fat: 10.9g
    • Saturated Fat: 1.8g
    • Unsaturated Fat: 8.2g
    • Trans Fat: 0g
    • Carbohydrates: 48.3g
    • Fiber: 10.5g
    • Protein: 33.5g
    • Cholesterol: 0mg
    window.trCommon={"minRating":6,"ajaxurl":"https:\/\/draxe.com\/wp-admin\/admin-ajax.php","ratingNonce":"","postId":358371}; 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() ); window.TastyRecipes = window.TastyRecipes || {}; window.TastyRecipes.cookMode = { wakeLockApi: false, wakeLock: false, cookModeSelector: '.tasty-recipes-cook-mode', init() { if ("wakeLock" in navigator && "request" in navigator.wakeLock) { this.wakeLockApi = navigator.wakeLock; } const cookModes = document.querySelectorAll(this.cookModeSelector); if (cookModes.length > 0) { for (const cookMode of cookModes) { if (this.wakeLockApi) { cookMode.querySelector('input[type="checkbox"]').addEventListener("change", event => { this.checkboxChange(event.target); }, false); } else { cookMode.style.display = "none"; } } } }, checkboxChange(checkbox) { if (checkbox.checked) { this.lock(); } else { this.unlock(); } }, setCheckboxesState(state) { const checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type="checkbox"]'); for (const checkbox of checkboxes) { checkbox.checked = state; } }, async lock() { try { this.wakeLock = await this.wakeLockApi.request("screen"); this.wakeLock.addEventListener("release", () => { this.wakeLock = false; this.setCheckboxesState(false); }); this.setCheckboxesState(true); } catch (error) { this.setCheckboxesState(false); } }, unlock() { if (this.wakeLock) { this.wakeLock.release(); this.wakeLock = false; } this.setCheckboxesState(false); } }; (function(callback) { if (document.readyState !== "loading") { callback(); } else { document.addEventListener("DOMContentLoaded", callback); } })(() => { window.TastyRecipes.cookMode.init(); }); window.TastyRecipes = window.TastyRecipes || {}; window.TastyRecipes.staticTooltip = { element: null, tooltipElement: null, deleting: false, init( element ) { if ( this.deleting ) { return; } this.element = element; this.buildElements(); }, destroy() { if ( ! this.tooltipElement || this.deleting ) { return; } this.deleting = true; this.tooltipElement.classList.remove( 'opened' ); setTimeout( () => { this.tooltipElement.remove(); this.deleting = false; }, 500 ); }, buildElements() { const tooltipElement = document.createElement( 'div' ); tooltipElement.classList.add( 'tasty-recipes-static-tooltip'); tooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' ); const currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' ); if ( currentTooltipElement ) { document.body.replaceChild( tooltipElement, currentTooltipElement ); } else { document.body.appendChild( tooltipElement ); } this.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' ); }, show() { if ( ! this.tooltipElement ) { return; } const tooltipTop = this.element.getBoundingClientRect().top + window.scrollY - 10 // 10px offset. - this.tooltipElement.getBoundingClientRect().height; const tooltipLeft = this.element.getBoundingClientRect().left - ( this.tooltipElement.getBoundingClientRect().width / 2 ) + ( this.element.getBoundingClientRect().width / 2 ) - 1; const posLeft = Math.max( 10, tooltipLeft ); this.maybeRemoveTail( posLeft !== tooltipLeft ); this.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' ); this.tooltipElement.classList.add( 'opened' ); }, maybeRemoveTail( removeTail ) { if ( removeTail ) { this.tooltipElement.classList.add( 'tr-hide-tail' ); } else { this.tooltipElement.classList.remove( 'tr-hide-tail' ); } }, changeMessage( message ) { if ( ! this.tooltipElement ) { return; } this.tooltipElement.innerHTML = message; } }; window.TastyRecipes.ajax = { sendPostRequest( url, data, success, failure ) { const xhr = new XMLHttpRequest(); xhr.open( 'POST', url, true ); xhr.send( this.preparePostData( data ) ); xhr.onreadystatechange = () => { if ( 4 !== xhr.readyState ) { return; } if ( xhr.status === 200 ) { success( JSON.parse( xhr.responseText ) ); return; } failure( xhr ); }; xhr.onerror = () => { failure( xhr ); }; }, preparePostData( data ) { const formData = new FormData(); for ( const key in data ) { formData.append( key, data[key] ); } return formData; }, }; window.TastyRecipes.ratings = { defaultRating: 0, currentRatingPercentage: 100, savingRating: false, init( minRating ) { this.minRating = minRating; this.formWatchRating(); this.closeTooltipWhenClickOutside(); this.addBodyClassBasedOnSelectedRating(); this.backwardCompFormRatingPosition(); }, formWatchRating() { const ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]'); if ( ratings.length { event.preventDefault(); this.defaultRating = event.target.closest( '.checked' ).dataset.rating; this.setCheckedStar( event.target ); this.maybeSendRating( this.defaultRating, event.target ); this.setRatingInForm( this.defaultRating ); } ); } }, closeTooltipWhenClickOutside() { window.addEventListener( 'click', e => { // Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself. if ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) { return; } window.TastyRecipes.staticTooltip.destroy(); } ); }, setRatingInForm( rating ) { const ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value="' + rating + '"]' ); if ( ! ratingInput ) { return; } ratingInput.click(); }, addBodyClassBasedOnSelectedRating() { const ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' ); if ( ! ratingInputs ) { return; } for ( const ratingInput of ratingInputs ) { ratingInput.addEventListener( 'click', currentEvent => { const selectedRating = currentEvent.target.getAttribute( 'value' ); this.handleBodyClassByRating( selectedRating ); this.toggleCommentTextareaRequired( selectedRating ); } ); } }, handleBodyClassByRating( rating ) { if ( rating < this.minRating ) { document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' ); return; } document.body.classList.add( 'tasty-recipes-selected-minimum-rating' ); }, toggleCommentTextareaRequired( rating ) { const commentTextarea = document.getElementById( 'comment' ); if ( ! commentTextarea ) { return; } if ( rating { window.TastyRecipes.staticTooltip.changeMessage( response.data.message ); window.TastyRecipes.staticTooltip.show(); this.updateAverageText( response.data, recipeCardElement ); this.maybeFillCommentForm( response.data ); // Hide the tooltip after 5 seconds. setTimeout( () => { this.maybeResetTooltip( recipeCardElement, response.data, rating ); }, 5000 ); }, () => { this.resetTooltip( recipeCardElement ); } ); }, updateAverageText( data, recipeCardElement ) { if ( ! data.average ) { return; } this.setRatingPercent( data ); if ( ! data.count ) { return; } const quickLink = document.querySelector( '.tasty-recipes-rating-link' ); if ( quickLink ) { this.setTextInContainer( quickLink, data ); this.setPartialStar( quickLink ); } const cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' ); cardStars.dataset.trDefaultRating = data.average; this.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data ); }, setTextInContainer( container, data ) { if ( ! container ) { return; } if ( data.label ) { const ratingLabelElement = container.querySelector( '.rating-label' ); if ( ratingLabelElement ) { ratingLabelElement.innerHTML = data.label; } return; } const averageElement = container.querySelector( '.average' ); if ( averageElement ) { averageElement.textContent = data.average; } const countElement = container.querySelector( '.count' ); if ( countElement ) { countElement.textContent = data.count; } }, setPartialStar( container ) { const highestStar = container.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' ); if ( highestStar ) { highestStar.dataset.trClip = this.currentRatingPercentage; } }, setRatingPercent( data ) { this.defaultRating = data.average.toFixed( 1 ); const parts = data.average.toFixed( 2 ).toString().split( '.' ); this.currentRatingPercentage = parts[1] ? parts[1] : 100; if ( this.currentRatingPercentage === '00' ) { this.currentRatingPercentage = 100; } }, setCheckedStar( target ) { const cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' ); const selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' ); if ( selectedRatingElement ) { delete selectedRatingElement.dataset.trChecked; } const thisStar = target.closest( '.tasty-recipes-rating' ); thisStar.dataset.trChecked = 1; thisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100; }, maybeFillCommentForm( data ) { if ( ! data.comment || ! data.comment.content ) { return; } const commentForm = document.querySelector( '#commentform' ); if ( ! commentForm ) { return; } const commentBox = commentForm.querySelector( '[name=comment]' ); if ( ! commentBox || commentBox.value ) { return; } // Add comment details for editing. commentBox.innerHTML = data.comment.content; if ( data.comment.name ) { commentForm.querySelector( '[name=author]' ).value = data.comment.name; commentForm.querySelector( '[name=email]' ).value = data.comment.email; } }, maybeResetTooltip( recipeCardElement, data, rating ) { if ( this.savingRating === rating ) { this.resetTooltip( recipeCardElement, data ); } }, resetTooltip( recipeCardElement, data ) { window.TastyRecipes.staticTooltip.destroy(); this.savingRating = false; // Reset the default rating. const cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' ); if ( cardRatingContainer ) { this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating; cardRatingContainer.dataset.trDefaultRating = this.defaultRating; this.resetSelectedStar( cardRatingContainer, data ); } }, resetSelectedStar( cardRatingContainer ) { const selectedRatingElement = cardRatingContainer.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' ); if ( selectedRatingElement ) { selectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage; selectedRatingElement.parentNode.dataset.trChecked = 1; } const previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' ); if ( previousSelectedElement ) { const currentSelectedRating = previousSelectedElement.querySelector('[data-rating]'); if ( currentSelectedRating !== selectedRatingElement ) { delete previousSelectedElement.dataset.trChecked; } } }, backwardCompFormRatingPosition() { const ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' ); if ( ! ratingsButtons ) { return; } const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons); if ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) { ratingsButtons.style.direction = 'rtl'; } if ( typeof tastyRecipesRating !== 'undefined' ) { // Select the rating that was previously selected in admin. ratingsButtons.querySelector( '.tasty-recipes-rating[value="' + tastyRecipesRating + '"]' ).checked = true; } const ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' ); for (const ratingSpan of ratingSpans) { ratingSpan.addEventListener( 'click', event => { if ( ratingSpan === event.target ) { return; } ratingSpan.previousElementSibling.click(); } ); } } }; (function(callback) { if (document.readyState !== "loading") { callback(); } else { window.addEventListener( 'load', callback ); } })(() => { window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 ); });

    The post 11 Spring Soups, Including the Best Seasonal Ingredients appeared first on Dr. Axe.

    Read more »

    Alternative news


    Alternative news