diff --git a/static/css/components/lora-modal/showcase.css b/static/css/components/lora-modal/showcase.css index c49c869b..d540e5ae 100644 --- a/static/css/components/lora-modal/showcase.css +++ b/static/css/components/lora-modal/showcase.css @@ -141,8 +141,9 @@ border-color: var(--lora-error); } -/* Disabled state for delete button */ -.media-control-btn.example-delete-btn.disabled { +/* Disabled state for delete and create-recipe buttons */ +.media-control-btn.example-delete-btn.disabled, +.media-control-btn.create-recipe-btn.disabled { opacity: 0.5; cursor: not-allowed; } diff --git a/static/js/components/shared/showcase/MediaUtils.js b/static/js/components/shared/showcase/MediaUtils.js index f9b04e17..9660ee62 100644 --- a/static/js/components/shared/showcase/MediaUtils.js +++ b/static/js/components/shared/showcase/MediaUtils.js @@ -157,9 +157,9 @@ async function checkImportedRecipes(container) { recipeButtons.forEach(btn => { const id = btn.dataset.imageId; if (id && data.results[id]?.in_library) { - btn.disabled = true; btn.title = 'Already imported as recipe'; btn.classList.add('disabled'); + btn.setAttribute('aria-disabled', 'true'); } }); } catch (err) { @@ -510,6 +510,11 @@ export function initMediaControlHandlers(container) { btn.addEventListener('click', async function(e) { e.stopPropagation(); + // Ignore clicks when disabled + if (this.classList.contains('disabled')) { + return; + } + const imageMetaRaw = this.dataset.imageMeta; const imageUrl = this.dataset.imageUrl; const imageNsfw = this.dataset.imageNsfw; diff --git a/static/js/components/shared/showcase/ShowcaseView.js b/static/js/components/shared/showcase/ShowcaseView.js index 309282ba..d24992fb 100644 --- a/static/js/components/shared/showcase/ShowcaseView.js +++ b/static/js/components/shared/showcase/ShowcaseView.js @@ -256,7 +256,7 @@ function renderMediaItem(img, index, exampleFiles) {