If you’re looking for a delightful treat that perfectly captures the essence of fall, these Swirled Pumpkin Cream Cheese Muffins are just what you need! They’re not only moist and fluffy but also come with a sweet cream cheese swirl that melts beautifully as they bake. Whether you’re enjoying a cozy morning at home or hosting a fun family gathering, these muffins will surely become a favorite in your home.

These muffins are super easy to whip up, taking just 30 minutes from start to finish. Perfect for busy weeknights or lazy weekends, you’ll love how they fill your kitchen with the warm aromas of pumpkin and spices!


Why You’ll Love This Recipe
- Quick and easy preparation: With just 30 minutes needed, you can have these muffins ready in no time!
- Family-friendly appeal: Everyone loves the combination of pumpkin and cream cheese—perfect for kids and adults alike.
- Make-ahead convenience: Bake a batch ahead of time for breakfasts or snacks throughout the week.
- Deliciously festive flavor: The blend of pumpkin spice and cream cheese makes every bite feel like a celebration of autumn.
Ingredients You’ll Need
This recipe calls for simple, wholesome ingredients that you probably already have in your pantry. Let’s gather everything we need to create these scrumptious muffins!
- 1 3/4 cups all purpose flour
- 1 tablespoon pumpkin spice
- 1 teaspoon baking soda
- 1/2 teaspoon salt
- 1 (15 oz) can pumpkin puree
- 1 cup granulated sugar
- 1/2 cup packed brown sugar
- 2 large eggs
- 1/2 cup vegetable oil (or melted and cooled butter)
- 1 tablespoon vanilla extract
- 8 oz cream cheese (room temperature)
- 1/4 cup granulated sugar
- 1 large egg yolk (room temperature)
- 2 teaspoons vanilla extract
Variations
One of the best things about these muffins is their flexibility! Feel free to get creative with some variations that suit your taste or dietary preferences.
- Add nuts or chocolate chips: Toss in some chopped walnuts or chocolate chips for an extra crunch or sweetness.
- Make it vegan: Substitute eggs with flaxseed meal mixed with water and use plant-based cream cheese for a delicious vegan version.
- Swap the spices: Experiment with different spices like nutmeg or ginger for a unique flavor twist.
- Try different fillings: Instead of cream cheese, consider using a homemade apple butter or pumpkin pie filling for an alternative treat.
How to Make Swirled Pumpkin Cream Cheese Muffins
Step 1: Preheat Your Oven
Start by preheating your oven to 375°F. This ensures that your muffins bake evenly from the moment they go in. While the oven heats up, place paper baking cups into your muffin pan to make clean-up a breeze!
Step 2: Mix Dry Ingredients
In a medium bowl, whisk together the flour, pumpkin spice, baking soda, and salt until well combined. This step is crucial because it helps distribute the leavening agents evenly throughout the muffin batter.
Step 3: Combine Wet Ingredients
In a larger bowl, whisk together the pumpkin puree, granulated sugar, brown sugar, eggs, vegetable oil, and vanilla extract until smooth. Gradually add the dry mixture from step two into this bowl while mixing gently to avoid lumps.
Step 4: Prepare Cream Cheese Mixture
In another bowl, beat the room-temperature cream cheese until smooth. Then add in sugar, egg yolk, and vanilla extract. Mixing this until well combined creates that delicious swirl you’ll see in each muffin.
Step 5: Assemble Muffins
Spoon your muffin batter into each prepared muffin tin about 3/4 full. Then top each one with about one tablespoon of the cream cheese mixture. Use a toothpick to gently swirl it into the batter—this doesn’t have to be perfect; it will bake beautifully!
Step 6: Bake and Enjoy
Bake your muffins in the preheated oven for 18 to 20 minutes. To check if they’re done, insert a toothpick into the pumpkin portion; it should come out clean with only a few moist crumbs attached. Once baked, let them cool for about 10 minutes before enjoying them warm or storing them away!
Pro Tips for Making Swirled Pumpkin Cream Cheese Muffins
Making perfect swirled pumpkin cream cheese muffins is easier than you think! Here are some pro tips to elevate your baking experience:
-
Use room temperature ingredients: Ensuring your eggs and cream cheese are at room temperature helps create a smoother batter, leading to better texture in your muffins.
-
Don’t overmix the batter: Gently folding the dry ingredients into the wet mixture prevents gluten development, resulting in tender muffins that are light and fluffy.
-
Check for doneness with care: Insert a toothpick into the pumpkin part of a muffin. It should come out clean or with a few moist crumbs; this ensures your muffins are perfectly baked without being dry.
-
Cool before serving: Allowing the muffins to cool on a wire rack for at least 10 minutes helps set their structure and enhances their flavors, making them even more delicious!
-
Experiment with add-ins: Feel free to fold in nuts or chocolate chips into the batter for added texture and flavor variations that your family will love!
How to Serve Swirled Pumpkin Cream Cheese Muffins
These delightful muffins can be served in various ways to make them even more special. Here are some ideas:
Garnishes
- Powdered sugar dusting: A light sprinkle of powdered sugar adds an elegant touch and sweetness that complements the muffins beautifully.
- Cinnamon sprinkle: A dash of cinnamon on top enhances the warm spices of the pumpkin flavor, making each bite even more delightful.
Side Dishes
- Fresh fruit salad: A colorful mix of seasonal fruits adds brightness and freshness, balancing out the richness of the muffins.
- Yogurt parfaits: Layering yogurt with granola and berries creates a creamy, crunchy contrast that pairs perfectly with the moist muffins.
- Hot coffee or tea: A warm beverage is always a comforting companion to these muffins, perfect for breakfast or an afternoon snack.
- Scrambled eggs: For a heartier meal, serve these muffins alongside fluffy scrambled eggs, adding protein to start your day off right.
Make Ahead and Storage
These Swirled Pumpkin Cream Cheese Muffins are perfect for meal prep, allowing you to enjoy delicious treats throughout the week without any fuss!
Storing Leftovers
- Allow muffins to cool completely before storing.
- Place them in an airtight container at room temperature for up to 3 days.
- For longer freshness, consider refrigerating them, where they will last about a week.
Freezing
- Wrap each muffin individually in plastic wrap or aluminum foil.
- Place wrapped muffins in a freezer-safe bag or container.
- They can be frozen for up to 3 months. Label with the date for reference.
Reheating
- To reheat from frozen, remove the wrapping and microwave for 30 seconds to 1 minute until warmed through.
- If thawed, heat in the microwave for about 15-20 seconds or in a preheated oven at 350°F (175°C) for about 10 minutes.
FAQs
Can I make these Swirled Pumpkin Cream Cheese Muffins dairy-free?
Yes! You can substitute cream cheese with a dairy-free alternative like vegan cream cheese and use your favorite non-dairy milk in the muffins.
How do I ensure my Swirled Pumpkin Cream Cheese Muffins turn out moist?
Make sure not to overmix the batter and measure your ingredients accurately. Also, using fresh pumpkin puree helps retain moisture!
What spices can I use instead of pumpkin spice?
If you don’t have pumpkin spice on hand, you can create your own blend using cinnamon, nutmeg, ginger, and allspice.
How long do these muffins take to bake?
The baking time is typically around 18-20 minutes. Check for doneness by inserting a toothpick into the pumpkin part—if it comes out clean with a few moist crumbs, they’re ready!
Can I add nuts or chocolate chips to my muffins?
Absolutely! Feel free to fold in some chopped nuts or chocolate chips into the batter before filling the muffin tins for an extra treat.
Final Thoughts
These Swirled Pumpkin Cream Cheese Muffins are more than just a delightful breakfast; they embody the warmth of homemade goodness. I hope you find joy in making this recipe as much as I do sharing it with you. Enjoy every bite, and don’t hesitate to get creative with your own twists!
Swirled Pumpkin Cream Cheese Muffins
If you’re craving a cozy, fall-inspired treat, look no further than these Swirled Pumpkin Cream Cheese Muffins! Bursting with the rich flavors of pumpkin and warm spices, each muffin features a delightful swirl of creamy cheese that melts beautifully during baking. Perfect for breakfast or as an afternoon snack, these moist and fluffy muffins are quick to prepare—taking just 30 minutes from start to finish. Your kitchen will be filled with inviting aromas that will have everyone asking for seconds!
- Prep Time: 10 minutes
- Cook Time: 18 minutes
- Total Time: 28 minutes
- Yield: Makes approximately 12 muffins 1x
- Category: Dessert
- Method: Baking
- Cuisine: American
Ingredients
Scale
- 1 3/4 cups all-purpose flour
- 1 tablespoon pumpkin spice
- 1 teaspoon baking soda
- 1/2 teaspoon salt
- 1 (15 oz) can pumpkin puree
- 1 cup granulated sugar
- 1/2 cup packed brown sugar
- 2 large eggs
- 1/2 cup vegetable oil
- 1 tablespoon vanilla extract
- 8 oz cream cheese (room temperature)
- 1/4 cup granulated sugar (for cream cheese mixture)
- 1 large egg yolk (room temperature)
- 2 teaspoons vanilla extract (for cream cheese mixture)
Instructions
- Preheat your oven to 375°F (190°C) and line a muffin pan with paper liners.
- In a medium bowl, whisk together flour, pumpkin spice, baking soda, and salt. Set aside.
- In a large bowl, combine pumpkin puree, granulated sugar, brown sugar, eggs, vegetable oil, and vanilla extract until smooth. Gradually mix in the dry ingredients until just combined.
- In another bowl, beat the cream cheese until smooth; mix in sugar, egg yolk, and vanilla extract until well blended.
- Fill each muffin cup about three-quarters full with batter, then add a tablespoon of cream cheese mixture on top. Use a toothpick to swirl gently.
- Bake for 18 to 20 minutes until a toothpick inserted comes out clean. Cool for about ten minutes before serving.
Nutrition
- Serving Size: 1 muffin (85g)
- Calories: 245
- Sugar: 21g
- Sodium: 150mg
- Fat: 12g
- Saturated Fat: 3g
- Unsaturated Fat: 8g
- Trans Fat: 0g
- Carbohydrates: 32g
- Fiber: 1g
- Protein: 4g
- Cholesterol: 35mg
window.trCommon={“minRating”:6,”ajaxurl”:”https:\/\/www.simpledailyeats.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”7fb51600c8″,”postId”:1682};
window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.smoothScroll = {
init() {
document.addEventListener( ‘click’, ( e ) => {
let anchor = e.target;
if ( anchor.tagName !== ‘A’ ) {
anchor = anchor.closest( ‘a.tasty-recipes-scrollto’ );
}
if ( ! anchor || ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) {
return;
}
const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}
e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const element = document.querySelector( selector );
if ( ! element ) {
return;
}
element.scrollIntoView( { behavior: ‘smooth’ } );
}
};
document.addEventListener(
‘DOMContentLoaded’,
() => window.TastyRecipes.smoothScroll.init()
);
(function(){
var bothEquals = function( d1, d2, D ) {
var ret = 0;
if (d1<=D) {
ret++;
}
if (d2<=D) {
ret++;
}
return ret === 2;
};
var frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1+1,d2=1;if(x!==n1){while(bothEquals(d1,d2,D)){var m=(n1+n2)/(d1+d2);if(x===m){if(d1+d2d2){d2=D+1;}else {d1=D+1;}break}else if(xD){d1=d2;n1=n2}if(!mixed){return[0,n1,d1];}var q=Math.floor(n1/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1+P_2;Q=A*Q_1+Q_2;if(B-AD){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed){return[0,sgn*P,Q];}var q=Math.floor(sgn*P/Q);return[q,sgn*P-q*Q,Q]};
window.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(“%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D”));
window.tastyRecipesFormatAmount = function(amount, el) {
if ( parseFloat( amount ) === parseInt( amount ) ) {
return amount;
}
var roundType = ‘frac’;
if (typeof el.dataset.amountShouldRound !== ‘undefined’) {
if (‘false’ !== el.dataset.amountShouldRound) {
if ( ‘number’ === el.dataset.amountShouldRound ) {
roundType = ‘number’;
} else if (‘frac’ === el.dataset.amountShouldRound) {
roundType = ‘frac’;
} else if (‘vulgar’ === el.dataset.amountShouldRound) {
roundType = ‘vulgar’;
} else {
roundType = ‘integer’;
}
}
}
if (‘number’ === roundType) {
amount = Number.parseFloat(amount).toPrecision(2);
} else if (‘integer’ === roundType) {
amount = Math.round(amount);
} else if (‘frac’ === roundType || ‘vulgar’ === roundType) {
var denom = 8;
if (typeof el.dataset.unit !== ‘undefined’) {
var unit = el.dataset.unit;
if ([‘cups’,’cup’,’c’].includes(unit)) {
denom = 4;
if (0.125 === amount) {
denom = 8;
}
if (“0.1667″ === Number.parseFloat( amount ).toPrecision(4)) {
denom = 6;
}
}
if ([‘tablespoons’,’tablespoon’,’tbsp’].includes(unit)) {
denom = 2;
}
if ([‘teaspoons’,’teaspoon’,’tsp’].includes(unit)) {
denom = 8;
}
}
var amountArray = frac.cont( amount, denom, true );
var newAmount = ”;
if ( amountArray[1] !== 0 ) {
newAmount = amountArray[1] + ‘/’ + amountArray[2];
if (‘vulgar’ === roundType) {
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {
newAmount = vulgar;
}
});
}
}
if ( newAmount ) {
newAmount = ‘ ‘ + newAmount;
}
if ( amountArray[0] ) {
newAmount = amountArray[0] + newAmount;
}
amount = newAmount;
}
return amount;
};
window.tastyRecipesUpdatePrintLink = () => {
const printButton = document.querySelector( ‘.tasty-recipes-print-button’ );
if ( ! printButton ) {
return;
}
const printURL = new URL( printButton.href );
const searchParams = new URLSearchParams( printURL.search );
const unitButton = document.querySelector( ‘.tasty-recipes-convert-button-active’ );
const scaleButton = document.querySelector( ‘.tasty-recipes-scale-button-active’ );
let unit = ”;
let scale = ”;
if ( unitButton ) {
unit = unitButton.dataset.unitType;
searchParams.delete(‘unit’);
searchParams.set( ‘unit’, unit );
}
if ( scaleButton ) {
scale = scaleButton.dataset.amount;
searchParams.set( ‘scale’, scale );
}
const paramString = searchParams.toString();
const newURL = ” === paramString ? printURL.href : printURL.origin + printURL.pathname + ‘?’ + paramString;
const printLinks = document.querySelectorAll( ‘.tasty-recipes-print-link’ );
printLinks.forEach( ( el ) => {
el.href = newURL;
});
const printButtons = document.querySelectorAll( ‘.tasty-recipes-print-button’ );
printButtons.forEach( ( el ) => {
el.href = newURL;
});
};
document.addEventListener( ‘DOMContentLoaded’, () => {
if ( ! window.location.href.includes( ‘/print/’ ) ) {
return;
}
const searchParams = new URLSearchParams( window.location.search );
const unit = searchParams.get( ‘unit’ );
const scale = searchParams.get( ‘scale’ );
if ( unit && ( ‘metric’ === unit || ‘usc’ === unit ) ) {
document.querySelector( ‘.tasty-recipes-convert-button[data-unit-type=”‘ + unit + ‘”]’ ).click();
}
if ( scale && Number(scale) > 0 ) {
document.querySelector( ‘.tasty-recipes-scale-button[data-amount=”‘ + Number(scale) + ‘”]’ ).click();
}
});
}());
(function(){
var buttonClass = ‘tasty-recipes-scale-button’,
buttonActiveClass = ‘tasty-recipes-scale-button-active’,
buttons = document.querySelectorAll(‘.tasty-recipes-scale-button’);
if ( ! buttons ) {
return;
}
buttons.forEach(function(button){
button.addEventListener(‘click’, function(event){
event.preventDefault();
var recipe = event.target.closest(‘.tasty-recipes’);
if ( ! recipe ) {
return;
}
var otherButtons = recipe.querySelectorAll(‘.’ + buttonClass);
otherButtons.forEach(function(bt){
bt.classList.remove(buttonActiveClass);
});
button.classList.add(buttonActiveClass);
var scalables = recipe.querySelectorAll(‘span[data-amount]’);
var buttonAmount = parseFloat( button.dataset.amount );
scalables.forEach(function(scalable){
if (typeof scalable.dataset.amountOriginalType === ‘undefined’
&& typeof scalable.dataset.nfOriginal === ‘undefined’) {
if (-1 !== scalable.innerText.indexOf(‘/’)) {
scalable.dataset.amountOriginalType = ‘frac’;
}
if (-1 !== scalable.innerText.indexOf(‘.’)) {
scalable.dataset.amountOriginalType = ‘number’;
}
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (-1 !== scalable.innerText.indexOf(vulgar)) {
scalable.dataset.amountOriginalType = ‘vulgar’;
}
});
if (typeof scalable.dataset.amountOriginalType !== ‘undefined’) {
scalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;
}
}
var amount = parseFloat( scalable.dataset.amount ) * buttonAmount;
amount = window.tastyRecipesFormatAmount(amount, scalable);
if ( typeof scalable.dataset.unit !== ‘undefined’ ) {
if ( ! scalable.classList.contains(‘nutrifox-quantity’) ) {
if ( ! scalable.classList.contains(‘nutrifox-second-quantity’) ) {
amount += ‘ ‘ + scalable.dataset.unit;
}
}
}
scalable.innerText = amount;
});
var nonNumerics = recipe.querySelectorAll(‘[data-has-non-numeric-amount]’);
nonNumerics.forEach(function(nonNumeric){
var indicator = nonNumeric.querySelector(‘span[data-non-numeric-label]’);
if ( indicator ) {
nonNumeric.removeChild(indicator);
}
if ( 1 !== buttonAmount ) {
indicator = document.createElement(‘span’);
indicator.setAttribute(‘data-non-numeric-label’, true);
var text = document.createTextNode(‘ (x’ + buttonAmount + ‘)’);
indicator.appendChild(text);
nonNumeric.appendChild(indicator);
}
});
window.tastyRecipesUpdatePrintLink();
});
});
}());
window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.cookMode = {
wakeLockApi: false,
wakeLock: false,
cookModeSelector: ‘.tasty-recipes-cook-mode’,
init() {
if (“wakeLock” in navigator && “request” in navigator.wakeLock) {
this.wakeLockApi = navigator.wakeLock;
}
const cookModes = document.querySelectorAll(this.cookModeSelector);
if (cookModes.length > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘input[type=”checkbox”]’).addEventListener(“change”, event => {
this.checkboxChange(event.target);
}, false);
} else {
cookMode.style.display = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = document.querySelectorAll(this.cookModeSelector + ‘ input[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
try {
this.wakeLock = await this.wakeLockApi.request(“screen”);
this.wakeLock.addEventListener(“release”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.release();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};
(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
document.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});
window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.staticTooltip = {
element: null,
tooltipElement: null,
deleting: false,
init( element ) {
if ( this.deleting ) {
return;
}
this.element = element;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}
this.deleting = true;
this.tooltipElement.classList.remove( ‘opened’ );
setTimeout( () => {
this.tooltipElement.remove();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = document.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );
const currentTooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
document.body.replaceChild( tooltipElement, currentTooltipElement );
} else {
document.body.appendChild( tooltipElement );
}
this.tooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
},
show() {
if ( ! this.tooltipElement ) {
return;
}
const tooltipTop = this.element.getBoundingClientRect().top
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().height;
const tooltipLeft = this.element.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.element.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );
this.tooltipElement.setAttribute( ‘style’, ‘top:’ + tooltipTop + ‘px;left:’ + posLeft + ‘px;’ );
this.tooltipElement.classList.add( ‘opened’ );
},
maybeRemoveTail( removeTail ) {
if ( removeTail ) {
this.tooltipElement.classList.add( ‘tr-hide-tail’ );
} else {
this.tooltipElement.classList.remove( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};
window.TastyRecipes.ajax = {
sendPostRequest( url, data, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.send( this.preparePostData( data ) );
xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.status === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}
failure( xhr );
};
xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( data ) {
const formData = new FormData();
for ( const key in data ) {
formData.append( key, data[key] );
}
return formData;
},
};
window.TastyRecipes.ratings = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;
this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const ratings = document.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( ratings.length {
event.preventDefault();
this.defaultRating = event.target.closest( ‘.checked’ ).dataset.rating;
this.setCheckedStar( event.target );
this.maybeSendRating( this.defaultRating, event.target );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click’, e => {
// Bailout (don’t remove the tooltip) when the clicked element is a rating star, or it’s the tooltip itself.
if ( e.target.closest( ‘.tasty-recipes-rating’ ) || e.target.classList.contains( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}
window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( rating ) {
const ratingInput = document.querySelector( ‘#respond .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = document.querySelectorAll( ‘input.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click’, currentEvent => {
const selectedRating = currentEvent.target.getAttribute( ‘value’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( rating ) {
if ( rating < this.minRating ) {
document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );
return;
}
document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( rating ) {
const commentTextarea = document.getElementById( 'comment' );
if ( ! commentTextarea ) {
return;
}
if ( rating {
window.TastyRecipes.staticTooltip.changeMessage( response.data.message );
window.TastyRecipes.staticTooltip.show();
this.updateAverageText( response.data, recipeCardElement );
this.maybeFillCommentForm( response.data );
// Hide the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.data, rating );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( data, recipeCardElement ) {
if ( ! data.average ) {
return;
}
this.setRatingPercent( data );
if ( ! data.count ) {
return;
}
const quickLink = document.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, data );
this.setPartialStar( quickLink );
}
const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = data.average;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), data );
},
setTextInContainer( container, data ) {
if ( ! container ) {
return;
}
if ( data.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = data.label;
}
return;
}
const averageElement = container.querySelector( ‘.average’ );
if ( averageElement ) {
averageElement.textContent = data.average;
}
const countElement = container.querySelector( ‘.count’ );
if ( countElement ) {
countElement.textContent = data.count;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( data ) {
this.defaultRating = data.average.toFixed( 1 );
const parts = data.average.toFixed( 2 ).toString().split( ‘.’ );
this.currentRatingPercentage = parts[1] ? parts[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( target ) {
const cardRatingContainer = target.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}
const thisStar = target.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( data ) {
if ( ! data.comment || ! data.comment.content ) {
return;
}
const commentForm = document.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}
const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.value ) {
return;
}
// Add comment details for editing.
commentBox.innerHTML = data.comment.content;
if ( data.comment.name ) {
commentForm.querySelector( ‘[name=author]’ ).value = data.comment.name;
commentForm.querySelector( ‘[name=email]’ ).value = data.comment.email;
}
},
maybeResetTooltip( recipeCardElement, data, rating ) {
if ( this.savingRating === rating ) {
this.resetTooltip( recipeCardElement, data );
}
},
resetTooltip( recipeCardElement, data ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;
// Reset the default rating.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;
this.resetSelectedStar( cardRatingContainer, data );
}
},
resetSelectedStar( cardRatingContainer ) {
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( selectedRatingElement ) {
selectedRatingElement.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = this.currentRatingPercentage;
selectedRatingElement.parentNode.dataset.trChecked = 1;
}
const previousSelectedElement= cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( previousSelectedElement ) {
const currentSelectedRating = previousSelectedElement.querySelector(‘[data-rating]’);
if ( currentSelectedRating !== selectedRatingElement ) {
delete previousSelectedElement.dataset.trChecked;
}
}
},
backwardCompFormRatingPosition() {
const ratingsButtons = document.querySelector( ‘#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.display.includes( ‘flex’ ) ) {
ratingsButtons.style.direction = ‘rtl’;
}
if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Select the rating that was previously selected in admin.
ratingsButtons.querySelector( ‘.tasty-recipes-rating[value=”‘ + tastyRecipesRating + ‘”]’ ).checked = true;
}
const ratingSpans = ratingsButtons.querySelectorAll( ‘.tasty-recipes-rating’ );
for (const ratingSpan of ratingSpans) {
ratingSpan.addEventListener( ‘click’, event => {
if ( ratingSpan === event.target ) {
return;
}
ratingSpan.previousElementSibling.click();
} );
}
}
};
(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );
});


