Vegetable Stuffing

Looking for a delicious and CKD-friendly dish to enjoy this holiday season or any time of year? This Vegetable Stuffing Casserole is the perfect choice, offering a flavorful blend of fresh vegetables, healthy fats, and low-sodium ingredients that are gentle on the kidneys. Whether you're managing chronic kidney disease or simply looking for a healthier alternative, this stuffing is a savory, satisfying option that doesn't compromise on taste.

As a Registered Dietitian Nutritionist (RDN) with extensive experience in guiding individuals through dietary management for chronic kidney disease (CKD), I am committed to sharing recipes that are both nutritious and kidney-friendly. With years of specialized expertise, I focus on developing meal options that cater to CKD patients' unique nutritional needs while promoting better health and enjoyment of food. My knowledge ensures that each recipe, including this Easy Stuffing with Vegetables, is carefully curated to provide both flavor and safety for those managing kidney health.

This Vegetable Stuffing is crafted to align with CKD dietary requirements by using low-sodium vegetable broth, fresh vegetables, and herbs to maximize flavor without relying on excess salt. The inclusion of kidney-friendly ingredients like carrots, celery, and mushrooms ensures that the dish is low in potassium and sodium, making it a safe and satisfying option for those managing chronic kidney disease. By incorporating healthy fats and moderate protein, this recipe supports balanced nutrition while prioritizing kidney health.

If you are looking for other kidney friendly side dishes, we have a cranberry walnut stuffing with apples that you might like and a broccoli crunch salad that makes a great crispy side dish.

[feast_advanced_jump_to]Ingredients For Stuffing Vegetable Casserole

The ingredients for this Easy Vegetable Stuffing Recipe are carefully selected to bring a balance of flavor, texture, and nutrition, perfect for those following a CKD-friendly diet. From fresh vegetables and aromatic seasonings to low-sodium broth and hearty French bread, each component works together to create a delicious, wholesome dish that's easy to prepare.

close up of Vegetable Stuffing ingredientsFrench Bread – The cubed French bread provides a hearty base for the stuffing, allowing it to absorb the flavorful broth without becoming too soggy.Olive Oil – Olive oil is used for sautéing the vegetables and adds healthy fats, which can support heart health and are a good option for those with CKD.White Onion – Onions offer natural sweetness and flavor to the stuffing, while being low in sodium and a good source of antioxidants.Carrots – Carrots add a subtle sweetness and color to the stuffing, and they’re rich in vitamins and fiber, contributing to overall kidney health.Celery – Celery brings a crunchy texture and fresh flavor, while being a low-potassium, kidney-friendly vegetable suitable for CKD diets.Mushrooms – Mushrooms are a low-calorie, low-sodium vegetable, providing depth of flavor and antioxidants that are beneficial for CKD management.Garlic – Garlic enhances the flavor profile of the stuffing while offering potential cardiovascular benefits and supporting kidney health.Poultry Seasoning – Poultry seasoning is a blend of herbs and spices that adds savory depth to the stuffing without extra sodium, making it a CKD-friendly choice.Balsamic Vinegar – Balsamic vinegar adds tangy richness to the stuffing and provides a burst of flavor without the need for added salt.Low Sodium Vegetable Broth – Low-sodium vegetable broth serves as the liquid base, imparting flavor while minimizing sodium intake, essential for a CKD diet.Eggs – Eggs act as a binding agent for the stuffing, providing protein without being excessively high in phosphorus, which is beneficial for kidney health.Fresh Parsley – Fresh parsley adds a burst of color and freshness to the stuffing, along with vitamins and minerals that support kidney and overall health.

See recipe card for quantities.How To Make Vegetarian Stuffing Casserole

Now that you have all your ingredients ready, it's time to bring this Vegetable Dressing to life with a few simple steps. Follow these instructions to create a flavorful, kidney-friendly dish that's perfect for any occasion.

Step 1 of Vegetable StuffingPreheat oven to 325'F. Spread cubed bread onto a baking sheet. Bake bread until mostly dried out and crisp, about 30 minutes. Toss it halfway through. Once bread is done toasting, set aside to cool and increase oven temperature to 400'FStep 2 Vegetable Stuffing

