@@ -301,6 +301,7 @@ export class CalendarView extends BaseTopLevelView implements TopLevelView<Calen
301
301
scrollPosition : this . viewModel . getScrollPosition ( ) ,
302
302
onScrollPositionChange : ( newPosition : number ) => this . viewModel . setScrollPosition ( newPosition ) ,
303
303
onViewChanged : ( vnode ) => this . viewModel . setViewParameters ( vnode . dom as HTMLElement ) ,
304
+ currentViewType : this . currentViewType ,
304
305
} ) ,
305
306
floatingActionButton : this . renderFab . bind ( this ) ,
306
307
} )
@@ -334,6 +335,41 @@ export class CalendarView extends BaseTopLevelView implements TopLevelView<Calen
334
335
scrollPosition : this . viewModel . getScrollPosition ( ) ,
335
336
onScrollPositionChange : ( newPosition : number ) => this . viewModel . setScrollPosition ( newPosition ) ,
336
337
onViewChanged : ( vnode ) => this . viewModel . setViewParameters ( vnode . dom as HTMLElement ) ,
338
+ currentViewType : this . currentViewType ,
339
+ } ) ,
340
+ floatingActionButton : this . renderFab . bind ( this ) ,
341
+ } )
342
+
343
+ case CalendarViewType . THREE_DAY :
344
+ return m ( BackgroundColumnLayout , {
345
+ backgroundColor : theme . navigation_bg ,
346
+ desktopToolbar : ( ) => this . renderDesktopToolbar ( ) ,
347
+ mobileHeader : ( ) => this . renderMobileHeader ( attrs . header ) ,
348
+ columnLayout : m ( MultiDayCalendarView , {
349
+ temporaryEvents : this . viewModel . temporaryEvents ,
350
+ getEventsOnDays : this . viewModel . getEventsOnDaysToRender . bind ( this . viewModel ) ,
351
+ daysInPeriod : 3 ,
352
+ onEventClicked : ( event , domEvent ) => this . onEventSelected ( event , domEvent , this . htmlSanitizer ) ,
353
+ onEventKeyDown : this . handleEventKeyDown ( ) ,
354
+ onNewEvent : ( date ) => {
355
+ this . createNewEventDialog ( date )
356
+ } ,
357
+ selectedDate : this . viewModel . selectedDate ( ) ,
358
+ onDateSelected : ( date , viewType ) => {
359
+ this . viewModel . selectedDate ( date )
360
+ this . setUrl ( viewType ?? CalendarViewType . THREE_DAY , date )
361
+ } ,
362
+ startOfTheWeek : downcast ( locator . logins . getUserController ( ) . userSettingsGroupRoot . startOfTheWeek ) ,
363
+ groupColors : this . viewModel . calendarColors ,
364
+ onChangeViewPeriod : ( next ) => this . viewPeriod ( CalendarViewType . THREE_DAY , next ) ,
365
+ dragHandlerCallbacks : this . viewModel ,
366
+ isDaySelectorExpanded : this . viewModel . isDaySelectorExpanded ( ) ,
367
+ weekIndicator : calendarWeek ( this . viewModel . selectedDate ( ) , this . viewModel . weekStart ) ,
368
+ selectedTime : this . viewModel . selectedTime ,
369
+ scrollPosition : this . viewModel . getScrollPosition ( ) ,
370
+ onScrollPositionChange : ( newPosition : number ) => this . viewModel . setScrollPosition ( newPosition ) ,
371
+ onViewChanged : ( vnode ) => this . viewModel . setViewParameters ( vnode . dom as HTMLElement ) ,
372
+ currentViewType : this . currentViewType ,
337
373
} ) ,
338
374
floatingActionButton : this . renderFab . bind ( this ) ,
339
375
} )
@@ -472,11 +508,12 @@ export class CalendarView extends BaseTopLevelView implements TopLevelView<Calen
472
508
}
473
509
474
510
private renderMobileHeader ( header : AppHeaderAttrs ) {
511
+ const isExpandable = ! styles . isDesktopLayout ( ) && this . currentViewType !== CalendarViewType . MONTH && this . currentViewType !== CalendarViewType . THREE_DAY
475
512
return m ( CalendarMobileHeader , {
476
513
...header ,
477
514
viewType : this . currentViewType ,
478
515
viewSlider : this . viewSlider ,
479
- showExpandIcon : ! styles . isDesktopLayout ( ) && this . currentViewType !== CalendarViewType . MONTH ,
516
+ showExpandIcon : isExpandable ,
480
517
isDaySelectorExpanded : this . viewModel . isDaySelectorExpanded ( ) ,
481
518
navConfiguration : calendarNavConfiguration (
482
519
this . currentViewType ,
@@ -498,7 +535,7 @@ export class CalendarView extends BaseTopLevelView implements TopLevelView<Calen
498
535
return
499
536
}
500
537
501
- if ( ! styles . isDesktopLayout ( ) && this . currentViewType !== CalendarViewType . MONTH ) {
538
+ if ( isExpandable ) {
502
539
if ( this . viewModel . isDaySelectorExpanded ( ) ) {
503
540
this . viewModel . setDaySelectorExpanded ( false )
504
541
}
@@ -543,6 +580,11 @@ export class CalendarView extends BaseTopLevelView implements TopLevelView<Calen
543
580
} ,
544
581
{
545
582
key : Keys . THREE ,
583
+ exec : ( ) => this . setUrl ( CalendarViewType . THREE_DAY , this . viewModel . selectedDate ( ) ) ,
584
+ help : "switchAgendaView_action" ,
585
+ } ,
586
+ {
587
+ key : Keys . FOUR ,
546
588
exec : ( ) => this . setUrl ( CalendarViewType . AGENDA , this . viewModel . selectedDate ( ) ) ,
547
589
help : "switchAgendaView_action" ,
548
590
} ,
@@ -653,7 +695,12 @@ export class CalendarView extends BaseTopLevelView implements TopLevelView<Calen
653
695
}
654
696
unit = "week"
655
697
break
656
-
698
+ case CalendarViewType . THREE_DAY :
699
+ duration = {
700
+ day : 3 ,
701
+ }
702
+ unit = "day"
703
+ break
657
704
case CalendarViewType . DAY :
658
705
duration = {
659
706
day : 1 ,
@@ -1096,7 +1143,6 @@ export class CalendarView extends BaseTopLevelView implements TopLevelView<Calen
1096
1143
this . setUrl ( this . currentViewType , this . viewModel . selectedDate ( ) , true )
1097
1144
} else {
1098
1145
this . currentViewType = CalendarViewTypeByValue [ args . view as CalendarViewType ] ? args . view : CalendarViewType . MONTH
1099
-
1100
1146
const urlDateParam = args . date
1101
1147
1102
1148
if ( urlDateParam ) {
0 commit comments