If you’re looking for a cozy, comforting breakfast that captures the essence of fall, you’ve landed in the right place! This KETO PUMPKIN BAGELS RECIPE is a delightful way to start your day or enjoy as a snack. These bagels are not just low-carb and high-protein; they are bursting with pumpkin flavor and warm spices that will make your kitchen smell heavenly.

This recipe is a favorite of mine because it’s so simple to whip up and perfect for busy weeknights or family gatherings. Whether you’re treating yourself on a quiet morning or sharing them with loved ones, these bagels are sure to bring smiles all around!

Why You’ll Love This Recipe
- Quick and Easy: Ready in just 25 minutes! Perfect for those hectic mornings.
- Low-Carb Delight: Enjoy the flavors of fall without the guilt of carbs.
- Family-Friendly: Kids love these bagels, making it an easy way to get them excited about breakfast.
- Versatile Snack: Great for any time of day – pair them with cream cheese or your favorite spread!
- Make-Ahead Option: Bake a batch and store them for quick snacks throughout the week.
Ingredients You’ll Need
Let’s gather some simple, wholesome ingredients that come together to create these delicious keto pumpkin bagels. You probably have many of these in your pantry already!

For the Bagels
- 2 cups almond flour
- 1.5 cups shredded mozzarella cheese
- 2 eggs
- 1 tbsp Swerve Granular sugar (add another tablespoon if you prefer sweeter)
- 2 oz cream cheese
- 1 tbsp baking powder
- 1/3 cup pumpkin puree
- 1 tbsp pumpkin pie spice
- 3 tbsp crushed pecans
- 1 tbsp olive oil
For Topping
- 4 oz cream cheese
- 1 tbsp Swerve granular sugar
- 1/4 tsp cinnamon
Variations
One of the great things about this recipe is its flexibility! You can easily mix things up based on what you have at home or your personal taste.
- Add More Spice: Sprinkle in some nutmeg or ginger to enhance the fall flavor.
- Nut-Free Option: Substitute almond flour with sunflower seed flour for a nut-free version.
- Cheesy Twist: Mix in some grated Parmesan cheese for extra cheesy goodness.
- Sweeten It Up: Fold in dark chocolate chips or dried cranberries for a sweeter treat.
How to Make KETO PUMPKIN BAGELS RECIPE
Step 1: Preheat Your Oven
Start by preheating your oven to 400 degrees F. This step is important because it ensures that your bagels will bake evenly and come out perfectly golden brown.
Step 2: Melt the Cheese
In a microwave-safe bowl, melt the mozzarella and cream cheese together in 30-second intervals. Stir after each interval until smooth. Melting these cheeses creates that wonderful stretchy texture we love in bagels!
Step 3: Combine Ingredients
Once melted, add the eggs into the cheese mixture. This binds everything together and adds moisture, which keeps the bagels tender.
Step 4: Mix It All Together
Now it’s time to add all your dry ingredients along with the pumpkin puree. Use your hands to mix until fully combined; this helps ensure everything is well incorporated, which is key for flavor throughout.
Step 5: Add Some Crunch
Gently fold in the remaining tablespoon of crushed pecans. These little bits will add a lovely crunch and nutty flavor to each bite!
Step 6: Shape Your Bagels
Divide the dough into six equal portions. Roll each portion into a ball and poke a hole through the center using your finger to form a bagel shape. Don’t worry about them being perfect; they will expand slightly while baking.
Step 7: Prepare for Baking
Brush each bagel with olive oil and sprinkle on any remaining crushed pecans for an extra touch of flavor and texture.
Step 8: Bake Away!
Place your bagels on a lined sheet pan and bake for about 10-15 minutes. Keep an eye on them starting at 10 minutes; you want them golden brown but cooked through!
Step 9: Cool & Enjoy!
Once baked, let them cool for about 10-15 minutes before digging in. This waiting period allows them to set up nicely and makes them easier to slice!
Now you’re ready to enjoy these delicious keto pumpkin bagels! They’re perfect toasted with cream cheese or simply enjoyed on their own as a delightful breakfast treat. Happy baking!
Pro Tips for Making KETO PUMPKIN BAGELS RECIPE
Getting the perfect keto pumpkin bagels is all about a few simple tricks. Follow these tips to elevate your bagel-making game!
Use Fresh Ingredients: Fresh almond flour and spices can significantly enhance the flavor of your bagels. They add a depth that stale ingredients simply can’t match.
Adjust Sweetness: If you have a sweet tooth, feel free to adjust the amount of Swerve Granular sugar. Adding just a bit more can make your bagels even more delightful, especially if you plan on enjoying them with cream cheese or other toppings.
Experiment with Toppings: Don’t hesitate to get creative with toppings! You could add seeds or different nuts on top of your bagels for an extra crunch and flavor boost.
Check for Doneness: Keep a close eye on your bagels starting at the 10-minute mark. Ovens can vary, and you want to ensure they’re golden brown without overcooking them.
Storage Tips: If you happen to have leftovers (which is rare!), store them in an airtight container in the fridge for up to a week. You can also freeze them for longer storage—just pop them in the toaster when you’re ready to enjoy!
How to Serve KETO PUMPKIN BAGELS RECIPE
These keto pumpkin bagels are not only delicious but also visually appealing, making them perfect for any occasion. Here are some ideas on how to serve them up!
Garnishes
- Cream Cheese Spread: A classic pairing, adding a layer of cream cheese enhances the flavors and adds a creamy texture.
- Chopped Pecans: Sprinkle some additional crushed pecans on top after baking for extra crunch and nuttiness.
- Drizzle of Sugar-Free Syrup: For those who enjoy a touch of sweetness, a drizzle of sugar-free syrup can take these bagels to the next level.
Side Dishes
- Avocado Slices: Creamy avocado slices provide healthy fats and complement the pumpkin flavor beautifully.
- Mixed Green Salad: A light salad with spinach, arugula, and cherry tomatoes adds freshness and balances out the richness of the bagels.
- Hard-Boiled Eggs: For an extra protein kick, serve hard-boiled eggs alongside your bagels—they’re easy to prepare and make for a filling meal.
- Herbal Tea: A warm cup of herbal tea pairs wonderfully with these bagels, making it a cozy breakfast or snack option.
Enjoy your delicious creation and share it with friends and family! These keto pumpkin bagels are sure to be a hit at any gathering or simply as part of your daily routine.
Make Ahead and Storage
This keto pumpkin bagels recipe is fantastic for meal prep, allowing you to enjoy a wholesome breakfast or snack throughout the week. Here’s how to store them properly and keep them fresh.
Storing Leftovers
- Store your cooled bagels in an airtight container at room temperature for up to 2 days.
- For longer storage, refrigerate them for up to a week.
Freezing
- Place the cooled bagels in a freezer-safe bag or container.
- They can be frozen for up to 3 months. Just make sure to label with the date!
Reheating
- To reheat from frozen, pop them in the microwave for about 30-45 seconds.
- For a crispier texture, toast them in a toaster or oven until warm.
FAQs
Here are some common questions about the keto pumpkin bagels recipe that might help you as you prepare them.
Can I use other types of flour instead of almond flour in the KETO PUMPKIN BAGELS RECIPE?
While almond flour provides a great low-carb option, you can experiment with coconut flour. However, you’ll need to adjust the quantity since coconut flour absorbs more moisture.
How do I get my KETO PUMPKIN BAGELS RECIPE to rise properly?
Ensure your baking powder is fresh and properly mixed with the dry ingredients before adding wet components. This helps create a light and fluffy texture.
Can these bagels be made without cheese?
Yes! You could try using vegan cheese alternatives or omit cheese altogether, but this will change the texture. Consider adding a bit more pumpkin puree or an egg for moisture.
What can I serve with my KETO PUMPKIN BAGELS?
These bagels are delicious on their own but pair wonderfully with cream cheese, nut butter, or even avocado spread for added flavor!
Final Thoughts
I hope you find this keto pumpkin bagels recipe as delightful as I do! These fluffy and flavorful bagels are not just guilt-free; they also capture the essence of fall in every bite. Enjoy making them and sharing with friends and family. Happy baking!
KETO PUMPKIN BAGELS RECIPE
If you’re searching for a cozy breakfast that embodies the flavors of fall, look no further than this KETO PUMPKIN BAGELS RECIPE. These delightful bagels are not only low in carbs but also packed with pumpkin goodness and warm spices, making them an ideal start to your day or a satisfying snack anytime. With a chewy texture from almond flour and mozzarella cheese, these bagels are quick to prepare—perfect for busy mornings or family gatherings. Enjoy them fresh out of the oven, topped with cream cheese or your favorite spread, and watch them become a new favorite in your kitchen!
- Prep Time: 10 minutes
- Cook Time: 15 minutes
- Total Time: 25 minutes
- Yield: Serves 6
- Category: Breakfast
- Method: Baking
- Cuisine: American
Ingredients
Scale
- 2 cups almond flour
- 1.5 cups shredded mozzarella cheese
- 2 eggs
- 1 tbsp Swerve Granular sugar
- 2 oz cream cheese
- 1 tbsp baking powder
- 1/3 cup pumpkin puree
- 1 tbsp pumpkin pie spice
- 3 tbsp crushed pecans
- 1 tbsp olive oil
Instructions
- Preheat oven to 400°F.
- Melt mozzarella and cream cheese in a microwave-safe bowl until smooth.
- Mix in eggs until combined.
- Add dry ingredients and pumpkin puree; mix until well incorporated.
- Fold in crushed pecans for added crunch.
- Divide dough into six portions, shape into bagels by poking holes in the center.
- Brush with olive oil and sprinkle remaining pecans on top.
- Bake for 10-15 minutes until golden brown.
- Allow to cool before serving.
Nutrition
- Serving Size: 1 bagel (approximately 75g)
- Calories: 180
- Sugar: 1g
- Sodium: 330mg
- Fat: 14g
- Saturated Fat: 6g
- Unsaturated Fat: 8g
- Trans Fat: 0g
- Carbohydrates: 6g
- Fiber: 3g
- Protein: 9g
- Cholesterol: 70mg
window.trCommon={“minRating”:6,”ajaxurl”:”https:\/\/www.weekmealideas.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”b2457ddab4″,”postId”:2330};
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 );
});



Leave a Comment