@@ -20,7 +20,7 @@ private DateTime StartDate
2020 get
2121 {
2222 var d = GetSafeDayDateTime ( CurrentDate , 1 - CurrentDate . Day ) ;
23- d = GetSafeDayDateTime ( d , 0 - ( int ) d . DayOfWeek ) ;
23+ d = GetSafeDayDateTime ( d , ( int ) FirstDayOfWeek - ( int ) d . DayOfWeek ) ;
2424 return d ;
2525 }
2626 }
@@ -388,6 +388,12 @@ public bool AllowNull
388388 [ Parameter ]
389389 public bool EnableDisabledDaysCache { get ; set ; } = true ;
390390
391+ /// <summary>
392+ /// 获得/设置 星期第一天 默认 <see cref="DayOfWeek.Sunday"/>
393+ /// </summary>
394+ [ Parameter ]
395+ public DayOfWeek FirstDayOfWeek { get ; set ; } = DayOfWeek . Sunday ;
396+
391397 [ Inject ]
392398 [ NotNull ]
393399 private ICalendarFestivals ? CalendarFestivals { get ; set ; }
@@ -494,7 +500,7 @@ protected override void OnParametersSet()
494500 YearPeriodText ??= Localizer [ nameof ( YearPeriodText ) ] ;
495501 MonthLists = [ .. Localizer [ nameof ( MonthLists ) ] . Value . Split ( ',' ) ] ;
496502 Months = [ .. Localizer [ nameof ( Months ) ] . Value . Split ( ',' ) ] ;
497- WeekLists = [ .. Localizer [ nameof ( WeekLists ) ] . Value . Split ( ',' ) ] ;
503+ WeekLists = GetWeekList ( ) ;
498504
499505 Today ??= Localizer [ nameof ( Today ) ] ;
500506 Yesterday ??= Localizer [ nameof ( Yesterday ) ] ;
@@ -513,7 +519,9 @@ protected override async Task OnParametersSetAsync()
513519 {
514520 await base . OnParametersSetAsync ( ) ;
515521
522+ _render = false ;
516523 await UpdateDisabledDaysCache ( true ) ;
524+ _render = true ;
517525 }
518526
519527 private bool _render = true ;
@@ -523,6 +531,15 @@ protected override async Task OnParametersSetAsync()
523531 /// </summary>
524532 protected override bool ShouldRender ( ) => _render ;
525533
534+ private List < string > GetWeekList ( )
535+ {
536+ var list = Localizer [ nameof ( WeekLists ) ] . Value . Split ( ',' , StringSplitOptions . RemoveEmptyEntries ) . ToList ( ) ;
537+
538+ // 调整顺序
539+ var firstDayIndex = ( int ) FirstDayOfWeek ;
540+ return list . Skip ( firstDayIndex ) . Concat ( list . Take ( firstDayIndex ) ) . ToList ( ) ;
541+ }
542+
526543 private async Task UpdateDisabledDaysCache ( bool force )
527544 {
528545 if ( OnGetDisabledDaysCallback != null )
0 commit comments