2. Heat 3 tablespoon of olive oil in a large skillet over medium heat. Add the onions, carrot and celery and cook until they have begun to soften, about 5 minutes.

Step 3 of Vegetable Stuffing

3. Add mushrooms to skillet, and cook until they have begun to brown and loose their liquid. This is about 6-8 minutes.

Spray a 9x13 in pan with pan spray. Place the prepared stuffing in the pan.

Step 4 of Vegetable Stuffing

4.Add garlic and poultry seasoning and mix to combine.

Step 5 Vegetable Stuffing

5. Add balsamic vinegar and scrape up the brown bits on the bottom of the pan. Add 1 cup of broth and simmer for 2-3 minutess

Step 6 of Vegetable Stuffing

6. Add bread cubes to a large bowl, then pour the vegetable and broth mixture over the top.

7. Mix eggs and remaining cup of broth in a small bowl then pour over the bread and vegetable mixture.

8. Add the chopped parsley and mix very well, letting the bread soak up the broth.

Step 9 of Vegetable Stuffing

9. Spray a 9x13 in pan with pan spray. Place the prepared stuffing in the pan.

Step 10 of Vegetable Stuffing

10. Bake in the oven until the stuffing is set and top is crunchy and brown. About 30 minutes.

Hint: Pre-toast the Bread: Make sure the bread cubes are fully dried and crisp before mixing them with the other ingredients to avoid a mushy stuffing.

Substitutions For A Stuffing with Vegetables

For those needing to tailor the Vegetable Stuffing to specific dietary requirements, these substitutions can help maintain kidney health without sacrificing flavor.

Low-Sodium Broth Alternatives: Opt for homemade vegetable broth or water infused with herbs if low-sodium broth is unavailable.Replace Eggs: Use a flaxseed mixture (1 tablespoon ground flaxseed 3 tablespoons water per egg) as an egg substitute for those managing cholesterol intake.No Balsamic Vinegar: Substitute balsamic vinegar with apple cider vinegar or a splash of lemon juice to reduce acidity and match CKD requirements.

These tips, variations, and substitutions ensure this stuffing remains versatile, flavorful, and suited to your kidney-friendly lifestyle.

Perfectly Done Vegetable StuffingVariations on Stuffing Recipe with Vegetables

To make this Stuffing with Vegetables even more adaptable to your dietary needs, consider trying these CKD-friendly variations. Each option ensures you can enjoy new flavors while staying within safe nutritional limits.

Whole Grain Twist: Use whole-grain bread for added fiber if tolerated, which can support better digestion and kidney health.Add Fresh Herbs: Substitute dried poultry seasoning with a blend of fresh thyme, rosemary, and sage for a burst of natural flavor without added sodium.Vegetable Variety: Swap out carrots for parsnips or add diced bell peppers for a slightly different taste that remains low in potassium.Storage

To keep your Vegetable Stuffing fresh and maintain its CKD-friendly qualities, follow these storage tips:

Refrigeration: Store any leftover stuffing in an airtight container in the refrigerator for up to 3-4 days. Be sure to let it cool completely before sealing it in the container to prevent moisture buildup.Freezing: For longer storage, freeze the stuffing in individual portions or a single large container. Wrap it tightly in plastic wrap or aluminum foil, then place it in a freezer-safe bag or container. It can be stored for up to 2-3 months. When ready to eat, thaw overnight in the refrigerator and reheat in the oven for the best texture.Reheating: To reheat, cover the stuffing with foil and warm it in the oven at 350°F for about 20-25 minutes, or until heated through. This helps maintain its moisture and ensures the top stays crispy. You can also reheat individual portions in the microwave, but the oven method keeps the texture better.

These storage methods will help you enjoy your Vegetable Stuffing safely and conveniently while keeping it fresh and kidney-friendly.

Top TipUse Day-Old Bread: If possible, use slightly stale bread, as it absorbs the broth better and gives the stuffing a great textureFAQs about Vegetarian Christmas StuffingCan I make this Vegetable Stuffing ahead of time?

Yes, you can prep the stuffing a day in advance! Prepare the vegetable mixture and toast the bread, then store both separately in the refrigerator. When ready to bake, simply combine the ingredients and proceed with the recipe as instructed.

Can I use a different type of bread for this recipe?

