feat: add YouTube video embed support for TipTap editor (#294)

* feat: add YouTube video embed support for TipTap editor

- Paste YouTube URLs to auto-embed videos with metadata
- Edit video title and URL through dropdown menu
- Convert embed back to plain URL link
- Fetch video titles automatically via YouTube oEmbed API

* fix:
- reverted NewCardForm CSS properties back to max-h-48.
- Added boolean prop to TipTap Edtior for YouTube embed.
- Disabled YouTube embed feature for NewCardForm Editor

* chore: lint

* chore: translations

* chore: update translations

---------

Co-authored-by: Henry <henry_ball@hotmail.co.uk>
This commit is contained in:
Eliott Herbert-Byrnes
2026-01-05 20:15:07 +00:00
committed by GitHub
parent a5432c60b7
commit 89c8961176
29 changed files with 1570 additions and 489 deletions

View File

@@ -31,17 +31,17 @@ msgstr "{0}"
#. placeholder {1}: board?.name ?? t`Board`
#. placeholder {1}: workspace.name ?? t`Workspace`
#: src/views/boards/index.tsx:33
#: src/views/card/index.tsx:272
#: src/views/card/index.tsx:273
msgid "{0} | {1}"
msgstr "{0} | {1}"
#. placeholder {0}: labelPublicIds.length
#: src/views/board/components/NewCardForm.tsx:452
#: src/views/board/components/NewCardForm.tsx:453
msgid "{0} labels"
msgstr "{0} labels"
#. placeholder {0}: isTemplate ? "Template" : "Board"
#: src/views/board/index.tsx:408
#: src/views/board/index.tsx:416
msgid "{0} not found"
msgstr "{0} niet gevonden"
@@ -83,7 +83,7 @@ msgstr "Account verwijderd"
msgid "Actions"
msgstr "Acties"
#: src/views/card/index.tsx:386
#: src/views/card/index.tsx:387
#: src/views/public/board/CardModal.tsx:158
msgid "Activity"
msgstr "Activiteit"
@@ -113,11 +113,11 @@ msgstr "Voeg een item toe..."
msgid "Add checklist"
msgstr "Checklist toevoegen"
#: src/components/Editor.tsx:451
#: src/components/Editor.tsx:455
msgid "Add description... (type '/' to open commands or '@' to mention)"
msgstr "Beschrijving toevoegen... (typ '/' om commando's te openen of '@' om te vermelden)"
#: src/views/card/components/ChecklistItemRow.tsx:195
#: src/views/card/components/ChecklistItemRow.tsx:200
msgid "Add details..."
msgstr "Details toevoegen..."
@@ -317,8 +317,8 @@ msgstr "Factureringsportaal"
msgid "Blog Post"
msgstr "Blogbericht"
#: src/views/board/index.tsx:382
#: src/views/card/index.tsx:272
#: src/views/board/index.tsx:390
#: src/views/card/index.tsx:273
#: src/views/public/board/index.tsx:114
msgid "Board"
msgstr "Bord"
@@ -386,6 +386,7 @@ msgid "Bug Report"
msgstr "Bugrapport"
#: src/components/DeleteLabelConfirmation.tsx:49
#: src/components/YouTubeEmbed/EditYouTubeModal.tsx:176
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
#: src/views/card/components/Comment.tsx:159
#: src/views/card/components/DeleteCardConfirmation.tsx:86
@@ -400,12 +401,12 @@ msgstr "Bugrapport"
msgid "Cancel"
msgstr "Annuleren"
#: src/views/card/index.tsx:272
#: src/views/card/index.tsx:273
msgid "Card"
msgstr "Kaart"
#: src/views/card/index.tsx:306
#: src/views/card/index.tsx:342
#: src/views/card/index.tsx:307
#: src/views/card/index.tsx:343
msgid "Card not found"
msgstr "Kaart niet gevonden"
@@ -555,6 +556,10 @@ msgstr "Doorgaan met {0}"
msgid "Control who can view and edit your boards."
msgstr "Bepaal wie je borden kan bekijken en bewerken."
#: src/components/YouTubeEmbed/YouTubeDropdown.tsx:47
msgid "Convert to link"
msgstr "Converteer naar link"
#: src/views/pricing/components/FeatureComparisonTable.tsx:38
msgid "Core features"
msgstr "Kernfuncties"
@@ -565,7 +570,7 @@ msgid "Create {0}"
msgstr "{0} maken"
#: src/components/LabelForm.tsx:213
#: src/views/board/components/NewCardForm.tsx:516
#: src/views/board/components/NewCardForm.tsx:517
#: src/views/board/components/NewListForm.tsx:141
msgid "Create another"
msgstr "Maak nog een"
@@ -574,7 +579,7 @@ msgstr "Maak nog een"
msgid "Create API key"
msgstr "API-sleutel aanmaken"
#: src/views/board/components/NewCardForm.tsx:526
#: src/views/board/components/NewCardForm.tsx:527
msgid "Create card"
msgstr "Maak kaart"
@@ -604,13 +609,13 @@ msgstr "Nieuwe {0} maken"
msgid "Create new key"
msgstr "Nieuwe sleutel aanmaken"
#: src/views/board/components/NewCardForm.tsx:414
#: src/views/board/components/NewCardForm.tsx:415
#: src/views/card/components/LabelSelector.tsx:98
msgid "Create new label"
msgstr "Maak nieuw label"
#: src/views/board/index.tsx:64
#: src/views/board/index.tsx:499
#: src/views/board/index.tsx:65
#: src/views/board/index.tsx:507
msgid "Create new list"
msgstr "Maak nieuwe lijst"
@@ -679,6 +684,7 @@ msgstr "Uitnodigingslink deactiveren"
#: src/components/DeleteLabelConfirmation.tsx:51
#: src/components/LabelForm.tsx:228
#: src/components/YouTubeEmbed/YouTubeDropdown.tsx:52
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
#: src/views/card/components/DeleteCardConfirmation.tsx:92
#: src/views/card/components/DeleteChecklistConfirmation.tsx:67
@@ -803,8 +809,8 @@ msgid "Download failed"
msgstr "Download mislukt"
#: src/views/board/components/Filters.tsx:171
#: src/views/board/components/NewCardForm.tsx:469
#: src/views/card/index.tsx:139
#: src/views/board/components/NewCardForm.tsx:470
#: src/views/card/index.tsx:140
msgid "Due date"
msgstr "Vervaldatum"
@@ -824,6 +830,10 @@ msgstr "Vervalt vandaag"
msgid "Due tomorrow"
msgstr "Vervalt morgen"
#: src/components/YouTubeEmbed/YouTubeDropdown.tsx:42
msgid "Edit"
msgstr "Bewerken"
#: src/views/board/components/BoardDropdown.tsx:41
#: src/views/board/components/UpdateBoardSlugForm.tsx:116
msgid "Edit board URL"
@@ -841,6 +851,10 @@ msgstr "Label bewerken"
msgid "Edit workspace URL"
msgstr "Werkruimte-URL bewerken"
#: src/components/YouTubeEmbed/EditYouTubeModal.tsx:108
msgid "Edit YouTube Video"
msgstr "YouTube-video bewerken"
#: src/views/boards/components/TemplateBoards.tsx:32
msgid "Editing"
msgstr "Bewerken"
@@ -857,6 +871,10 @@ msgstr "E-mail"
msgid "Enhancement"
msgstr "Verbetering"
#: src/components/YouTubeEmbed/EditYouTubeModal.tsx:131
msgid "Enter a custom title"
msgstr "Voer een aangepaste titel in"
#: src/views/settings/components/ChangePasswordConfirmation.tsx:122
msgid "Enter your current password"
msgstr "Voer je huidige wachtwoord in"
@@ -981,6 +999,10 @@ msgstr "Kopiëren van uitnodigingslink mislukt"
msgid "Failed to create board"
msgstr "Bord maken mislukt"
#: src/components/YouTubeEmbed/EditYouTubeModal.tsx:82
msgid "Failed to fetch video information"
msgstr "Kan video-informatie niet ophalen"
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
#: src/components/AuthForm.tsx:291
msgid "Failed to login with {0}. Please try again."
@@ -1047,6 +1069,8 @@ msgid "For long-term sustainability, we recognise all good open source projects
msgstr "Voor duurzaamheid op lange termijn erkennen we dat alle goede open source projecten een inkomstenbron nodig hebben. De onze komt van de betaalde cloudoplossing voor werkruimtes met meerdere gebruikers en voor aangepaste werkruimte-slugs. Er is geen verplichting om het te gebruiken, en je kunt de software gratis op je eigen infrastructuur hosten."
#: src/views/pricing/components/Pricing.tsx:32
#: src/views/pricing/components/Pricing.tsx:32
#: src/views/pricing/components/PricingTiers.tsx:30
#: src/views/pricing/components/PricingTiers.tsx:30
msgid "Free"
msgstr "Gratis"
@@ -1092,7 +1116,7 @@ msgstr "Aan de slag"
msgid "Get started by creating a new {0}"
msgstr "Begin door een nieuwe {0} te maken"
#: src/views/board/index.tsx:491
#: src/views/board/index.tsx:499
msgid "Get started by creating a new list"
msgstr "Begin door een nieuwe lijst te maken"
@@ -1175,6 +1199,10 @@ msgstr "Hoe kan ik zelf hosten?"
msgid "How is the project funded?"
msgstr "Hoe wordt het project gefinancierd?"
#: src/components/YouTubeEmbed/EditYouTubeModal.tsx:151
msgid "https://www.youtube.com/watch?v=..."
msgstr "https://www.youtube.com/watch?v=..."
#: src/views/settings/components/DeleteAccountConfirmation.tsx:82
msgid "I acknowledge that all of my account data will be permanently deleted and want to proceed."
msgstr "Ik bevestig dat alle gegevens van mijn account permanent worden verwijderd en wil doorgaan."
@@ -1327,8 +1355,8 @@ msgid "Keyboard Shortcuts"
msgstr "Sneltoetsen"
#: src/views/board/components/Filters.tsx:155
#: src/views/board/components/NewCardForm.tsx:418
#: src/views/card/index.tsx:121
#: src/views/board/components/NewCardForm.tsx:419
#: src/views/card/index.tsx:122
msgid "Labels"
msgstr "Labels"
@@ -1382,7 +1410,7 @@ msgstr "Licht"
msgid "Link copied"
msgstr "Link gekopieerd"
#: src/views/card/index.tsx:113
#: src/views/card/index.tsx:114
msgid "List"
msgstr "Lijst"
@@ -1445,8 +1473,8 @@ msgstr "Gemiddelde prioriteit"
#: src/components/SideNavigation.tsx:121
#: src/views/board/components/Filters.tsx:147
#: src/views/board/components/NewCardForm.tsx:376
#: src/views/card/index.tsx:130
#: src/views/board/components/NewCardForm.tsx:377
#: src/views/card/index.tsx:131
#: src/views/members/index.tsx:178
msgid "Members"
msgstr "Leden"
@@ -1520,7 +1548,7 @@ msgid "New label"
msgstr "Nieuw label"
#: src/views/board/components/NewListForm.tsx:113
#: src/views/board/index.tsx:462
#: src/views/board/index.tsx:470
msgid "New list"
msgstr "Nieuwe lijst"
@@ -1581,7 +1609,7 @@ msgstr "Geen download-URL beschikbaar voor deze bijlage."
msgid "No keyboard shortcuts registered."
msgstr "Geen sneltoetsen geregistreerd."
#: src/views/board/index.tsx:488
#: src/views/board/index.tsx:496
msgid "No lists"
msgstr "Geen lijsten"
@@ -1719,6 +1747,11 @@ msgstr "Voer een geldige naam in"
msgid "Please enter a valid password"
msgstr "Voer een geldig wachtwoord in"
#: src/components/YouTubeEmbed/EditYouTubeModal.tsx:58
#: src/components/YouTubeEmbed/EditYouTubeModal.tsx:98
msgid "Please enter a valid YouTube URL"
msgstr "Voer een geldige YouTube-URL in"
#: src/views/settings/components/Avatar.tsx:92
msgid "Please select a file to upload."
msgstr "Selecteer een bestand om te uploaden."
@@ -1732,12 +1765,12 @@ msgstr "Selecteer een bestand om te uploaden."
#: src/views/board/components/NewTemplateForm.tsx:77
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
#: src/views/board/components/VisibilityButton.tsx:54
#: src/views/board/index.tsx:170
#: src/views/board/index.tsx:226
#: src/views/board/index.tsx:171
#: src/views/board/index.tsx:227
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/views/card/components/AttachmentThumbnails.tsx:74
#: src/views/card/components/ChecklistItemRow.tsx:67
#: src/views/card/components/ChecklistItemRow.tsx:95
#: src/views/card/components/ChecklistItemRow.tsx:69
#: src/views/card/components/ChecklistItemRow.tsx:97
#: src/views/card/components/ChecklistNameInput.tsx:47
#: src/views/card/components/Checklists.tsx:81
#: src/views/card/components/Comment.tsx:65
@@ -1751,8 +1784,8 @@ msgstr "Selecteer een bestand om te uploaden."
#: src/views/card/components/NewChecklistForm.tsx:71
#: src/views/card/components/NewChecklistItemForm.tsx:90
#: src/views/card/components/NewCommentForm.tsx:32
#: src/views/card/index.tsx:187
#: src/views/card/index.tsx:200
#: src/views/card/index.tsx:188
#: src/views/card/index.tsx:201
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:241
@@ -1924,6 +1957,7 @@ msgstr "Rol"
msgid "Run on your own infrastructure"
msgstr "Draai op je eigen infrastructuur"
#: src/components/YouTubeEmbed/EditYouTubeModal.tsx:183
#: src/views/card/components/Comment.tsx:166
#: src/views/settings/components/Avatar.tsx:309
msgid "Save"
@@ -2107,8 +2141,8 @@ msgstr "Teamplan"
msgid "Teams"
msgstr "Teams"
#: src/views/board/index.tsx:382
#: src/views/board/index.tsx:417
#: src/views/board/index.tsx:390
#: src/views/board/index.tsx:425
msgid "Template"
msgstr "Sjabloon"
@@ -2214,6 +2248,10 @@ msgstr "Deze werkruimte-URL is gereserveerd"
msgid "This workspace username has already been taken"
msgstr "Deze werkruimtegebruikersnaam is al in gebruik"
#: src/components/YouTubeEmbed/EditYouTubeModal.tsx:127
msgid "Title"
msgstr "Titel"
#: src/views/boards/components/TemplateBoards.tsx:17
#: src/views/boards/components/TemplateBoards.tsx:23
msgid "To Do"
@@ -2256,7 +2294,7 @@ msgstr "Kan checklistitem niet toevoegen"
msgid "Unable to add comment"
msgstr "Kan geen reactie toevoegen"
#: src/views/card/index.tsx:199
#: src/views/card/index.tsx:200
msgid "Unable to add label"
msgstr "Kan label niet toevoegen"
@@ -2293,7 +2331,7 @@ msgstr "Kan kaart niet verwijderen"
msgid "Unable to delete checklist"
msgstr "Kan checklist niet verwijderen"
#: src/views/card/components/ChecklistItemRow.tsx:94
#: src/views/card/components/ChecklistItemRow.tsx:96
msgid "Unable to delete checklist item"
msgstr "Kan checklistitem niet verwijderen"
@@ -2321,8 +2359,8 @@ msgstr "Kan board URL niet bijwerken"
msgid "Unable to update board visibility"
msgstr "Kan bordzichtbaarheid niet bijwerken"
#: src/views/board/index.tsx:225
#: src/views/card/index.tsx:186
#: src/views/board/index.tsx:226
#: src/views/card/index.tsx:187
msgid "Unable to update card"
msgstr "Kan kaart niet bijwerken"
@@ -2330,7 +2368,7 @@ msgstr "Kan kaart niet bijwerken"
msgid "Unable to update checklist"
msgstr "Kan checklist niet bijwerken"
#: src/views/card/components/ChecklistItemRow.tsx:66
#: src/views/card/components/ChecklistItemRow.tsx:68
msgid "Unable to update checklist item"
msgstr "Kan checklistitem niet bijwerken"
@@ -2346,7 +2384,7 @@ msgstr "Kan vervaldatum niet bijwerken"
msgid "Unable to update labels"
msgstr "Kan labels niet bijwerken"
#: src/views/board/index.tsx:169
#: src/views/board/index.tsx:170
#: src/views/card/components/ListSelector.tsx:52
msgid "Unable to update list"
msgstr "Kan lijst niet bijwerken"
@@ -2557,7 +2595,7 @@ msgid "Why make an open source Trello?"
msgstr "Waarom een open source Trello maken?"
#: src/components/SettingsLayout.tsx:39
#: src/views/board/index.tsx:382
#: src/views/board/index.tsx:390
#: src/views/boards/index.tsx:33
#: src/views/members/index.tsx:173
#: src/views/public/board/index.tsx:114
@@ -2733,3 +2771,7 @@ msgstr "De naam van je werkruimte is bijgewerkt."
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:61
msgid "Your workspace slug has been updated."
msgstr "Je werkruimte-slug is bijgewerkt."
#: src/components/YouTubeEmbed/EditYouTubeModal.tsx:147
msgid "YouTube URL"
msgstr "YouTube-URL"

File diff suppressed because one or more lines are too long