Skip to content

Commit 1fa4837

Browse files
Merge branch 'main' into paulandersons/perf-chart-control-optimizations
2 parents 8581a73 + 75ae4e7 commit 1fa4837

73 files changed

Lines changed: 2087 additions & 366 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

maui/src/Accordion/AccordionItemView.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,21 @@ internal bool CanCollapseItemOnSingleAndMultipleExpandMode()
7171
return false;
7272
}
7373

74-
var expandedItems = Accordion.Items.ToList().FindAll(x => x._accordionItemView != null && x._accordionItemView.IsExpanded);
74+
var expandedCount = 0;
75+
foreach (var item in Accordion.Items)
76+
{
77+
if (item._accordionItemView != null && item._accordionItemView.IsExpanded)
78+
{
79+
expandedCount++;
80+
if (expandedCount > 1)
81+
{
82+
break;
83+
}
84+
}
85+
}
86+
7587
return (Accordion.ExpandMode == AccordionExpandMode.Single ||
76-
Accordion.ExpandMode == AccordionExpandMode.Multiple) && expandedItems.Count == 1;
88+
Accordion.ExpandMode == AccordionExpandMode.Multiple) && expandedCount == 1;
7789
}
7890

7991
#endregion

maui/src/Accordion/SfAccordion.cs

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -540,8 +540,22 @@ internal void UpdateIsExpandValueBasedOnIndex(int index, bool isExpanded)
540540
/// </summary>
541541
internal void UpdateSelection()
542542
{
543-
var selectedItems = Items.ToList().FindAll(x => x._accordionItemView != null && x._accordionItemView.IsSelected);
544-
if (selectedItems.Count == 1 && Items[selectedItems[0]._itemIndex] is AccordionItem items && items._accordionItemView is AccordionItemView accordionItem)
543+
AccordionItem? selectedItem = null;
544+
int selectedCount = 0;
545+
foreach (var item in Items)
546+
{
547+
if (item._accordionItemView != null && item._accordionItemView.IsSelected)
548+
{
549+
selectedItem ??= item;
550+
selectedCount++;
551+
if (selectedCount > 1)
552+
{
553+
break;
554+
}
555+
}
556+
}
557+
558+
if (selectedCount == 1 && selectedItem != null && Items[selectedItem._itemIndex] is AccordionItem accordionItemEntry && accordionItemEntry._accordionItemView is AccordionItemView accordionItem)
545559
{
546560
accordionItem.IsSelected = false;
547561
}
@@ -560,7 +574,15 @@ internal void UpdateAccordionItemsBasedOnExpandModes(bool isExpandModeChanged)
560574
return;
561575
}
562576

