Crispy. Flavor-packed. Ready in just 15 minutes. These Air Fryer Salmon Bites are taking over search engines and social feeds — and for good reason.
Whether you’re looking for a quick high-protein dinner, a healthy meal prep idea, or the best air fryer salmon recipe, this dish delivers on all fronts. Coated in a sticky soy-garlic glaze and air-fried to golden perfection, these bite-sized salmon cubes are crispy outside, juicy inside, and bursting with umami-rich flavor.
Perfect for busy weeknights, gluten-free diets, or anyone following keto, paleo, or clean eating lifestyles, this recipe hits the sweet spot between flavor, nutrition, and convenience.
You’ve searched for:
- “how to make crispy salmon in air fryer”
- “healthy salmon recipes for dinner”
- “quick weeknight salmon meals”
- “best salmon marinade for air fryer”
This recipe checks all the boxes — and ranks for them, too.
Stay with me as we break down the exact ingredients, air fryer settings, cooking hacks, and pro tips that will take your salmon game from basic to buzz-worthy in minutes.

Feel-Good Food: How Salmon Boosts Your Brain & Mood
This isn’t just a tasty recipe — it’s a nutritional powerhouse. Salmon is packed with:
- Omega-3 fatty acids – essential for brain health and focus.
- Lean protein – supports muscle recovery and satiety.
- Vitamin D & B12 – known to support mood and energy.
So yes, your taste buds will thank you… but so will your brain, skin, and immune system. You’re not just eating well — you’re living better.
What Makes These Salmon Bites So Special?
This recipe stands out because it:
- Uses a caramelizing soy-honey marinade that crisps up in the air fryer.
- Requires no breading or flour, keeping it gluten-free and keto-friendly.
- Turns out foolproof every time — even for beginners.
Ingredients: Simple, Clean & Packed With Flavor
You only need a handful of pantry staples:
Main Ingredients:
- 12 oz salmon fillet, skin removed, cut into 1-inch cubes
- 2 tbsp low-sodium soy sauce (or tamari/coconut aminos for gluten-free)
- 2 tsp honey (or maple syrup)
- 1 tsp rice vinegar
- ½ tsp toasted sesame oil
- 1 garlic clove, grated
- Small cube of fresh ginger, grated
- Olive oil spray, for air fryer basket
Optional Toppings:
- Sesame seeds
- Sriracha aioli or spicy mayo
- Green onions
- Lemon wedges
Pro Tip: Marinate longer for even bolder flavor — up to 4 hours if you have time.
Step-by-Step: How to Make Air Fryer Salmon Bites (Perfect Every Time)
1. Make the Marinade
In a medium bowl, whisk together:
- Soy sauce
- Honey
- Rice vinegar
- Sesame oil
- Grated garlic and ginger
2. Prep the Salmon
- Remove skin and bones if needed.
- Cut into 1-inch cubes — the sweet spot for cooking evenly and staying juicy.
3. Marinate
- Toss salmon in the marinade to coat all sides.
- Cover and refrigerate for 10–30 minutes (or longer for deeper flavor).
4. Air Fry
- Preheat your air fryer to 390°F / 200°C.
- Spray the basket with olive oil.
- Place salmon cubes in a single layer with space between each piece.
- Air fry for 5–8 minutes, flipping halfway.
- Optionally, brush leftover marinade on the cubes after flipping.
5. Garnish & Serve
- Sprinkle sesame seeds and green onions.
- Drizzle with spicy mayo or squeeze lemon juice for brightness.
- Serve hot over rice, noodles, or greens.
10 Irresistible Ways to Serve These Bites
Want to change it up every time? Try these delicious combos:
- Salmon Bowls – Rice, avocado, cucumber, carrots, edamame, and spicy mayo.
- Lettuce Wraps – Low-carb, crunchy, and fresh.
- Salmon Tacos – With cabbage slaw and lime crema.
- Quinoa Power Bowls – With kale, pumpkin seeds, and lemon tahini.
- Salmon Stir-Fry – Toss with veggies and soy glaze.
- Pita Sandwiches – Stuffed with hummus and greens.
- Asian Slaw Wraps – With pickled onions and shredded carrots.
- Over Garlic Mashed Potatoes – Total comfort food.
- Chopped Salad Topper – Easy way to add protein.
- Cold Meal Prep Boxes – Serve with soba noodles or rice.
7 Pro Tips to Elevate Your Salmon Game
- Don’t overcrowd the basket – air flow = crispy edges.
- Use parchment for zero mess – especially if you’re marinating heavily.
- Marinate ahead of time – flavor soaks in while you work or relax.
- Brush with extra marinade halfway through for max flavor.
- Use skinless salmon – crispy bites without rubbery skin.
- Don’t overcook – aim for 5–6 minutes for medium doneness.
- Add spice – chili flakes or sriracha give it a kick!
Storage, Freezing & Reheating
Refrigerator:
- Store in an airtight container for up to 3 days.
Freezer:
- Freeze in portions for up to 2 months.
- Best to thaw in fridge before reheating.
Reheating:
- Air fryer: 3–5 minutes at 350°F
- Microwave: Add a splash of water to prevent drying
- Oven: Reheat at 350°F for 8–10 minutes
FAQ : “How long does air fryer salmon last?” → Up to 3 days in the fridge, 2 months in the freezer.
Nutritional Breakdown (Per Serving)
Calories: 284
Protein: 35g
Carbs: 7g
Fat: 12g
Omega-3s: High
Sodium: 651mg
Sugar: 6g
Gluten-Free Option Available:
Keto-Friendly Option:
FAQ: Your Salmon Questions, Answered
Can I use frozen salmon?
Yes! Just thaw fully and pat dry before marinating.
Can I make this without an air fryer?
Absolutely. Bake at 400°F for 10–12 minutes, or pan-sear until golden.
Is this gluten-free?
Use tamari or coconut aminos instead of soy sauce.
What other sauces pair well?
Try teriyaki glaze, spicy miso, lemon butter, or Thai chili sauce.
If You Loved This, Try These:
- Salmon Balls with Creamy Avocado Sauce: Healthy Dinner Ideas
- Mock Turtle Soup | Classic Comfort Food Bowl
- Italian Herbs and Cheese Bread – Perfect Dinner Side
- Spinach and Feta Stuffed Salmon Pinwheels – Easy Dinner
Final Thoughts: Why This Recipe Is Your New Weeknight MVP
Quick. Crispy. Addictive.
This recipe checks all the boxes: flavor, texture, nutrition, and speed. Whether you’re cooking for one, meal prepping for the week, or impressing guests — these Air Fryer Salmon Bites are a no-fail solution to dinner burnout.
It’s not just a recipe. It’s a routine-changer.
What’s your favorite way to serve salmon?
Comment below and let’s share some ideas!
Air Fryer Salmon Bites – Easy Dinner Packed with Flavor
Total Time: 15-18 minutes
Yield: 2 servings 1x
Diet: Gluten Free
Description
Quick, crispy, and packed with flavor, these Air Fryer Salmon Bites are coated in a sweet and savory soy garlic marinade and cooked to perfection in under 15 minutes. A healthy, high-protein dinner that’s great for bowls, tacos, or meal prep.
Ingredients
Scale
- 12 oz salmon fillet, skin removed, cut into 1-inch cubes
- 2 tbsp low-sodium soy sauce (or tamari for gluten-free)
- 2 tsp honey (or maple syrup)
- 1 tsp rice vinegar
- 1/2 tsp toasted sesame oil
- 1 garlic clove, grated
- Small cube of fresh ginger, grated
- Olive oil spray (for air fryer basket)
- Optional: sesame seeds, green onions, sriracha aioli, lemon wedges for garnish
Instructions
- In a bowl, whisk together soy sauce, honey, rice vinegar, sesame oil, garlic, and ginger.
- Add salmon cubes to the marinade and toss to coat. Cover and refrigerate for 10–30 minutes.
- Preheat air fryer to 390°F (200°C). Spray the basket with olive oil.
- Arrange salmon cubes in a single layer in the air fryer basket.
- Air fry for 5–8 minutes, flipping halfway through. Optionally brush with leftover marinade.
- Garnish with sesame seeds, green onions, or sriracha aioli. Serve immediately.
Notes
- Do not overcrowd the air fryer basket for even cooking.
- For deeper flavor, marinate the salmon for up to 4 hours.
- This recipe works with both fresh and thawed frozen salmon.
- Store leftovers in the fridge for up to 3 days or freeze for 2 months.
- Prep Time: 10 minutes
- Cook Time: 5-8 minutes
- Category: Main Course
- Method: Air Fryer
- Cuisine: Asian-Inspired
Nutrition
- Serving Size: 1/2 recipe (approx. 6 oz salmon)
- Calories: 284
- Sugar: 6g
- Sodium: 651mg
- Fat: 12g
- Saturated Fat: 2g
- Unsaturated Fat: 9g
- Trans Fat: 0g
- Carbohydrates: 7g
- Fiber: 0.2g
- Protein: 35g
- Cholesterol: 94mg
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
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(); }); }); }());
(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.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 ); });