Absolutely! While French bread works well for this stuffing, you can substitute with whole-grain bread for added fiber, or gluten-free bread if you need a gluten-free option. Just make sure the bread is firm enough to hold up when mixed with the broth.

Is this recipe suitable for someone with high potassium levels?

Yes, this recipe is kidney-friendly, with low-potassium ingredients like celery, carrots, and mushrooms. However, if you're particularly sensitive to potassium, you can adjust the vegetables by limiting higher-potassium items or consulting with a healthcare provider for additional guidance.

Related Side Dish Recipes

Looking for other recipes to serve with easy vegetable stuffing? Try these:

Bowl of Corn Pasta SaladCorn Pasta SaladClose Up Of Sugar Free ApplesauceSugar Free ApplesauceClose Up Of Roasted Cabbage Steaks in white plate.Oven Roasted Cabbage SteaksPerfectly done Cranberry Apple Walnut StuffingCranberry Apple Walnut StuffingPairing with Stuffing with Vegetables

These are my favorite dishes to serve with Vegetable Stuffing Recipe:

Close Up Of Vegetable StuffingVegetable StuffingClose Up Of Dairy Free Creme BruleeDairy Free Creme BruleeClose Up Of Roasted Cauliflower SteaksRoasted Cauliflower Steaks with ParmesanClose Up Of Zucchini Mushroom Frittata (2)Zucchini Mushroom FrittataCheck Out Our Meal Plans For People With Chronic Kidney Disease (CKD)

If you tried this Recipe or any other recipe on my website, please please leave a star rating and let me know how it goes in the comments below. I love hearing from you!

PrintRecipeStuffing Recipe with Vegetables Bowl of Vegetable Stuffing [image error] Print Recipe [image error] Pin Recipe 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; } ); } }

5 Stars 4 Stars 3 Stars 2 Stars 1 Star

No reviews

This Vegetable Stuffing Recipe is a flavorful, kidney-friendly dish made with fresh vegetables, low-sodium broth, and aromatic herbs. Perfect for those following a CKD-friendly diet, it’s a healthy and delicious side that pairs well with any meal.

Author: Mathea Ford, MBA, RDN, LD Prep Time: 5 minutes Cook Time: 1hr 30 minutes Total Time: 1hr 35 minutes Yield: 12 Category: Entree Method: Bake Cuisine: American Diet: Vegetarian Ingredients Units USM 14 ounce loaf of sliced french bread loaf, cut into ½ in cubes - about 10 cups3 tbsp olive oil1 ½ cups diced white onion1 ½ cup diced carrots1 cup diced celery4 cups white button or cremini mushrooms, stems removed and chopped small4 tbsp minced garlic3 tbsp poultry seasoning1 tbsp balsamic vinegar2 cups low sodium vegetable broth2 large eggs¼ cup chopped fresh parsley

Cook Mode Prevent your screen from going dark Instructions Preheat oven to 325'F. Spread cubed bread onto a baking sheet. Bake bread until mostly dried out and crisp, about 30 minutes. Toss it halfway through. Once bread is done toasting, set aside to cool and increase oven temperature to 400'FHeat 3 tablespoon of olive oil in a large skillet over medium heat. Add the onions, carrot and celery and cook until they have begun to soften, about 5 minutes.Add mushrooms to skillet, and cook until they have begun to brown and loose their liquid. This is about 6-8 minutes.Add garlic and poultry seasoning and mix to combine.Add balsamic vinegar and scrape up the brown bits on the bottom of the pan. Add 1 cup of broth and simmer for 2-3 minutes.Add bread cubes to a large bowl, then pour the vegetable and broth mixture over the top.Mix eggs and remaining cup of broth in a small bowl then pour over the bread and vegetable mixture.Add the chopped parsley and mix very well, letting the bread soak up the broth.Spray a 9x13 in pan with pan spray. Place the prepared stuffing in the pan.Bake in the oven until the stuffing is set and top is crunchy and brown. About 30 minutes. (function(){ window.addEventListener( 'message', function( event ){ if ( ( 'https://nutrifox.com' !== event.origin && 'https://nutrifox.test' !== event.origin ) || typeof event.data !== 'string' ) { return; } var payload = JSON.parse( event.data ); switch ( payload.event ) { case 'setHeight': var iframe = document.getElementById( 'nutrifox-label-' payload.recipeId ); iframe.style.height = payload.height 'px'; break; } } );}()); Did you make this recipe?

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

