Enhance the style of the checkboxes for multi-selection (#1244)

* Enhance the checkboxes' style for multi-selection by applying the selected style, if available, to the checkboxes currently selected.
This commit is contained in:
Davide Piccinini 2024-09-09 16:35:01 +02:00 committed by GitHub
parent f8a4b2271d
commit a55b80220d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 20 additions and 10 deletions

View File

@ -9,4 +9,15 @@ internal sealed class ListPromptConstants
public const string InstructionsMarkup = "[grey](Press <space> to select, <enter> to accept)[/]"; public const string InstructionsMarkup = "[grey](Press <space> to select, <enter> to accept)[/]";
public const string MoreChoicesMarkup = "[grey](Move up and down to reveal more choices)[/]"; public const string MoreChoicesMarkup = "[grey](Move up and down to reveal more choices)[/]";
public const string SearchPlaceholderMarkup = "[grey](Type to search)[/]"; public const string SearchPlaceholderMarkup = "[grey](Type to search)[/]";
public static string GetSelectedCheckbox(bool isGroup, SelectionMode mode, Style? style = null)
{
if (style != null)
{
return "[[" + $"[{style.ToMarkup()}]X[/]" + "]]";
}
return isGroup && mode == SelectionMode.Leaf
? GroupSelectedCheckbox : SelectedCheckbox;
}
} }

View File

@ -257,8 +257,7 @@ public sealed class MultiSelectionPrompt<T> : IPrompt<List<T>>, IListPromptStrat
} }
var checkbox = item.Node.IsSelected var checkbox = item.Node.IsSelected
? (item.Node.IsGroup && Mode == SelectionMode.Leaf ? ListPromptConstants.GetSelectedCheckbox(item.Node.IsGroup, Mode, HighlightStyle)
? ListPromptConstants.GroupSelectedCheckbox : ListPromptConstants.SelectedCheckbox)
: ListPromptConstants.Checkbox; : ListPromptConstants.Checkbox;
grid.AddRow(new Markup(indent + prompt + " " + checkbox + " " + text, style)); grid.AddRow(new Markup(indent + prompt + " " + checkbox + " " + text, style));

View File

@ -195,7 +195,7 @@ public sealed class Calendar : JustInTimeRenderable, IHasCulture, IHasTableBorde
while (currentDay <= daysInMonth) while (currentDay <= daysInMonth)
{ {
if (weekdays[currentDay - 1] == weekday) if (weekdays[currentDay - 1] == weekday)
{ {
var todayEvent = _calendarEvents.LastOrDefault(e => e.Month == Month && e.Day == currentDay); var todayEvent = _calendarEvents.LastOrDefault(e => e.Month == Month && e.Day == currentDay);
if (todayEvent != null) if (todayEvent != null)
{ {

View File

@ -28,34 +28,34 @@ public sealed class CalendarEvent
/// <summary> /// <summary>
/// Gets the custom highlight style of the calendar event. /// Gets the custom highlight style of the calendar event.
/// </summary> /// </summary>
public Style? CustomHighlightStyle { get; } public Style? CustomHighlightStyle { get; }
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="CalendarEvent"/> class. /// Initializes a new instance of the <see cref="CalendarEvent"/> class.
/// </summary> /// </summary>
/// <param name="year">The year of the calendar event.</param> /// <param name="year">The year of the calendar event.</param>
/// <param name="month">The month of the calendar event.</param> /// <param name="month">The month of the calendar event.</param>
/// <param name="day">The day of the calendar event.</param> /// <param name="day">The day of the calendar event.</param>
/// <param name="customHighlightStyle">The custom highlight style of the calendar event.</param> /// <param name="customHighlightStyle">The custom highlight style of the calendar event.</param>
public CalendarEvent(int year, int month, int day, Style? customHighlightStyle = null) public CalendarEvent(int year, int month, int day, Style? customHighlightStyle = null)
: this(string.Empty, year, month, day, customHighlightStyle) : this(string.Empty, year, month, day, customHighlightStyle)
{ {
} }
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="CalendarEvent"/> class. /// Initializes a new instance of the <see cref="CalendarEvent"/> class.
/// </summary> /// </summary>
/// <param name="description">The calendar event description.</param> /// <param name="description">The calendar event description.</param>
/// <param name="year">The year of the calendar event.</param> /// <param name="year">The year of the calendar event.</param>
/// <param name="month">The month of the calendar event.</param> /// <param name="month">The month of the calendar event.</param>
/// <param name="day">The day of the calendar event.</param> /// <param name="day">The day of the calendar event.</param>
/// <param name="customHighlightStyle">The custom highlight style of the calendar event.</param> /// <param name="customHighlightStyle">The custom highlight style of the calendar event.</param>
public CalendarEvent(string description, int year, int month, int day, Style? customHighlightStyle = null) public CalendarEvent(string description, int year, int month, int day, Style? customHighlightStyle = null)
{ {
Description = description ?? string.Empty; Description = description ?? string.Empty;
Year = year; Year = year;
Month = month; Month = month;
Day = day; Day = day;
CustomHighlightStyle = customHighlightStyle; CustomHighlightStyle = customHighlightStyle;
} }
} }