Merge pull request #185 from IliesAllali/fix/bandeau-annuler

Bandeau « Annuler » accordé, sans chevaucher la réglette de zoom ; bouton de zoom caché sous la fiche
This commit is contained in:
IliesAllali authored and GitHub committed 2026-10-28 00:00:35 +01:00
commit 983c50159d
4 files changed
+29 -2

No files matched your search

+14 -2
View File
@@ -1970,6 +1970,8 @@ function App() {
const target = persons.find((candidate) => String(candidate.id) === String(personId))
const name = target ? firstNameLabel(target) : ''
// Accordé quand le sexe est connu, « supprimé·e » seulement quand il ne l'est pas
const sex = target?.sex
const snapshot = removePersonFromGraph(personId)
tree.setSelectedPerson(null)
tree.bumpGraphRevision()
@@ -1977,7 +1979,13 @@ function App() {
const treeId = ownTree ? tree.treeContext.treeId : null
undoable.start({
message: name ? t("{name} est supprimé·e de l'arbre.", { name }) : t("La personne est supprimée de l'arbre."),
message: !name
? t("La personne est supprimée de l'arbre.")
: sex === 'female'
? t("{name} est supprimée de l'arbre.", { name })
: sex === 'male'
? t("{name} est supprimé de l'arbre.", { name })
: t("{name} est supprimé·e de l'arbre.", { name }),
reapply: () => Boolean(removePersonFromGraph(personId)),
commit: async ({ keepalive = false } = {}) => {
if (!treeId) return
@@ -1987,7 +1995,11 @@ function App() {
} catch {
if (keepalive) return
await refreshKeepingSelection({ relayout: true })
setDraftNotice(t("{name} n'a pas pu être supprimé·e. Réessayez.", { name }))
setDraftNotice(sex === 'female'
? t("{name} n'a pas pu être supprimée. Réessayez.", { name })
: sex === 'male'
? t("{name} n'a pas pu être supprimé. Réessayez.", { name })
: t("{name} n'a pas pu être supprimé·e. Réessayez.", { name }))
}
},
undo: async () => {
@@ -293,6 +293,11 @@
.undo-toast-btn:hover { background: color-mix(in srgb, var(--pz-bg) 26%, transparent); }
.undo-toast-btn:focus-visible { outline: 2px solid var(--pz-bg); outline-offset: 2px; }
@media (max-width: 768px) { .contrib-success-toast { bottom: 78px; padding: 11px 16px; border-radius: 16px; font-size: 13px; } }
/* Sous 768 px, la réglette de zoom reste ouverte en bas à gauche (ZoomControl.css, de 8 à 60 px du bord) :
tant qu'elle se voit (ni panneau ni fiche par-dessus), la notification commence après elle au lieu de passer dessus */
@media (max-width: 768px) {
body:not(:has(.pz-overlay, .person-card)) .contrib-success-toast { left: 72px; right: 12px; width: auto; max-width: none; transform: none; }
}
@media (max-width: 560px) {
.contrib-invite-link { flex-wrap: wrap; border-radius: var(--pz-r-m); padding: 10px; }
+6
View File
@@ -11,6 +11,12 @@
animation: zoomControlSlideIn 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}
/* Fiche ouverte sur ordinateur : elle recouvre le bouton, dont le bord dépassait en bas à gauche (fiche à 25 px
du bord, bouton à 20 px). Il revient quand la fiche se ferme. */
@media (min-width: 769px) {
body:has(.person-card) .zoom-control { visibility: hidden; }
}
@keyframes zoomControlSlideIn {
from {
opacity: 0;
+4
View File
@@ -93,8 +93,12 @@ export default {
'Ajouter un enfant': 'Add a child',
'Rechercher un enfant': 'Search for a child',
"{name} est supprimé·e de l'arbre.": '{name} was deleted from the tree.',
"{name} est supprimée de l'arbre.": '{name} was deleted from the tree.',
"{name} est supprimé de l'arbre.": '{name} was deleted from the tree.',
"La personne est supprimée de l'arbre.": 'The person was deleted from the tree.',
"{name} n'a pas pu être supprimé·e. Réessayez.": '{name} could not be deleted. Try again.',
"{name} n'a pas pu être supprimée. Réessayez.": '{name} could not be deleted. Try again.',
"{name} n'a pas pu être supprimé. Réessayez.": '{name} could not be deleted. Try again.',
'Annuler (Ctrl+Z)': 'Undo (Ctrl+Z)',
'Le souvenir est supprimé.': 'The memory was deleted.',
'Le moment est supprimé.': 'The moment was deleted.',