feat(vues): bouton « Copier le lien » + lien de partage en texte stylé (#112)

- Bouton de copie explicite (icône copy.svg + « Copier le lien » + retour
  « ✓ Copié ») sur /tableau et /compte/vues, via dcc.Clipboard (children /
  copied_children), à la place de l'icône seule.
- Le lien direct s'affiche en texte (span#share-url-text) plutôt qu'un
  <input> : évite la troncature d'affichage du champ Bootstrap form-control en
  flex (zone de texte bloquée ~218px), montre tout le lien avec retour à la
  ligne, et prend la largeur du lien. Stylé comme un champ (bordure, coins
  arrondis, texte 90%).
- Instructions /compte/vues simplifiées ; E2E adapté (#share-url-text).
This commit is contained in:
Colin Maudry
2026-07-13 22:08:00 +02:00
parent 770b7cbdf8
commit e0828a7e13
5 changed files with 68 additions and 22 deletions
+17 -3
View File
@@ -79,7 +79,21 @@ def _view_row(view) -> html.Div:
dcc.Clipboard(
content=share_url,
title="Copier le lien vers cette vue",
style={"cursor": "pointer", "fontSize": "1.1rem"},
className="btn btn-outline-secondary btn-sm "
"d-inline-flex align-items-center",
children=[
html.Img(
src="/assets/copy.svg",
alt="",
style={
"height": "1em",
"verticalAlign": "-0.15em",
"marginRight": "0.35em",
},
),
"Copier le lien",
],
copied_children="✓ Copié",
),
dbc.Button(
"Renommer",
@@ -102,9 +116,9 @@ def _view_row(view) -> html.Div:
def views_table(views) -> html.Div:
if not views:
return html.Div(
html.P(
dcc.Markdown(
"Vous n'avez pas encore de vue enregistrée. "
"Créez-en une depuis le Tableau, bouton « Sauvegarder la vue »."
"Créez-en une depuis le Tableau, bouton **Sauvegarder la vue**."
)
)
return html.Div([_view_row(v) for v in views])