window.trCommon={"minRating":6,"ajaxurl":"https:\/\/www.renaldiethq.com\/wp-admin\/admin-... = window.TastyRecipes || {};window.TastyRecipes.smoothScroll = {init() {document.addEventListener( 'click', ( e ) => {let anchor = e.target;if ( anchor.tagName !== 'A' ) {anchor = anchor.closest( 'a.tasty-recipes-scrollto' );}if ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {return;}const elementHref = anchor.getAttribute( 'href' );if ( ! elementHref ) {return;}e.preventDefault();this.goToSelector( elementHref );});},goToSelector( selector ) {const element = document.querySelector( selector );if ( ! element ) {return;}element.scrollIntoView( { behavior: 'smooth' } );}};document.addEventListener('DOMContentLoaded',() => window.TastyRecipes.smoothScroll.init());(function(){var bothEquals = function( d1, d2, D ) {var ret = 0;if (d1<=D) {ret ;}if (d2<=D) {ret ;}return ret === 2;};var frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1 1,d2=1;if(x!==n1)while(bothEquals(d1,d2,D)){var m=(n1 n2)/(d1 d2);if(x===m){if(d1 d2<=D){d1 =d2;n1 =n2;d2=D 1}else if(d1>d2)d2=D 1;else d1=D 1;break}else if(x<m){n2=n1 n2;d2=d1 d2}else{n1=n1 n2;d1=d1 d2}}if(d1>D){d1=d2;n1=n2}if(!mixed)return[0,n1,d1];var q=Math.floor(n1/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1 P_2;Q=A*Q_1 Q_2;if(B-A<5e-8)break;B=1/(B-A);P_2=P_1;P_1=P;Q_2=Q_1;Q_1=Q}if(Q>D){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed)return[0,sgn*P,Q];var q=Math.floor(sgn*P/Q);return[q,sgn*P-q*Q,Q]};window.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent("{"¼":"1/4","½":"1/2","¾":"3/4","â":"1/3","â":"2/3","â":"1/5","â":"2/5","â":"3/5","â":"4/5","â":"1/6","âš":"5/6","â›":"1/8","âœ":"3/8","â":"5/8","âž":"7/8"}"));window.tastyRecipesFormatAmount = function(amount, el) {if ( parseFloat( amount ) === parseInt( amount ) ) {return amount;}var roundType = 'frac';if (typeof el.dataset.amountShouldRound !== 'undefined') {if ('false' !== el.dataset.amountShouldRound) {if ( 'number' === el.dataset.amountShouldRound ) {roundType = 'number';} else if ('frac' === el.dataset.amountShouldRound) {roundType = 'frac';} else if ('vulgar' === el.dataset.amountShouldRound) {roundType = 'vulgar';} else {roundType = 'integer';}}}if ('number' === roundType) {amount = Number.parseFloat(amount).toPrecision(2);} else if ('integer' === roundType) {amount = Math.round(amount);} else if ('frac' === roundType || 'vulgar' === roundType) {var denom = 8;if (typeof el.dataset.unit !== 'undefined') {var unit = el.dataset.unit;if (['cups','cup','c'].includes(unit)) {denom = 4;if (0.125 === amount) {denom = 8;}if ("0.1667" === Number.parseFloat( amount ).toPrecision(4)) {denom = 6;}}if (['tablespoons','tablespoon','tbsp'].includes(unit)) {denom = 2;}if (['teaspoons','teaspoon','tsp'].includes(unit)) {denom = 8;}}var amountArray = frac.cont( amount, denom, true );var newAmount = '';if ( amountArray[1] !== 0 ) {newAmount = amountArray[1] '/' amountArray[2];if ('vulgar' === roundType) {Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {if (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {newAmount = vulgar;}});}}if ( newAmount ) {newAmount = ' ' newAmount;}if ( amountArray[0] ) {newAmount = amountArray[0] newAmount;}amount = newAmount;}return amount;};window.tastyRecipesUpdatePrintLink = () => {const printButton = document.querySelector( '.tasty-recipes-print-button' );if ( ! printButton ) {return;}const printURL = new URL( printButton.href );const searchParams = new URLSearchParams( printURL.search );const unitButton = document.querySelector( '.tasty-recipes-convert-button-active' );const scaleButton = document.querySelector( '.tasty-recipes-scale-button-active' );let unit = '';let scale = '';if ( unitButton ) {unit = unitButton.dataset.unitType;searchParams.delete('unit');searchParams.set( 'unit', unit );}if ( scaleButton ) {scale = scaleButton.dataset.amount;searchParams.set( 'scale', scale );}const paramString = searchParams.toString();const newURL = '' === paramString ? printURL.href : printURL.origin printURL.pathname '?' paramString;const printLinks = document.querySelectorAll( '.tasty-recipes-print-link' );printLinks.forEach( ( el ) => {el.href = newURL;});const printButtons = document.querySelectorAll( '.tasty-recipes-print-button' );printButtons.forEach( ( el ) => {el.href = newURL;});};document.addEventListener( 'DOMContentLoaded', () => {if ( ! window.location.href.includes( '/print/' ) ) {return;}const searchParams = new URLSearchParams( window.location.search );const unit = searchParams.get( 'unit' );const scale = searchParams.get( 'scale' );if ( unit && ( 'metric' === unit || 'usc' === unit ) ) {document.querySelector( '.tasty-recipes-convert-button[data-unit-type="' unit '"]' ).click();}if ( scale && Number(scale) > 0 ) {document.querySelector( '.tasty-recipes-scale-button[data-amount="' Number(scale) '"]' ).click();}});}());(function(){var buttonClass = 'tasty-recipes-convert-button',buttonActiveClass = 'tasty-recipes-convert-button-active',buttons = document.querySelectorAll('.tasty-recipes-convert-button');if ( ! buttons ) {return;}buttons.forEach(function(button){button.addEventListener('click', function(event){event.preventDefault();var recipe = event.target.closest('.tasty-recipes');if ( ! recipe ) {return;}var otherButtons = recipe.querySelectorAll('.' buttonClass);otherButtons.forEach(function(bt){bt.classList.remove(buttonActiveClass);});button.classList.add(buttonActiveClass);var unitType = button.dataset.unitType;var dataset = 'nf' unitType.charAt(0).toUpperCase() unitType.slice(1);var convertables = recipe.querySelectorAll('span[data-nf-original]');convertables.forEach(function(convertable){if (typeof convertable.dataset.amountOriginalType === 'undefined'&& 'usc' === convertable.dataset.nfOriginal) {if (-1 !== convertable.innerText.indexOf('/')) {convertable.dataset.amountOriginalType = 'frac';}if (-1 !== convertable.innerText.indexOf('.')) {convertable.dataset.amountOriginalType = 'number';}Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {if (-1 !== convertable.innerText.indexOf(vulgar)) {convertable.dataset.amountOriginalType = 'vulgar';}});}convertable.innerText = convertable.dataset[dataset];if (typeof convertable.dataset.unit !== 'undefined') {convertable.dataset.unit = convertable.dataset[dataset 'Unit'];}if (typeof convertable.dataset.amount !== 'undefined') {convertable.dataset.amount = convertable.dataset[dataset];if ('metric' === unitType) {convertable.dataset.amountShouldRound = parseInt(convertable.dataset.amount) >= 10 ? 'integer' : 'number';} else if (typeof convertable.dataset.amountOriginalType !== 'undefined') {convertable.dataset.amountShouldRound = convertable.dataset.amountOriginalType;} else {convertable.dataset.amountShouldRound = false;}convertable.innerText = window.tastyRecipesFormatAmount(convertable.dataset[dataset], convertable);}if (convertable.classList.contains('nutrifox-unit')) {if ('gram' === convertable.dataset[dataset]) {convertable.innerText = 'grams';}}});document.querySelectorAll('.tasty-recipes-scale-button-active').forEach(function(scaleButton){scaleButton.click();});window.tastyRecipesUpdatePrintLink();});});}());(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 );});Recipe Card powered by [image error]

The post Vegetable Stuffing appeared first on Renal Diet HQ.

 •  0 comments  •  flag
Share on Twitter
Published on November 29, 2024 06:40
No comments have been added yet.