From 8c1b365733c2bccd0838cbf07aa59115bcc0c0cd Mon Sep 17 00:00:00 2001 From: Andre Silva <32734153+Aandree5@users.noreply.github.com> Date: Sat, 10 May 2025 21:06:14 +0100 Subject: [PATCH] feat(releases-widget): limit number of displayed releases and custom name for repositories (#2974) Co-authored-by: Andre Silva Co-authored-by: Meier Lukas --- packages/translation/src/lang/en.json | 7 +++ ...widget-multiReleasesRepositories-input.tsx | 51 +++++++++++++++---- packages/widgets/src/releases/component.tsx | 19 +++++-- packages/widgets/src/releases/index.ts | 6 +++ .../src/releases/releases-repository.ts | 1 + 5 files changed, 70 insertions(+), 14 deletions(-) diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 08f197944..80e5198b5 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -2072,6 +2072,10 @@ "showDetails": { "label": "Show Details" }, + "topReleases": { + "label": "Top Releases", + "description": "The max number of latest releases to show. Zero means no limit." + }, "repositories": { "label": "Repositories", "addRRepository": { @@ -2084,6 +2088,9 @@ "label": "Identifier", "placeholder": "Name or Owner/Name" }, + "name": { + "label": "Name" + }, "versionFilter": { "label": "Version Filter", "prefix": { diff --git a/packages/widgets/src/_inputs/widget-multiReleasesRepositories-input.tsx b/packages/widgets/src/_inputs/widget-multiReleasesRepositories-input.tsx index 466001e0c..3252a617a 100644 --- a/packages/widgets/src/_inputs/widget-multiReleasesRepositories-input.tsx +++ b/packages/widgets/src/_inputs/widget-multiReleasesRepositories-input.tsx @@ -40,6 +40,7 @@ export const WidgetMultiReleasesRepositoriesInput = ({ (repository: ReleasesRepository, index: number): FormValidation => { form.setFieldValue(`options.${property}.${index}.providerKey`, repository.providerKey); form.setFieldValue(`options.${property}.${index}.identifier`, repository.identifier); + form.setFieldValue(`options.${property}.${index}.name`, repository.name); form.setFieldValue(`options.${property}.${index}.versionFilter`, repository.versionFilter); form.setFieldValue(`options.${property}.${index}.iconUrl`, repository.iconUrl); @@ -123,7 +124,8 @@ export const WidgetMultiReleasesRepositoriesInput = ({ - {repository.identifier} + {/* eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing */} + {repository.name || repository.identifier} @@ -178,6 +180,11 @@ const formatVersionFilterRegex = (versionFilter: ReleasesVersionFilter | undefin return `^${escapedPrefix}${precision}${escapedSuffix}$`; }; +const formatIdentifierName = (identifier: string) => { + const unformattedName = identifier.split("/").pop(); + return unformattedName?.replace(/[-_]/g, " ").replace(/(?:^\w|[A-Z]|\b\w)/g, (char) => char.toUpperCase()) ?? ""; +}; + interface ReleaseEditProps { fieldPath: string; repository: ReleasesRepository; @@ -209,7 +216,7 @@ const ReleaseEditModal = createModal(({ innerProps, actions }) return ( - +