COMPOSANTS
Édition inline
Champ d'édition inline
Modifier une valeur directement dans la page de détail, sans naviguer vers une page d'édition. Réservé aux champs simples et isolés.
Normal (modifiable)
Modifiable
Sauvegardé (flash succès)
Erreur
Ce champ est obligatoire.
<!-- Normal (modifiable) -->
<div class="flex items-center gap-2">
<input type="text" value="Creator T-Shirt"
class="input input-bordered input-xs w-48"
data-controller="inline-edit"
data-inline-edit-url-value="/products/123">
<span class="text-xs text-base-content/30">Modifiable</span>
</div>
<!-- Sauvegardé (flash input-success 1,5s) -->
<input type="text" value="Creator T-Shirt"
class="input input-success input-xs w-48">
<!-- Erreur -->
<div>
<input type="text" value=""
class="input input-error input-xs w-48">
<p class="text-xs text-error mt-1">Ce champ est obligatoire.</p>
</div> Pattern Stimulus (Rails)
Référence d'implémentation pour les apps Rails 8 avec Hotwire. Le contrôleur écoute l'événement change et envoie un PATCH JSON.
<!-- HTML — attributs data requis -->
<input type="text" value="Valeur actuelle"
class="input input-bordered input-xs w-full"
data-controller="inline-edit"
data-inline-edit-url-value="/path/to/update"
data-inline-edit-field-value="nom"> // inline_edit_controller.js (Stimulus)
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
static values = { url: String, field: String }
change() {
fetch(this.urlValue, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': document.querySelector('[name=csrf-token]').content
},
body: JSON.stringify({ [this.fieldValue]: this.element.value })
})
.then(r => r.ok ? this.flashSuccess() : this.flashError())
}
flashSuccess() {
this.element.classList.add('input-success')
setTimeout(() => this.element.classList.remove('input-success'), 1500)
}
flashError() {
this.element.classList.add('input-error')
}
} ✓ Réservé aux modifications de champs simples sur les pages de détail.
✓ Flash
input-success 1,5s après sauvegarde réussie.✗ Jamais pour des formulaires multi-champs — utiliser une page d'édition dédiée.
✗ Toujours gérer le cas d'erreur (réseau, validation).