mirror of
https://github.com/IliesAllali/parenthese.git
synced 2026-11-15 16:32:03 +00:00
- Deux parents d'un même enfant sans couple enregistré sont reliés en pointillés au lieu d'avoir chacun un « Inconnu » (couple propre au dessin, rien en base) ; le tri de la fratrie le reconnaît. - Barre d'édition mobile : X, « Ajouter » et « Plus » (dessin, texte, sticker, photo). Les outils s'ouvrent depuis « Plus » avec un retour, la corbeille n'apparaît que s'il y a quelque chose à effacer, l'outil actif en aplat. La barre ne passe plus sous le zoom. - Bandeau d'édition : sur téléphone, seul le bouton reste, le texte se coupait. - Dates : au-delà de 4 chiffres les barres se posent seules (12031950 → 12/03/1950), le message n'apparaît qu'en quittant le champ. - Ajouter une personne : plus d'erreur « prénom » en quittant le champ vide, le bouton reste actif et le dit à l'appui. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
55 lines
1.9 KiB
React
55 lines
1.9 KiB
React
import { useMemo } from 'react'
|
|
import { X } from 'lucide-react'
|
|
import './EditModeOverlay.css'
|
|
import { t } from '../i18n/index.js'
|
|
|
|
function EditSessionBar({ active, hasDraft, role = 'contributor', onDeactivate, onSubmit }) {
|
|
const isAdmin = role === 'admin'
|
|
|
|
const borderClass = useMemo(() => (
|
|
`edit-mode-border ${isAdmin ? 'edit-mode-border--admin' : 'edit-mode-border--contributor'}`
|
|
), [isAdmin])
|
|
|
|
// Libellés courts : ils doivent tenir sur un téléphone à côté du bouton
|
|
const toastLabel = isAdmin ? t("Vous modifiez l'arbre") : t('Vos propositions')
|
|
const submitLabel = isAdmin ? t("Mettre à jour l'arbre") : t('Envoyer mes ajouts')
|
|
// La famille ne voit le bouton d'envoi que lorsqu'il y a quelque chose à envoyer
|
|
const showSubmit = Boolean(onSubmit) && (isAdmin || hasDraft)
|
|
|
|
if (!active) return null
|
|
|
|
return (
|
|
<>
|
|
<div className={borderClass} aria-hidden="true" />
|
|
|
|
<div className={`edit-mode-toast${isAdmin ? ' edit-mode-toast--admin' : ''}${showSubmit ? ' edit-mode-toast--with-submit' : ''}`} role="status" aria-live="polite">
|
|
<span className="edit-mode-toast-dot" aria-hidden="true" />
|
|
<span className="edit-mode-toast-text">{toastLabel}</span>
|
|
|
|
{showSubmit && (
|
|
<button
|
|
type="button"
|
|
className="pz-btn pz-btn--primary pz-btn--sm edit-mode-submit"
|
|
onClick={onSubmit}
|
|
disabled={!hasDraft}
|
|
title={hasDraft ? submitLabel : t("Aucune modification à envoyer pour l'instant")}
|
|
>
|
|
{submitLabel}
|
|
</button>
|
|
)}
|
|
|
|
<button
|
|
type="button"
|
|
className="pz-btn pz-btn--ghost pz-btn--icon edit-mode-toast-close"
|
|
onClick={onDeactivate}
|
|
aria-label={t('Quitter le mode édition')}
|
|
>
|
|
<X size={17} strokeWidth={2} />
|
|
</button>
|
|
</div>
|
|
</>
|
|
)
|
|
}
|
|
|
|
export default EditSessionBar
|