feat: card checklists (#141)

* feat: setup checklist schema

* feat: scaffold checklist router

* feat: add create new checklist modal

* feat: create new checklist item

* feat: toggle checklist item completed state

* feat: update checklist name

* feat: delete checklist

* feat: show checklists progress on cards

* feat: tweak light mode styling

* feat: focus item form on creation of new checklist

* feat: tweak new checklist item form styling

* feat: add checklist activity

* feat: show checklist progress on public board page

* feat: display checklist items on public card modal

* chore: add translations
This commit is contained in:
Henry
2025-08-14 19:59:36 +01:00
committed by GitHub
parent 80d1c5f805
commit 13b10471ec
45 changed files with 8171 additions and 684 deletions

View File

@@ -23,7 +23,7 @@ msgstr ", ou consultez notre"
#. placeholder {0}: card?.title ?? "Card"
#. placeholder {1}: board?.name ?? "Board"
#: src/views/card/index.tsx:189
#: src/views/card/index.tsx:214
msgid "{0} | {1}"
msgstr "{0} | {1}"
@@ -48,8 +48,8 @@ msgstr "Une application kanban puissante et flexible qui vous aide à organiser
msgid "Account deleted"
msgstr "Compte supprimé"
#: src/views/public/board/CardModal.tsx:128
#: src/views/card/index.tsx:256
#: src/views/public/board/CardModal.tsx:136
#: src/views/card/index.tsx:287
msgid "Activity"
msgstr "Activité"
@@ -66,10 +66,22 @@ msgstr "Ajouter une carte"
msgid "Add a comment..."
msgstr "Ajouter un commentaire..."
#: src/components/Editor.tsx:303
#: src/views/card/components/NewChecklistItemForm.tsx:140
msgid "Add an item..."
msgstr "Ajouter un élément..."
#: src/views/card/components/Dropdown.tsx:18
msgid "Add checklist"
msgstr "Ajouter une checklist"
#: src/components/Editor.tsx:308
msgid "Add description... (type '/' to open commands)"
msgstr "Ajouter une description... (tapez '/' pour ouvrir les commandes)"
#: src/views/card/components/ChecklistItemRow.tsx:172
msgid "Add details..."
msgstr "Ajouter des détails..."
#: src/views/card/components/LabelSelector.tsx:110
#: src/views/card/components/LabelSelector.tsx:118
msgid "Add label"
@@ -80,17 +92,36 @@ msgstr "Ajouter une étiquette"
msgid "Add member"
msgstr "Ajouter un membre"
#: src/views/card/components/ActivityList.tsx:56
#: src/views/card/components/ActivityList.tsx:69
msgid "added a checklist"
msgstr "a ajouté une checklist"
#: src/views/card/components/ActivityList.tsx:72
msgid "added a checklist item"
msgstr "a ajouté un élément à la checklist"
#: src/views/card/components/ActivityList.tsx:65
msgid "added a label to the card"
msgstr "a ajouté une étiquette à la carte"
#: src/views/card/components/ActivityList.tsx:58
#: src/views/card/components/ActivityList.tsx:67
msgid "added a member to the card"
msgstr "a ajouté un membre à la carte"
#: src/views/card/components/ActivityList.tsx:110
msgid "added label <0>{label}</0>"
msgstr "a ajouté l'étiquette <0>{label}</0>"
#. placeholder {0}: truncate(toTitle)
#: src/views/card/components/ActivityList.tsx:146
msgid "added checklist <0>{0}</0>"
msgstr "a ajouté la checklist <0>{0}</0>"
#. placeholder {0}: truncate(toTitle)
#: src/views/card/components/ActivityList.tsx:170
msgid "added checklist item <0>{0}</0>"
msgstr "a ajouté l'élément <0>{0}</0> à la checklist"
#. placeholder {0}: truncate(label)
#: src/views/card/components/ActivityList.tsx:130
msgid "added label <0>{0}</0>"
msgstr "a ajouté l'étiquette <0>{0}</0>"
#: src/views/home/components/Pricing.tsx:55
msgid "Admin roles"
@@ -141,6 +172,10 @@ msgstr "Êtes-vous sûr de vouloir supprimer l'espace de travail {0} ?"
msgid "Are you sure you want to delete this card?"
msgstr "Êtes-vous sûr de vouloir supprimer cette carte ?"
#: src/views/card/components/DeleteChecklistConfirmation.tsx:55
msgid "Are you sure you want to delete this checklist?"
msgstr "Êtes-vous sûr de vouloir supprimer cette checklist ?"
#: src/views/card/components/DeleteCommentConfirmation.tsx:65
msgid "Are you sure you want to delete this comment?"
msgstr "Êtes-vous sûr de vouloir supprimer ce commentaire ?"
@@ -153,9 +188,10 @@ msgstr "Êtes-vous sûr de vouloir supprimer cette étiquette ?"
msgid "Are you sure you want to delete your account?"
msgstr "Êtes-vous sûr de vouloir supprimer votre compte ?"
#: src/views/card/components/ActivityList.tsx:92
msgid "assigned <0>{memberName}</0> to the card"
msgstr "a assigné <0>{memberName}</0> à la carte"
#. placeholder {0}: truncate(memberName)
#: src/views/card/components/ActivityList.tsx:110
msgid "assigned <0>{0}</0> to the card"
msgstr "a assigné <0>{0}</0> à la carte"
#: src/views/boards/components/TemplateBoards.tsx:46
msgid "Awaiting Customer"
@@ -182,7 +218,7 @@ msgstr "Portail de facturation"
msgid "Blog Post"
msgstr "Article de blog"
#: src/views/board/index.tsx:332
#: src/views/board/index.tsx:331
msgid "Board"
msgstr "Tableau"
@@ -195,7 +231,7 @@ msgid "Board name is required"
msgstr "Le nom du tableau est requis"
#: src/views/public/board/index.tsx:143
#: src/views/board/index.tsx:358
#: src/views/board/index.tsx:357
msgid "Board not found"
msgstr "Tableau introuvable"
@@ -250,13 +286,14 @@ msgstr "Rapport de bug"
#: src/views/settings/components/CustomURLConfirmation.tsx:50
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
#: src/views/card/components/DeleteCardConfirmation.tsx:86
#: src/views/card/components/Comment.tsx:158
#: src/components/DeleteLabelConfirmation.tsx:47
msgid "Cancel"
msgstr "Annuler"
#: src/views/card/index.tsx:234
#: src/views/card/index.tsx:259
msgid "Card not found"
msgstr "Carte introuvable"
@@ -273,6 +310,10 @@ msgstr "Changer la langue de l'application."
msgid "Check your inbox"
msgstr "Vérifiez votre boîte de réception"
#: src/views/card/components/NewChecklistForm.tsx:118
msgid "Checklist name"
msgstr "Nom de la checklist"
#: src/views/board/components/Filters.tsx:155
msgid "Clear filters"
msgstr "Effacer les filtres"
@@ -310,6 +351,15 @@ msgstr "Terminé"
msgid "Complete control and ownership:"
msgstr "Contrôle et propriété complets :"
#: src/views/card/components/ActivityList.tsx:74
msgid "completed a checklist item"
msgstr "a terminé un élément de la checklist"
#. placeholder {0}: truncate(toTitle)
#: src/views/card/components/ActivityList.tsx:187
msgid "completed checklist item <0>{0}</0>"
msgstr "a terminé l'élément <0>{0}</0> de la checklist"
#: src/views/settings/components/CustomURLConfirmation.tsx:42
msgid "Confirm URL change"
msgstr "Confirmer le changement d'URL"
@@ -366,6 +416,10 @@ msgstr "Créer un tableau"
msgid "Create card"
msgstr "Créer une carte"
#: src/views/card/components/NewChecklistForm.tsx:134
msgid "Create checklist"
msgstr "Créer une checklist"
#: src/components/LabelForm.tsx:236
msgid "Create label"
msgstr "Créer une étiquette"
@@ -387,7 +441,7 @@ msgstr "Créer une nouvelle clé"
msgid "Create new label"
msgstr "Créer une nouvelle étiquette"
#: src/views/board/index.tsx:426
#: src/views/board/index.tsx:425
msgid "Create new list"
msgstr "Créer une nouvelle liste"
@@ -396,7 +450,7 @@ msgstr "Créer une nouvelle liste"
msgid "Create workspace"
msgstr "Créer un espace de travail"
#: src/views/card/components/ActivityList.tsx:52
#: src/views/card/components/ActivityList.tsx:61
msgid "created the card"
msgstr "a créé la carte"
@@ -421,6 +475,7 @@ msgid "Dark"
msgstr "Sombre"
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
#: src/views/card/components/DeleteCardConfirmation.tsx:92
#: src/components/LabelForm.tsx:226
#: src/components/DeleteLabelConfirmation.tsx:49
@@ -437,7 +492,7 @@ msgstr "Supprimer le compte"
msgid "Delete board"
msgstr "Supprimer le tableau"
#: src/views/card/components/Dropdown.tsx:14
#: src/views/card/components/Dropdown.tsx:25
msgid "Delete card"
msgstr "Supprimer la carte"
@@ -455,6 +510,24 @@ msgstr "Supprimer la liste"
msgid "Delete workspace"
msgstr "Supprimer l'espace de travail"
#: src/views/card/components/ActivityList.tsx:71
msgid "deleted a checklist"
msgstr "a supprimé une checklist"
#: src/views/card/components/ActivityList.tsx:76
msgid "deleted a checklist item"
msgstr "a supprimé un élément de la checklist"
#. placeholder {0}: truncate(fromTitle)
#: src/views/card/components/ActivityList.tsx:162
msgid "deleted checklist <0>{0}</0>"
msgstr "a supprimé la checklist <0>{0}</0>"
#. placeholder {0}: truncate(fromTitle)
#: src/views/card/components/ActivityList.tsx:205
msgid "deleted checklist item <0>{0}</0>"
msgstr "a supprimé l'élément <0>{0}</0> de la checklist"
#: src/views/boards/components/TemplateBoards.tsx:32
msgid "Design"
msgstr "Design"
@@ -692,7 +765,7 @@ msgstr "Commencer"
msgid "Get started by creating a new board"
msgstr "Commencez par créer un nouveau tableau"
#: src/views/board/index.tsx:418
#: src/views/board/index.tsx:417
msgid "Get started by creating a new list"
msgstr "Commencez par créer une nouvelle liste"
@@ -849,7 +922,7 @@ msgstr "Kanban réinventé"
msgid "Keep in mind that this action is irreversible."
msgstr "Gardez à l'esprit que cette action est irréversible."
#: src/views/card/index.tsx:113
#: src/views/card/index.tsx:118
#: src/views/board/components/NewCardForm.tsx:358
#: src/views/board/components/Filters.tsx:101
msgid "Labels"
@@ -883,7 +956,7 @@ msgstr "Clair"
msgid "Link copied"
msgstr "Lien copié"
#: src/views/card/index.tsx:105
#: src/views/card/index.tsx:110
msgid "List"
msgstr "Liste"
@@ -911,12 +984,21 @@ msgstr "Priorité basse"
msgid "magic link"
msgstr "lien magique"
#: src/views/card/components/ActivityList.tsx:75
msgid "marked a checklist item as incomplete"
msgstr "a marqué un élément de la checklist comme incomplet"
#. placeholder {0}: truncate(toTitle)
#: src/views/card/components/ActivityList.tsx:196
msgid "marked checklist item <0>{0}</0> as incomplete"
msgstr "a marqué l'élément <0>{0}</0> de la checklist comme incomplet"
#: src/views/boards/components/TemplateBoards.tsx:17
msgid "Medium Priority"
msgstr "Priorité moyenne"
#: src/views/members/index.tsx:161
#: src/views/card/index.tsx:121
#: src/views/card/index.tsx:126
#: src/views/board/components/NewCardForm.tsx:317
#: src/views/board/components/Filters.tsx:93
#: src/components/SideNavigation.tsx:73
@@ -932,11 +1014,13 @@ msgstr "Membres | {0}"
msgid "Monthly"
msgstr "Mensuel"
#: src/views/card/components/ActivityList.tsx:81
msgid "moved the card from <0>{fromList}</0> to<1>{toList}</1>"
msgstr "a déplacé la carte de <0>{fromList}</0> vers<1>{toList}</1>"
#. placeholder {0}: truncate(fromList)
#. placeholder {1}: truncate(toList)
#: src/views/card/components/ActivityList.tsx:98
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
msgstr "a déplacé la carte de <0>{0}</0> vers <1>{1}</1>"
#: src/views/card/components/ActivityList.tsx:55
#: src/views/card/components/ActivityList.tsx:64
msgid "moved the card to another list"
msgstr "a déplacé la carte vers une autre liste"
@@ -961,6 +1045,10 @@ msgstr "Nouveau tableau"
msgid "New card"
msgstr "Nouvelle carte"
#: src/views/card/components/NewChecklistForm.tsx:102
msgid "New checklist"
msgstr "Nouvelle checklist"
#: src/views/boards/components/ImportBoardsForm.tsx:322
msgid "New import"
msgstr "Nouvel import"
@@ -969,7 +1057,7 @@ msgstr "Nouvel import"
msgid "New label"
msgstr "Nouvelle étiquette"
#: src/views/board/index.tsx:395
#: src/views/board/index.tsx:394
#: src/views/board/components/NewListForm.tsx:112
msgid "New list"
msgstr "Nouvelle liste"
@@ -1002,7 +1090,7 @@ msgstr "Aucun tableau trouvé"
msgid "No credit card required"
msgstr "Aucune carte de crédit requise"
#: src/views/board/index.tsx:415
#: src/views/board/index.tsx:414
msgid "No lists"
msgstr "Aucune liste"
@@ -1085,17 +1173,23 @@ msgstr "Veuillez sélectionner un fichier à télécharger."
#: src/views/settings/components/Avatar.tsx:98
#: src/views/members/components/InviteMemberForm.tsx:64
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/card/index.tsx:159
#: src/views/card/index.tsx:173
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/components/NewChecklistItemForm.tsx:89
#: src/views/card/components/NewChecklistForm.tsx:70
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/ListSelector.tsx:53
#: src/views/card/components/LabelSelector.tsx:73
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/Comment.tsx:64
#: src/views/card/components/ChecklistNameInput.tsx:46
#: src/views/card/components/ChecklistItemRow.tsx:60
#: src/views/card/components/ChecklistItemRow.tsx:88
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/views/board/index.tsx:135
#: src/views/board/index.tsx:191
#: src/views/board/index.tsx:134
#: src/views/board/index.tsx:190
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/NewListForm.tsx:78
@@ -1168,17 +1262,32 @@ msgstr "Supprimer"
msgid "Remove member"
msgstr "Supprimer le membre"
#: src/views/card/components/ActivityList.tsx:57
#: src/views/card/components/ActivityList.tsx:66
msgid "removed a label from the card"
msgstr "a supprimé une étiquette de la carte"
#: src/views/card/components/ActivityList.tsx:59
#: src/views/card/components/ActivityList.tsx:68
msgid "removed a member from the card"
msgstr "a retiré un membre de la carte"
#: src/views/card/components/ActivityList.tsx:118
msgid "removed label <0>{label}</0>"
msgstr "a supprimé l'étiquette <0>{label}</0>"
#. placeholder {0}: truncate(label)
#: src/views/card/components/ActivityList.tsx:138
msgid "removed label <0>{0}</0>"
msgstr "a supprimé l'étiquette <0>{0}</0>"
#: src/views/card/components/ActivityList.tsx:70
msgid "renamed a checklist"
msgstr "a renommé une checklist"
#. placeholder {0}: truncate(toTitle)
#: src/views/card/components/ActivityList.tsx:154
msgid "renamed checklist <0>{0}</0>"
msgstr "a renommé la checklist <0>{0}</0>"
#. placeholder {0}: truncate(toTitle)
#: src/views/card/components/ActivityList.tsx:178
msgid "renamed checklist item to <0>{0}</0>"
msgstr "a renommé l'élément de la liste de contrôle en <0>{0}</0>"
#: src/views/boards/components/TemplateBoards.tsx:76
msgid "Research"
@@ -1241,7 +1350,7 @@ msgstr "Auto-hébergement"
msgid "Self host with Github"
msgstr "Auto-hébergement avec Github"
#: src/views/card/components/ActivityList.tsx:89
#: src/views/card/components/ActivityList.tsx:107
msgid "self-assigned the card"
msgstr "s'est auto-assigné la carte"
@@ -1360,6 +1469,7 @@ msgid "They won't be able to access this workspace."
msgstr "Ils ne pourront plus accéder à cet espace de travail."
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
#: src/views/card/components/DeleteCardConfirmation.tsx:78
#: src/components/DeleteLabelConfirmation.tsx:42
msgid "This action can't be undone."
@@ -1410,6 +1520,10 @@ msgstr "Importations Trello"
msgid "Triaging"
msgstr "Triage"
#: src/views/card/components/NewChecklistItemForm.tsx:88
msgid "Unable to add checklist item"
msgstr "Impossible d'ajouter l'élément à la liste de contrôle"
#: src/views/card/components/NewCommentForm.tsx:30
msgid "Unable to add comment"
msgstr "Impossible d'ajouter un commentaire"
@@ -1418,6 +1532,10 @@ msgstr "Impossible d'ajouter un commentaire"
msgid "Unable to create card"
msgstr "Impossible de créer la carte"
#: src/views/card/components/NewChecklistForm.tsx:69
msgid "Unable to create checklist"
msgstr "Impossible de créer la liste de contrôle"
#: src/views/board/components/NewListForm.tsx:77
msgid "Unable to create list"
msgstr "Impossible de créer une liste"
@@ -1430,6 +1548,14 @@ msgstr "Impossible de créer l'espace de travail"
msgid "Unable to delete card"
msgstr "Impossible de supprimer la carte"
#: src/views/card/components/DeleteChecklistConfirmation.tsx:36
msgid "Unable to delete checklist"
msgstr "Impossible de supprimer la liste de contrôle"
#: src/views/card/components/ChecklistItemRow.tsx:87
msgid "Unable to delete checklist item"
msgstr "Impossible de supprimer l'élément de la liste de contrôle"
#: src/views/card/components/DeleteCommentConfirmation.tsx:44
msgid "Unable to delete comment"
msgstr "Impossible de supprimer le commentaire"
@@ -1450,11 +1576,19 @@ msgstr "Impossible de mettre à jour l'URL du tableau"
msgid "Unable to update board visibility"
msgstr "Impossible de mettre à jour la visibilité du tableau"
#: src/views/card/index.tsx:158
#: src/views/board/index.tsx:190
#: src/views/card/index.tsx:172
#: src/views/board/index.tsx:189
msgid "Unable to update card"
msgstr "Impossible de mettre à jour la carte"
#: src/views/card/components/ChecklistNameInput.tsx:45
msgid "Unable to update checklist"
msgstr "Impossible de mettre à jour la liste de contrôle"
#: src/views/card/components/ChecklistItemRow.tsx:59
msgid "Unable to update checklist item"
msgstr "Impossible de mettre à jour l'élément de la liste de contrôle"
#: src/views/card/components/Comment.tsx:63
msgid "Unable to update comment"
msgstr "Impossible de mettre à jour le commentaire"
@@ -1464,7 +1598,7 @@ msgid "Unable to update labels"
msgstr "Impossible de mettre à jour les étiquettes"
#: src/views/card/components/ListSelector.tsx:52
#: src/views/board/index.tsx:134
#: src/views/board/index.tsx:133
msgid "Unable to update list"
msgstr "Impossible de mettre à jour la liste"
@@ -1472,11 +1606,12 @@ msgstr "Impossible de mettre à jour la liste"
msgid "Unable to update members"
msgstr "Impossible de mettre à jour les membres"
#: src/views/card/components/ActivityList.tsx:102
msgid "unassigned <0>{memberName}</0> from the card"
msgstr "a retiré <0>{memberName}</0> de la carte"
#. placeholder {0}: truncate(memberName)
#: src/views/card/components/ActivityList.tsx:121
msgid "unassigned <0>{0}</0> from the card"
msgstr "a désassigné <0>{0}</0> de la carte"
#: src/views/card/components/ActivityList.tsx:99
#: src/views/card/components/ActivityList.tsx:118
msgid "unassigned themselves from the card"
msgstr "s'est retiré de la carte"
@@ -1516,17 +1651,22 @@ msgstr "Mettre à jour"
msgid "Update label"
msgstr "Mettre à jour l'étiquette"
#: src/views/card/components/ActivityList.tsx:54
#: src/views/card/components/ActivityList.tsx:73
msgid "updated a checklist item"
msgstr "a mis à jour un élément de la liste de contrôle"
#: src/views/card/components/ActivityList.tsx:63
msgid "updated the description"
msgstr "a mis à jour la description"
#: src/views/card/components/ActivityList.tsx:53
#: src/views/card/components/ActivityList.tsx:62
msgid "updated the title"
msgstr "a mis à jour le titre"
#: src/views/card/components/ActivityList.tsx:73
msgid "updated the title to <0>{toTitle}</0>"
msgstr "a mis à jour le titre en <0>{toTitle}</0>"
#. placeholder {0}: truncate(toTitle)
#: src/views/card/components/ActivityList.tsx:90
msgid "updated the title to <0>{0}</0>"
msgstr "a mis à jour le titre en <0>{0}</0>"
#: src/views/settings/components/CustomURLConfirmation.tsx:52
msgid "Upgrade"
@@ -1621,7 +1761,7 @@ msgstr "Quand Trello a été lancé en 2011, il a impressionné tout le monde pa
msgid "Why make an open source Trello?"
msgstr "Pourquoi créer un Trello open source ?"
#: src/views/board/index.tsx:332
#: src/views/board/index.tsx:331
msgid "Workspace"
msgstr "Espace de travail"

File diff suppressed because one or more lines are too long