-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Open
Labels
api-suggestionEarly API idea and discussion, it is NOT ready for implementationEarly API idea and discussion, it is NOT ready for implementationarea-System.Diagnostics
Milestone
Description
Background and motivation
It would help to support many web development scenarios (especially Blazor) and unlock potential cross-language editor features if we had a StringSyntax for CSS Class Lists:
- syntax error checking
- reference highlight of CSS class names
- code completion for class names
API Proposal
namespace System.Diagnostics.CodeAnalysis;
public sealed class StringSyntaxAttribute : Attribute
{
public const string CssClassList = "CssClassList";
}API Usage
Customers could annotate that Blazor components which accept additional CSS classes:
using Microsoft.AspNetCore.Components;
using System.Diagnostics.CodeAnalysis;
public class MyComponent : ComponentBase
{
[Parameter]
[StringSyntax(StringSyntaxAttribute.CssClassList)]
public string? CssClass { get; set; }
}<MyComponent CssClass="first second" />Or other helper methods:
using System.Diagnostics.CodeAnalysis;
public static class CssBuilder
{
public static string? Combine([StringSyntax(StringSyntaxAttribute.CssClassList)] string? class1, [StringSyntax(StringSyntaxAttribute.CssClassList)] string? class2) => (class1, class2) switch
{
(not null, null) => class1,
(not null, not null) => $"{class1} {class2}",
(null, null) => null,
(null, not null) => class2,
};
}<div class="@CssBuilder.Combine("first", "second")"></div>Alternative Designs
No response
Risks
It is a simple feature with a very simple grammar, which is broadly used everywhere, I see no risks with adding it.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
api-suggestionEarly API idea and discussion, it is NOT ready for implementationEarly API idea and discussion, it is NOT ready for implementationarea-System.Diagnostics