feat(recipes): restore Copy Recipe Syntax button in recipe modal header

- Add an icon-only copy button next to Send to ComfyUI in the header
  actions row, styled as a textless variant of the neighboring pill
  buttons
- Restore fetchAndCopyRecipeSyntax() wiring against the existing
  /api/lm/recipe/{id}/syntax endpoint (context menu action unaffected)
- Add recipes.actions.copyRecipeSyntax i18n key, reusing the existing
  per-locale translations of the identical context menu string
- Sync modal test fixtures and add copySyntax tests
This commit is contained in:
Will Miao
2026-08-29 17:05:31 +08:00
parent 675421ea84
commit fc9088bfd6
15 changed files with 223 additions and 1 deletions
+4 -1
View File
@@ -14,11 +14,14 @@
</button>
</div>
</div>
<!-- Header Actions: Send button is static; source URL button is appended dynamically in RecipeModal.js -->
<!-- Header Actions: Send and Copy buttons are static; source URL button is appended dynamically in RecipeModal.js -->
<div class="recipe-header-actions" id="recipeHeaderActions">
<button class="modal-send-btn" id="sendRecipeBtn" title="Send Recipe to ComfyUI">
<i class="fas fa-paper-plane"></i> <span>{{ t('recipes.actions.sendRecipe') }}</span>
</button>
<button class="modal-copy-btn" id="copyRecipeSyntaxBtn" title="{{ t('recipes.actions.copyRecipeSyntax') }}" aria-label="{{ t('recipes.actions.copyRecipeSyntax') }}">
<i class="fas fa-copy" aria-hidden="true"></i>
</button>
<button class="modal-delete-btn" id="deleteRecipeBtn" title="{{ t('recipes.actions.deleteRecipeWithShortcut') }}" aria-label="{{ t('recipes.actions.deleteRecipeWithShortcut') }}">
<i class="fas fa-trash" aria-hidden="true"></i>
</button>