563-
var expandedItems = Items.ToList().FindAll(x => x._accordionItemView != null && x._accordionItemView.IsExpanded);
577+
var expandedItems = new List<AccordionItem>();
578+
foreach (var item in Items)
579+
{
580+
if (item._accordionItemView != null && item._accordionItemView.IsExpanded)
581+
{
582+
expandedItems.Add(item);
583+
}
584+
}
585+
564586
switch (ExpandMode)
565587
{
566588
case AccordionExpandMode.Single:
@@ -1575,7 +1597,15 @@ void IKeyboardListener.OnPreviewKeyDown(Syncfusion.Maui.Toolkit.Internals.KeyEve
15751597
/// <param name="e">The <see cref="KeyEventArgs"/> containing the event data for the key that was pressed.</param>
15761598
void IKeyboardListener.OnKeyDown(KeyEventArgs e)
15771599
{
1578-
var selectedItem = Items.ToList().FirstOrDefault(x => x._accordionItemView != null && x._accordionItemView.IsSelected);
1600+
AccordionItem? selectedItem = null;
1601+
foreach (var item in Items)
1602+
{
1603+
if (item._accordionItemView != null && item._accordionItemView.IsSelected)
1604+
{
1605+
selectedItem = item;
1606+
break;
1607+
}
1608+
}
15791609
if (e.Key == KeyboardKey.Down || (e.Key == KeyboardKey.Tab && !e.IsShiftKeyPressed))
15801610
{
15811611
OnDownKeyPressed(selectedItem);

maui/src/BottomSheet/SfBottomSheet.cs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1574,14 +1574,10 @@ void UpdateContentAccessibility(VisualElement element, bool exclude)
15741574
/// <param name="exclude">True to exclude from accessibility, false to include.</param>
15751575
void UpdateSingleElement(VisualElement visualChild,bool exclude)
15761576
{
1577-
if (!_originalAccessibilityProperties.ContainsKey(visualChild))
1578-
{
1579-
// Store original values only if not already stored
1580-
_originalAccessibilityProperties[visualChild] = (
1581-
SemanticProperties.GetDescription(visualChild),
1582-
SemanticProperties.GetHint(visualChild)
1583-
);
1584-
}
1577+
_originalAccessibilityProperties.TryAdd(visualChild, (
1578+
SemanticProperties.GetDescription(visualChild),
1579+
SemanticProperties.GetHint(visualChild)
1580+
));
15851581

15861582
if (exclude)
15871583
{
@@ -1619,10 +1615,9 @@ void UpdateSingleElement(VisualElement visualChild,bool exclude)
16191615
var nativeContent = Content?.Handler?.PlatformView as Android.Views.View;
16201616
if (nativeContent is Android.Views.View rootView)
16211617
{
1622-
if (Content != null && !_androidContentDescriptions.ContainsKey(Content))
1618+
if (Content != null)
16231619
{
1624-
_androidContentDescriptions[Content] =
1625-
rootView.ContentDescription;
1620+
_androidContentDescriptions.TryAdd(Content, rootView.ContentDescription);
16261621
}
16271622

16281623
if (exclude) // when you want to hide content

maui/src/Calendar/Helper/CalendarViewHelper.cs

Lines changed: 64 additions & 41 deletions
Large diffs are not rendered by default.

maui/src/Calendar/LoopingPannel/CustomSnapManager.cs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ internal void UpdateEnablePastDates()
308308
DateTime todayDate = date != null ? date.Value : DateTime.Now.Date;
309309
int numberOfWeeks = _calendarInfo.MonthView.GetNumberOfWeeks();
310310
bool isMonthView = _calendarInfo.View == CalendarView.Month && numberOfWeeks == 6;
311-
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier.ToString());
311+
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier);
312312
DateTime minDate = cultureCalendar.MinSupportedDateTime;
313313
int minYear = cultureCalendar.GetYear(minDate);
314314
int minMonth = cultureCalendar.GetMonth(minDate);
@@ -346,7 +346,7 @@ internal void UpdateTodayCellStyle()
346346
DateTime todayDate = date != null ? date.Value : DateTime.Now.Date;
347347
int numberOfWeeks = _calendarInfo.MonthView.GetNumberOfWeeks();
348348
bool isMonthView = _calendarInfo.View == CalendarView.Month && numberOfWeeks == 6;
349-
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier.ToString());
349+
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier);
350350
DateTime minDate = cultureCalendar.MinSupportedDateTime;
351351
int minYear = cultureCalendar.GetYear(minDate);
352352
int minMonth = cultureCalendar.GetMonth(minDate);
@@ -410,7 +410,7 @@ internal void UpdateInBetweenRangeStyle()
410410

411411
int numberOfWeeks = _calendarInfo.MonthView.GetNumberOfWeeks();
412412
bool isMonthView = _calendarInfo.View == CalendarView.Month && numberOfWeeks == 6;
413-
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier.ToString());
413+
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier);
414414
DateTime minDate = cultureCalendar.MinSupportedDateTime;
415415
int minYear = cultureCalendar.GetYear(minDate);
416416
int minMonth = cultureCalendar.GetMonth(minDate);
@@ -462,7 +462,7 @@ internal void UpdateSelectedCellStyle()
462462

463463
int numberOfWeeks = _calendarInfo.MonthView.GetNumberOfWeeks();
464464
bool isMonthView = _calendarInfo.View == CalendarView.Month && numberOfWeeks == 6;
465-
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier.ToString());
465+
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier);
466466
DateTime minDate = cultureCalendar.MinSupportedDateTime;
467467
int minYear = cultureCalendar.GetYear(minDate);
468468
int minMonth = cultureCalendar.GetMonth(minDate);
@@ -637,7 +637,7 @@ internal void UpdateMinMaxDateChange(DateTime currentMinMaxDate, DateTime oldMin
637637

638638
int numberOfWeeks = _calendarInfo.MonthView.GetNumberOfWeeks();
639639
bool isMonthView = _calendarInfo.View == CalendarView.Month && numberOfWeeks == 6;
640-
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier.ToString());
640+
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier);
641641
DateTime minDate = cultureCalendar.MinSupportedDateTime;
642642
int minYear = cultureCalendar.GetYear(minDate);
643643
int minMonth = cultureCalendar.GetMonth(minDate);
@@ -1014,8 +1014,15 @@ void AddChildren()
10141014
for (int i = 0; i < ChildCount; i++)
10151015
{
10161016
List<DateTime> visibleDates = GetVisibleDatesForView(i);
1017-
List<DateTime> disableDates = _disabledDatesDictionary.ContainsKey(visibleDates) ? _disabledDatesDictionary[visibleDates] : new List<DateTime>();
1018-
List<CalendarIconDetails> specialDates = _specialDatesDictionary.ContainsKey(visibleDates) ? _specialDatesDictionary[visibleDates] : new List<CalendarIconDetails>();
1017+
if (!_disabledDatesDictionary.TryGetValue(visibleDates, out List<DateTime>? disableDates))
1018+
{
1019+
disableDates = new List<DateTime>();
1020+
}
1021+
1022+
if (!_specialDatesDictionary.TryGetValue(visibleDates, out List<CalendarIconDetails>? specialDates))
1023+
{
1024+
specialDates = new List<CalendarIconDetails>();
1025+
}
10191026
if (_calendarInfo.View == CalendarView.Month)
10201027
{
10211028
MonthViewLayout monthViewLayout = new MonthViewLayout(_calendarInfo, visibleDates, _calendarInfo.SelectedDate, disableDates, specialDates, i == _currentChildIndex);
@@ -1037,7 +1044,7 @@ void AddChildren()
10371044
/// <returns>The visible dates collection based on visible date.</returns>
10381045
List<DateTime> GetVisibleDates(DateTime date)
10391046
{
1040-
Globalization.Calendar calendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier.ToString());
1047+
Globalization.Calendar calendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier);
10411048
_startYearDateTime = calendar.MinSupportedDateTime.Date;
10421049
_endYearDateTime = calendar.MaxSupportedDateTime.Date;
10431050
int startRangeYear = calendar.GetYear(_startYearDateTime);
@@ -1239,7 +1246,7 @@ DateTime GetFirstDayOfWeek(int visibleDatesCount, DateTime date, Globalization.C
12391246
/// <returns>The previous view visible start date.</returns>
12401247
DateTime GetPreviousViewStartDate(DateTime date)
12411248
{
1242-
Globalization.Calendar calendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier.ToString());
1249+
Globalization.Calendar calendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier);
12431250
_startYearDateTime = calendar.MinSupportedDateTime.Date;
12441251
_endYearDateTime = calendar.MaxSupportedDateTime.Date;
12451252
int startRangeYear = calendar.GetYear(_startYearDateTime);
@@ -1300,7 +1307,7 @@ DateTime GetPreviousViewStartDate(DateTime date)
13001307
/// <returns>The next view visible start date.</returns>
13011308
DateTime GetNextViewStartDate(DateTime date)
13021309
{
1303-
Globalization.Calendar calendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier.ToString());
1310+
Globalization.Calendar calendar = CalendarViewHelper.GetCalendar(_calendarInfo.Identifier);
13041311
_startYearDateTime = calendar.MinSupportedDateTime.Date;
13051312
_endYearDateTime = calendar.MaxSupportedDateTime.Date;
13061313
int endRangeYear = calendar.GetYear(_endYearDateTime);

maui/src/Calendar/Model/EventArgs/ViewChangedEventArgs.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,23 @@ namespace Syncfusion.Maui.Toolkit.Calendar
77
/// </summary>
88
public class CalendarViewChangedEventArgs : EventArgs
99
{
10+
#region Fields
11+
12+
static readonly ReadOnlyCollection<DateTime> s_emptyDates = new List<DateTime>(0).AsReadOnly();
13+
14+
#endregion
15+
1016
#region Properties
1117

1218
/// <summary>
1319
/// Gets the visible dates that visible on current view.
1420
/// </summary>
15-
public ReadOnlyCollection<DateTime> NewVisibleDates { get; internal set; } = new List<DateTime>().AsReadOnly();
21+
public ReadOnlyCollection<DateTime> NewVisibleDates { get; internal set; } = s_emptyDates;
1622

1723
/// <summary>
1824
/// Gets the visible dates that visible on previous view.
1925
/// </summary>
20-
public ReadOnlyCollection<DateTime> OldVisibleDates { get; internal set; } = new List<DateTime>().AsReadOnly();
26+
public ReadOnlyCollection<DateTime> OldVisibleDates { get; internal set; } = s_emptyDates;
2127

2228
/// <summary>
2329
/// Gets the new calendar view.

maui/src/Calendar/SfCalendar.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -981,7 +981,7 @@ void NavigateToAdjacentDates(CalendarTappedEventArgs calendarTappedEventArgs)
981981
/// <returns>The current culture.</returns>
982982
DateTime ConvertToCurrentCulture(DateTime date, bool adjustDay = false)
983983
{
984-
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(Identifier.ToString());
984+
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(Identifier);
985985
int day = 0;
986986
if (adjustDay)
987987
{
@@ -1148,7 +1148,7 @@ void UpdateDisplayDateOnNavigation()
11481148
int numberOfWeeks = MonthView.GetNumberOfWeeks();
11491149
if (View == CalendarView.Month && numberOfWeeks == 6)
11501150
{
1151-
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(Identifier.ToString());
1151+
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(Identifier);
11521152
DateTime minDate = cultureCalendar.MinSupportedDateTime;
11531153
int minYear = cultureCalendar.GetYear(minDate);
11541154
int minMonth = cultureCalendar.GetMonth(minDate);

maui/src/Calendar/Views/CalendarView/MonthView/MonthHoverView.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ void DrawRangeSelectionHover(ICanvas canvas, float monthCellWidth, float monthCe
328328
xPosition += startIndex * cellWidthOffset;
329329
}
330330

331-
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(_calendarViewInfo.Identifier.ToString());
331+
Globalization.Calendar cultureCalendar = CalendarViewHelper.GetCalendar(_calendarViewInfo.Identifier);
332332
int currentMonthYear = cultureCalendar.GetMonth(currentMonth);
333333
for (int i = 0; i < visibleDateCount; i++)
334334
{

0 commit comments

Comments
 (0)