@inherits DInputBase @* daisyUI Rating: https://daisyui.com/components/rating/ . A radio per item, sharing a per-instance name; Value is the number of the checked item, 0 for none. With Half every item is two half radios and Value counts halves (3 = 1.5 stars). Static renders the read-only
version, marking the current item with aria-current. *@
@if (Static) { for (var i = 1; i <= Items; i++) {
} } else { if (Clearable) { } for (var i = 1; i <= Items; i++) { var item = i; } }
@code { [Parameter] public int Count { get; set; } = 5; [Parameter] public DRatingMask Mask { get; set; } [Parameter] public bool Half { get; set; } [Parameter] public DSize Size { get; set; } /// Adds the hidden first radio (rating-hidden) that clears the rating to 0. [Parameter] public bool Clearable { get; set; } /// Read-only rating:
items instead of radios.
[Parameter] public bool Static { get; set; } [Parameter] public bool Disabled { get; set; } /// Classes for every item, e.g. a color: bg-orange-400. [Parameter] public string ItemClass { get; set; } /// The unit in each item's aria-label ("2 star"). [Parameter] public string UnitText { get; set; } = "star"; [Parameter] public string ClearText { get; set; } = "clear"; readonly string uid = "d" + Guid.NewGuid().ToString("N")[..8]; string GroupName => string.IsNullOrEmpty(NameAttributeValue) ? uid : NameAttributeValue; int Items => Half ? Count * 2 : Count; string CssClassFull => Cx("rating", Half ? "rating-half" : null, SizeClass, CssClass); string ItemCss(int item) => Cx("mask", MaskClass, Half ? (item % 2 == 1 ? "mask-half-1" : "mask-half-2") : null, ItemClass); string ItemText(int item) => $"{(Half ? item / 2.0 : item).ToString(System.Globalization.CultureInfo.InvariantCulture)} {UnitText}"; string MaskClass => Mask switch { DRatingMask.Star2 => "mask-star-2", DRatingMask.Heart => "mask-heart", DRatingMask.Squircle => "mask-squircle", DRatingMask.Hexagon => "mask-hexagon", DRatingMask.Hexagon2 => "mask-hexagon-2", DRatingMask.Decagon => "mask-decagon", DRatingMask.Pentagon => "mask-pentagon", DRatingMask.Diamond => "mask-diamond", DRatingMask.Circle => "mask-circle", DRatingMask.Triangle => "mask-triangle", DRatingMask.Triangle2 => "mask-triangle-2", DRatingMask.Triangle3 => "mask-triangle-3", DRatingMask.Triangle4 => "mask-triangle-4", _ => "mask-star" }; string SizeClass => Size switch { DSize.Xs => "rating-xs", DSize.Sm => "rating-sm", DSize.Lg => "rating-lg", DSize.Xl => "rating-xl", _ => null }; }