Improve admin candidate modal UX and add clip menu visibility toggle
- Widen AdminCandidateEditorModal to size lg for better readability - Rename "Clip-Compilation" section to "Clip / Compilation", update copy to reflect single clips too, drop upload hint and Clip-Plattform field, rename label to "Link" - Fix NativeSelect dropdown clipping inside overflow-y-auto modals by teleporting the menu to body with fixed positioning, flip-up logic, and dynamic maxHeight capped to viewport - Add ClipAdminMenuVisible setting (backend domain, contracts, endpoint, migration) with matching frontend types, defaults, form wiring, and toggle in the Clip-Workflow modal — hides the Clips nav item from the admin sidebar when disabled Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -91,6 +91,14 @@ public sealed record ApproveNominationRequest(
|
||||
|
||||
public sealed record RejectNominationRequest(string? ReviewNote);
|
||||
|
||||
public sealed record AdminNominationLinkBlacklistEntryDto(string Url);
|
||||
|
||||
public sealed record AdminNominationLinkBlacklistResponse(AdminNominationLinkBlacklistEntryDto[] Entries);
|
||||
|
||||
public sealed record UpdateNominationLinkBlacklistRequest(string[] Urls);
|
||||
|
||||
public sealed record AddNominationLinkBlacklistEntryRequest(string Url);
|
||||
|
||||
public sealed record UpdateClipStatusRequest(
|
||||
string Status,
|
||||
string? ReviewNote);
|
||||
@@ -116,3 +124,15 @@ public sealed record AdminRiskRuleDto(
|
||||
public sealed record AdminRiskRulesResponse(AdminRiskRuleDto[] Rules);
|
||||
|
||||
public sealed record UpdateRiskRulesRequest(AdminRiskRuleDto[] Rules);
|
||||
|
||||
public sealed record AdminWorkflowRuleDto(
|
||||
string Key,
|
||||
string Label,
|
||||
bool Enabled,
|
||||
int Limit,
|
||||
string Mode,
|
||||
string Description);
|
||||
|
||||
public sealed record AdminWorkflowRulesResponse(AdminWorkflowRuleDto[] Rules);
|
||||
|
||||
public sealed record UpdateWorkflowRulesRequest(AdminWorkflowRuleDto[] Rules);
|
||||
|
||||
@@ -23,7 +23,13 @@ public sealed record AdminCandidateItemDto(
|
||||
int CategoryId,
|
||||
string DisplayName,
|
||||
string ChannelSlug,
|
||||
string Platform);
|
||||
string Platform,
|
||||
string AcceptanceStatus,
|
||||
string? AcceptanceNote,
|
||||
string? ClipCompilationUrl,
|
||||
string? ClipCompilationTitle,
|
||||
string? ClipCompilationPlatform,
|
||||
string ClipEmbedStatus);
|
||||
|
||||
public sealed record AdminAwardResultItemDto(
|
||||
int Id,
|
||||
@@ -102,7 +108,13 @@ public sealed record UpsertCandidateRequest(
|
||||
int CategoryId,
|
||||
string DisplayName,
|
||||
string ChannelSlug,
|
||||
string Platform);
|
||||
string Platform,
|
||||
string? AcceptanceStatus = null,
|
||||
string? AcceptanceNote = null,
|
||||
string? ClipCompilationUrl = null,
|
||||
string? ClipCompilationTitle = null,
|
||||
string? ClipCompilationPlatform = null,
|
||||
string? ClipEmbedStatus = null);
|
||||
|
||||
public sealed record SetAwardResultRequest(
|
||||
int CategoryId,
|
||||
|
||||
@@ -14,6 +14,8 @@ public sealed record AdminSiteSettingsResponse(
|
||||
string ContactContent,
|
||||
string SponsorsUrl,
|
||||
string SponsorsContent,
|
||||
string ShowactsUrl,
|
||||
string ShowactsContent,
|
||||
IEnumerable<PublicSocialLinkDto> SocialLinks,
|
||||
IEnumerable<FaqItemDto> Faq);
|
||||
|
||||
@@ -29,6 +31,8 @@ public sealed record UpdateSiteSettingsRequest(
|
||||
string ContactContent,
|
||||
string SponsorsUrl,
|
||||
string SponsorsContent,
|
||||
string ShowactsUrl,
|
||||
string ShowactsContent,
|
||||
PublicSocialLinkDto[] SocialLinks,
|
||||
FaqItemDto[] Faq);
|
||||
|
||||
@@ -49,6 +53,24 @@ public sealed record AdminOperationalSettingsResponse(
|
||||
string MaintenanceTitle,
|
||||
string MaintenanceMessage);
|
||||
|
||||
public sealed record AdminOptionalFeatureSettingsResponse(
|
||||
bool ClipSubmissionsEnabled,
|
||||
bool ClipReviewEnabled,
|
||||
bool ClipAdminMenuVisible,
|
||||
string ClipSubmissionDisabledMessage,
|
||||
bool ShowactApplicationsEnabled,
|
||||
string ShowactApplicationDisabledMessage,
|
||||
bool SponsorsVisible);
|
||||
|
||||
public sealed record UpdateOptionalFeatureSettingsRequest(
|
||||
bool ClipSubmissionsEnabled,
|
||||
bool ClipReviewEnabled,
|
||||
bool ClipAdminMenuVisible,
|
||||
string ClipSubmissionDisabledMessage,
|
||||
bool ShowactApplicationsEnabled,
|
||||
string ShowactApplicationDisabledMessage,
|
||||
bool SponsorsVisible);
|
||||
|
||||
public sealed record UpdateOperationalSettingsRequest(
|
||||
bool DemoLoginEnabled,
|
||||
string DemoLoginEmail,
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
namespace Backend.Contracts;
|
||||
|
||||
public sealed record SponsorDto(
|
||||
int Id,
|
||||
int SeasonId,
|
||||
string Name,
|
||||
string WebsiteUrl,
|
||||
string LogoUrl,
|
||||
string Description,
|
||||
string Tier,
|
||||
int SortOrder,
|
||||
bool IsVisible);
|
||||
|
||||
public sealed record PublicSponsorsResponse(int Year, SponsorDto[] Items);
|
||||
|
||||
public sealed record UpsertSponsorRequest(
|
||||
string Name,
|
||||
string WebsiteUrl,
|
||||
string LogoUrl,
|
||||
string Description,
|
||||
string Tier,
|
||||
int SortOrder,
|
||||
bool IsVisible);
|
||||
|
||||
public sealed record ShowactApplicationDto(
|
||||
int Id,
|
||||
int SeasonId,
|
||||
string ArtistName,
|
||||
string ContactEmail,
|
||||
string ContactDiscord,
|
||||
string PlatformUrl,
|
||||
string PerformanceType,
|
||||
string Description,
|
||||
string TechnicalNotes,
|
||||
string ReferenceUrl,
|
||||
string Status,
|
||||
string? ReviewNote,
|
||||
DateTimeOffset CreatedAt,
|
||||
DateTimeOffset? ReviewedAt);
|
||||
|
||||
public sealed record CreateShowactApplicationRequest(
|
||||
string ArtistName,
|
||||
string ContactEmail,
|
||||
string ContactDiscord,
|
||||
string PlatformUrl,
|
||||
string PerformanceType,
|
||||
string Description,
|
||||
string TechnicalNotes,
|
||||
string ReferenceUrl);
|
||||
|
||||
public sealed record UpdateShowactStatusRequest(string Status, string? ReviewNote);
|
||||
@@ -20,7 +20,11 @@ public sealed record WinnerPreviewDto(
|
||||
string WinnerName,
|
||||
string WinnerSlug,
|
||||
string WinnerPlatform,
|
||||
string WinnerUrl);
|
||||
string WinnerUrl,
|
||||
string? ClipUrl,
|
||||
string? ClipTitle,
|
||||
string? ClipPlatform,
|
||||
string? ClipEmbedStatus);
|
||||
|
||||
public sealed record ArchiveYearDto(
|
||||
int Year,
|
||||
@@ -57,6 +61,14 @@ public sealed record PublicSiteStatusResponse(
|
||||
string MaintenanceTitle,
|
||||
string MaintenanceMessage);
|
||||
|
||||
public sealed record PublicFeatureFlagsDto(
|
||||
bool ClipSubmissionsEnabled,
|
||||
bool ClipReviewEnabled,
|
||||
string ClipSubmissionDisabledMessage,
|
||||
bool ShowactApplicationsEnabled,
|
||||
string ShowactApplicationDisabledMessage,
|
||||
bool SponsorsVisible);
|
||||
|
||||
public sealed record OverviewResponse(
|
||||
int SeasonId,
|
||||
int Year,
|
||||
@@ -72,4 +84,5 @@ public sealed record OverviewResponse(
|
||||
IEnumerable<WinnerPreviewDto> WinnersPreview,
|
||||
IEnumerable<ArchiveYearDto> ArchiveYears,
|
||||
PublicSiteContentDto SiteContent,
|
||||
PublicFeatureFlagsDto FeatureFlags,
|
||||
IEnumerable<FaqItemDto> Faq);
|
||||
|
||||
@@ -4,10 +4,12 @@ public sealed record CandidateSummaryDto(
|
||||
int Id,
|
||||
string DisplayName,
|
||||
string ChannelSlug,
|
||||
string ChannelUrl,
|
||||
string Platform,
|
||||
string? ClipUrl,
|
||||
string? ClipTitle,
|
||||
string? ClipPlatform);
|
||||
string? ClipPlatform,
|
||||
string? ClipEmbedStatus);
|
||||
|
||||
public sealed record PublicCategoryDetailDto(
|
||||
int Id,
|
||||
|
||||
@@ -5,7 +5,11 @@ public sealed record WinnerArchiveItemDto(
|
||||
string WinnerName,
|
||||
string WinnerSlug,
|
||||
string WinnerPlatform,
|
||||
string WinnerUrl);
|
||||
string WinnerUrl,
|
||||
string? ClipUrl,
|
||||
string? ClipTitle,
|
||||
string? ClipPlatform,
|
||||
string? ClipEmbedStatus);
|
||||
|
||||
public sealed record WinnerArchiveResponse(
|
||||
int Year,
|
||||
|
||||
Reference in New Issue
Block a user