diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=false-horizontal (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=false-horizontal (fluent.blue.light).png index 033134d722a4..8c9f7e826428 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=false-horizontal (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=false-horizontal (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=false-horizontal-rtl (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=false-horizontal-rtl (fluent.blue.light).png index 55be87f3bf8a..43a1c6144a6d 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=false-horizontal-rtl (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=false-horizontal-rtl (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=true-horizontal (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=true-horizontal (fluent.blue.light).png index 033134d722a4..8c9f7e826428 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=true-horizontal (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=true-horizontal (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=true-horizontal-rtl (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=true-horizontal-rtl (fluent.blue.light).png index 55be87f3bf8a..43a1c6144a6d 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=true-horizontal-rtl (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineDay-crossScrolling=true-horizontal-rtl (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=false-horizontal (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=false-horizontal (fluent.blue.light).png index 29b551888f0c..cb6d4fc67e66 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=false-horizontal (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=false-horizontal (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=false-horizontal-rtl (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=false-horizontal-rtl (fluent.blue.light).png index a896098fff03..bacd77a125f2 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=false-horizontal-rtl (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=false-horizontal-rtl (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=true-horizontal (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=true-horizontal (fluent.blue.light).png index 29b551888f0c..cb6d4fc67e66 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=true-horizontal (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=true-horizontal (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=true-horizontal-rtl (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=true-horizontal-rtl (fluent.blue.light).png index a896098fff03..bacd77a125f2 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=true-horizontal-rtl (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineMonth-crossScrolling=true-horizontal-rtl (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=false-horizontal (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=false-horizontal (fluent.blue.light).png index fd5fca2ba16f..249986c7204e 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=false-horizontal (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=false-horizontal (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=false-horizontal-rtl (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=false-horizontal-rtl (fluent.blue.light).png index 74249e40f4dc..6bec8700cdc7 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=false-horizontal-rtl (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=false-horizontal-rtl (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=true-horizontal (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=true-horizontal (fluent.blue.light).png index fd5fca2ba16f..249986c7204e 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=true-horizontal (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=true-horizontal (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=true-horizontal-rtl (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=true-horizontal-rtl (fluent.blue.light).png index 74249e40f4dc..6bec8700cdc7 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=true-horizontal-rtl (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=timelineWeek-crossScrolling=true-horizontal-rtl (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineMonth-cross-scrolling=false (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineMonth-cross-scrolling=false (fluent.blue.light).png index 2ef6e0ceb7be..5d6d57590dbb 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineMonth-cross-scrolling=false (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineMonth-cross-scrolling=false (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineMonth-cross-scrolling=true (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineMonth-cross-scrolling=true (fluent.blue.light).png index 2ef6e0ceb7be..5d6d57590dbb 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineMonth-cross-scrolling=true (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineMonth-cross-scrolling=true (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineWeek-cross-scrolling=false (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineWeek-cross-scrolling=false (fluent.blue.light).png index a5c70c365201..1807b7e3fee2 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineWeek-cross-scrolling=false (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineWeek-cross-scrolling=false (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineWeek-cross-scrolling=true (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineWeek-cross-scrolling=true (fluent.blue.light).png index a5c70c365201..1807b7e3fee2 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineWeek-cross-scrolling=true (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/customization/etalons/custom-header-panel-in-timelineWeek-cross-scrolling=true (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineDay-orientation=horizontal) (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineDay-orientation=horizontal) (fluent.blue.light).png index a06f59d7a3a9..19274f25e14e 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineDay-orientation=horizontal) (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineDay-orientation=horizontal) (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineMonth-orientation=horizontal) (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineMonth-orientation=horizontal) (fluent.blue.light).png index 61eedf3ffcbc..d6cb6339b67f 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineMonth-orientation=horizontal) (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineMonth-orientation=horizontal) (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineWeek-orientation=horizontal) (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineWeek-orientation=horizontal) (fluent.blue.light).png index 163b7bad1385..da161692f96a 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineWeek-orientation=horizontal) (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineWeek-orientation=horizontal) (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineWorkWeek-orientation=horizontal) (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineWorkWeek-orientation=horizontal) (fluent.blue.light).png index a89a8f63643f..ef328250f515 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineWorkWeek-orientation=horizontal) (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/resources/groups/etalons/groups(view=timelineWorkWeek-orientation=horizontal) (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineMonth-crossScrolling=false-horizontal-grouping (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineMonth-crossScrolling=false-horizontal-grouping (fluent.blue.light).png index b70879056187..013a42f9c170 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineMonth-crossScrolling=false-horizontal-grouping (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineMonth-crossScrolling=false-horizontal-grouping (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineMonth-crossScrolling=true-horizontal-grouping (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineMonth-crossScrolling=true-horizontal-grouping (fluent.blue.light).png index b70879056187..013a42f9c170 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineMonth-crossScrolling=true-horizontal-grouping (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineMonth-crossScrolling=true-horizontal-grouping (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineWeek-crossScrolling=false-horizontal-grouping (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineWeek-crossScrolling=false-horizontal-grouping (fluent.blue.light).png index 9e2e44ada622..8d688e8b0d5a 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineWeek-crossScrolling=false-horizontal-grouping (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineWeek-crossScrolling=false-horizontal-grouping (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineWeek-crossScrolling=true-horizontal-grouping (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineWeek-crossScrolling=true-horizontal-grouping (fluent.blue.light).png index 9e2e44ada622..8d688e8b0d5a 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineWeek-crossScrolling=true-horizontal-grouping (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/layout/timeIndication/etalons/shader-in-timelineWeek-crossScrolling=true-horizontal-grouping (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-after-scroll-horizontal-grouping (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-after-scroll-horizontal-grouping (fluent.blue.light).png index d1b77a7b0b11..a1a63a529c11 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-after-scroll-horizontal-grouping (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-after-scroll-horizontal-grouping (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-after-scroll-horizontal-grouping-scaling (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-after-scroll-horizontal-grouping-scaling (fluent.blue.light).png index 60c3d8c0f839..53c226b5395b 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-after-scroll-horizontal-grouping-scaling (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-after-scroll-horizontal-grouping-scaling (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-before-scroll-horizontal-grouping (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-before-scroll-horizontal-grouping (fluent.blue.light).png index d34c4905b9b0..21a9d1b07520 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-before-scroll-horizontal-grouping (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-before-scroll-horizontal-grouping (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-before-scroll-horizontal-grouping-scaling (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-before-scroll-horizontal-grouping-scaling (fluent.blue.light).png index 444c57c01547..040f83af189d 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-before-scroll-horizontal-grouping-scaling (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineDay-before-scroll-horizontal-grouping-scaling (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-after-scroll-horizontal-grouping (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-after-scroll-horizontal-grouping (fluent.blue.light).png index 6fbe33eabadb..89e726dc742d 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-after-scroll-horizontal-grouping (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-after-scroll-horizontal-grouping (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-after-scroll-horizontal-grouping-scaling (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-after-scroll-horizontal-grouping-scaling (fluent.blue.light).png index 989b5a51b087..74308b9c59d6 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-after-scroll-horizontal-grouping-scaling (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-after-scroll-horizontal-grouping-scaling (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-before-scroll-horizontal-grouping (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-before-scroll-horizontal-grouping (fluent.blue.light).png index 38190da53069..26ad7a069c52 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-before-scroll-horizontal-grouping (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-before-scroll-horizontal-grouping (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-before-scroll-horizontal-grouping-scaling (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-before-scroll-horizontal-grouping-scaling (fluent.blue.light).png index 87779e3166e1..f89630803079 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-before-scroll-horizontal-grouping-scaling (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineMonth-before-scroll-horizontal-grouping-scaling (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-after-scroll-horizontal-grouping (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-after-scroll-horizontal-grouping (fluent.blue.light).png index cc90043e32f3..2f8e8a438260 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-after-scroll-horizontal-grouping (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-after-scroll-horizontal-grouping (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-after-scroll-horizontal-grouping-scaling (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-after-scroll-horizontal-grouping-scaling (fluent.blue.light).png index 845c6124ddeb..63d3e34389c0 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-after-scroll-horizontal-grouping-scaling (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-after-scroll-horizontal-grouping-scaling (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-before-scroll-horizontal-grouping (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-before-scroll-horizontal-grouping (fluent.blue.light).png index e80bbf70302e..d87eacb0345a 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-before-scroll-horizontal-grouping (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-before-scroll-horizontal-grouping (fluent.blue.light).png differ diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-before-scroll-horizontal-grouping-scaling (fluent.blue.light).png b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-before-scroll-horizontal-grouping-scaling (fluent.blue.light).png index cfd4dc1f07e5..76ae47201df6 100644 Binary files a/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-before-scroll-horizontal-grouping-scaling (fluent.blue.light).png and b/e2e/testcafe-devextreme/tests/scheduler/common/virtualScrolling/etalons/virtual-scrolling-timelineWeek-before-scroll-horizontal-grouping-scaling (fluent.blue.light).png differ diff --git a/packages/devextreme-scss/scss/widgets/base/scheduler/views/_index.scss b/packages/devextreme-scss/scss/widgets/base/scheduler/views/_index.scss index a8250d8f5fef..bcf52ab19121 100644 --- a/packages/devextreme-scss/scss/widgets/base/scheduler/views/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/scheduler/views/_index.scss @@ -93,31 +93,6 @@ $scheduler-month-date-text-padding: 6px; } } -.dx-scheduler-group-column-count-one { - .dx-scheduler-header-panel-empty-cell { - width: $scheduler-left-column-width; - } -} - -.dx-scheduler-group-column-count-two { - .dx-scheduler-header-panel-empty-cell { - width: 1.5 * $scheduler-left-column-width; - } - - .dx-scheduler-group-flex-container .dx-scheduler-group-header { - width: 0.75 * $scheduler-left-column-width; - } -} - -.dx-scheduler-group-column-count-three { - .dx-scheduler-header-panel-empty-cell { - width: 2 * $scheduler-left-column-width; - } - - .dx-scheduler-group-flex-container .dx-scheduler-group-header { - width: math.div($scheduler-left-column-width * 2, 3); - } -} .dx-scheduler-work-space-week, .dx-scheduler-work-space-work-week, @@ -126,18 +101,6 @@ $scheduler-month-date-text-padding: 6px; width: $scheduler-left-column-width; } - &.dx-scheduler-group-column-count-one .dx-scheduler-header-panel-empty-cell { - width: 2 * $scheduler-left-column-width; - } - - &.dx-scheduler-group-column-count-two .dx-scheduler-header-panel-empty-cell { - width: 2.5 * $scheduler-left-column-width; - } - - &.dx-scheduler-group-column-count-three .dx-scheduler-header-panel-empty-cell { - width: 3 * $scheduler-left-column-width; - } - &.dx-scheduler-work-space-odd-cells { .dx-scheduler-date-table-row:nth-child(odd) .dx-scheduler-date-table-cell { border-top: $scheduler-accent-border; @@ -359,12 +322,16 @@ $scheduler-month-date-text-padding: 6px; border: none; border-top: $scheduler-base-border; border-top-color: $scheduler-base-border-color; + border-right: $scheduler-base-border; + border-right-color: $scheduler-base-border-color; + + .dx-scheduler-small & { + width: $scheduler-left-column-width * $scheduler-small-size-factor; + } &.dx-scheduler-group-header-leaf { flex: 1 1 auto; width: auto; - border-right: $scheduler-base-border; - border-right-color: $scheduler-base-border-color; } } @@ -373,6 +340,11 @@ $scheduler-month-date-text-padding: 6px; flex-direction: column; min-height: 0; width: auto; + + .dx-scheduler-group-row .dx-scheduler-group-header { + border-right: $scheduler-base-border; + border-right-color: $scheduler-base-border-color; + } } } @@ -380,6 +352,11 @@ $scheduler-month-date-text-padding: 6px; flex: 0 0 auto; width: $scheduler-left-column-width; min-width: $scheduler-left-column-width; + + .dx-scheduler-small & { + width: $scheduler-left-column-width * $scheduler-small-size-factor; + min-width: $scheduler-left-column-width * $scheduler-small-size-factor; + } } } @@ -505,6 +482,15 @@ $scheduler-month-date-text-padding: 6px; table-layout: fixed; width: 100%; font-size: $scheduler-workspace-info-font-size; + + // groupByDate: date header row is above groups — separator on top of group headers + .dx-scheduler-group-row:not(:first-child) { + .dx-scheduler-group-header { + border-top: $scheduler-base-border; + border-top-color: $scheduler-base-border-color; + border-bottom: none; + } + } } .dx-scheduler-work-space { // stylelint-disable-line no-duplicate-selectors @@ -855,6 +841,14 @@ $scheduler-month-date-text-padding: 6px; } } + .dx-scheduler-group-flex-container-hierarchical { + .dx-scheduler-group-header { + border-right: none; + border-left: $scheduler-base-border; + border-left-color: $scheduler-base-border-color; + } + } + .dx-scheduler-header-panel { left: 0; right: inherit; @@ -915,11 +909,8 @@ $scheduler-month-date-text-padding: 6px; padding: 0 5px 0 10px; } - &.dx-scheduler-group-column-count-two, - &.dx-scheduler-group-column-count-three { - .dx-scheduler-group-header:last-child { - text-align: right; - } + .dx-scheduler-group-row .dx-scheduler-group-header:last-child:not(:only-child) { + text-align: right; } } } @@ -948,17 +939,5 @@ $scheduler-month-date-text-padding: 6px; .dx-scheduler-header-panel-empty-cell { width: $scheduler-small-size-factor * $scheduler-left-column-width; } - - &.dx-scheduler-group-column-count-one .dx-scheduler-header-panel-empty-cell { - width: (1 + $scheduler-small-size-factor) * $scheduler-left-column-width; - } - - &.dx-scheduler-group-column-count-two .dx-scheduler-header-panel-empty-cell { - width: (1.5 + $scheduler-small-size-factor) * $scheduler-left-column-width; - } - - &.dx-scheduler-group-column-count-three .dx-scheduler-header-panel-empty-cell { - width: (2 + $scheduler-small-size-factor) * $scheduler-left-column-width; - } } } diff --git a/packages/devextreme-scss/scss/widgets/base/scheduler/views/timelines/_index.scss b/packages/devextreme-scss/scss/widgets/base/scheduler/views/timelines/_index.scss index d5226a597875..f6d890325649 100644 --- a/packages/devextreme-scss/scss/widgets/base/scheduler/views/timelines/_index.scss +++ b/packages/devextreme-scss/scss/widgets/base/scheduler/views/timelines/_index.scss @@ -16,26 +16,6 @@ $scheduler-timeline-min-height: 100px; border-bottom: none; } - &.dx-scheduler-group-column-count-two { - .dx-scheduler-header-panel-empty-cell { - width: 160px; - } - - .dx-scheduler-group-flex-container .dx-scheduler-group-header { - width: 80px; - } - } - - &.dx-scheduler-group-column-count-three { - .dx-scheduler-header-panel-empty-cell { - width: 240px; - } - - .dx-scheduler-group-flex-container .dx-scheduler-group-header { - width: 80px; - } - } - // This is a WA for existing behaviour. Refactor with setTableSizes .dx-scheduler-date-table-scrollable-content, .dx-scheduler-date-table-container { @@ -194,16 +174,29 @@ $scheduler-timeline-min-height: 100px; display: block; } - .dx-scheduler-group-row .dx-scheduler-group-header { - border: none; - border-top: $scheduler-base-border; - border-top-color: $scheduler-base-border-color; + .dx-scheduler-group-table > .dx-scheduler-group-flex-container:not(.dx-scheduler-group-flex-container-hierarchical) { + .dx-scheduler-group-row { + @include flex-container(column, nowrap); + + flex: 0 0 auto; + min-width: 0; + + .dx-scheduler-group-header { + border: none; + border-top: $scheduler-base-border; + border-top-color: $scheduler-base-border-color; + border-right: $scheduler-base-border; + border-right-color: $scheduler-base-border-color; + } + } } &.dx-scheduler-work-space-group-by-date { - .dx-scheduler-group-row .dx-scheduler-group-header { - border-right: $scheduler-base-border; - border-right-color: $scheduler-base-border-color; + .dx-scheduler-group-table > .dx-scheduler-group-flex-container:not(.dx-scheduler-group-flex-container-hierarchical) { + .dx-scheduler-group-row .dx-scheduler-group-header { + border-right: $scheduler-base-border; + border-right-color: $scheduler-base-border-color; + } } .dx-scheduler-group-row .dx-scheduler-last-group-cell { @@ -222,6 +215,30 @@ $scheduler-timeline-min-height: 100px; .dx-rtl { .dx-scheduler-timeline.dx-scheduler-work-space-grouped { + .dx-scheduler-group-table > .dx-scheduler-group-flex-container:not(.dx-scheduler-group-flex-container-hierarchical) { + .dx-scheduler-group-row .dx-scheduler-group-header { + border-right: none; + border-left: $scheduler-base-border; + border-left-color: $scheduler-base-border-color; + } + } + + &.dx-scheduler-work-space-group-by-date { + .dx-scheduler-group-table > .dx-scheduler-group-flex-container:not(.dx-scheduler-group-flex-container-hierarchical) { + .dx-scheduler-group-row .dx-scheduler-group-header { + border-right: none; + border-left: $scheduler-base-border; + border-left-color: $scheduler-base-border-color; + } + } + + .dx-scheduler-group-row .dx-scheduler-last-group-cell { + border-right: none; + border-left: $scheduler-accent-border; + border-left-color: $scheduler-accent-border-color; + } + } + .dx-scheduler-date-table-cell { &:first-child { border-left: $scheduler-base-border; diff --git a/packages/devextreme-scss/scss/widgets/fluent/scheduler/_index.scss b/packages/devextreme-scss/scss/widgets/fluent/scheduler/_index.scss index 991285a0deae..a06e0e0a63e6 100644 --- a/packages/devextreme-scss/scss/widgets/fluent/scheduler/_index.scss +++ b/packages/devextreme-scss/scss/widgets/fluent/scheduler/_index.scss @@ -787,6 +787,48 @@ $fluent-scheduler-agenda-time-panel-cell-padding: 8px; } } +.dx-scheduler-work-space-grouped.dx-scheduler-work-space-vertical-grouped, +.dx-scheduler-work-space-grouped.dx-scheduler-timeline { + .dx-scheduler-group-row th, + .dx-scheduler-last-group-cell { + border-right: baseScheduler.$scheduler-base-border; + border-right-color: $scheduler-base-border-color; + border-left: baseScheduler.$scheduler-base-border; + border-left-color: $scheduler-base-border-color; + } +} + +.dx-scheduler-work-space-grouped.dx-scheduler-work-space-group-by-date { + .dx-scheduler-group-row th { + border-right: baseScheduler.$scheduler-base-border; + border-right-color: $scheduler-base-border-color; + border-left: baseScheduler.$scheduler-base-border; + border-left-color: $scheduler-base-border-color; + } + + .dx-scheduler-header-panel-cell, + .dx-scheduler-group-header.dx-scheduler-last-group-cell, + .dx-scheduler-date-table-cell.dx-scheduler-last-group-cell { + border-right: 1px solid; + border-right-color: $scheduler-group-separator-border-color; + + &:last-child { + border-right: none; + } + + .dx-rtl & { + border-left: 1px solid; + border-left-color: $scheduler-group-separator-border-color; + border-right: baseScheduler.$scheduler-base-border; + border-right-color: $scheduler-base-border-color; + + &:last-child { + border-left: none; + } + } + } +} + .dx-scheduler-appointment { &, .dx-rtl &, diff --git a/packages/devextreme/js/__internal/scheduler/classes.ts b/packages/devextreme/js/__internal/scheduler/classes.ts index 3e06d8bc1334..6f9245029857 100644 --- a/packages/devextreme/js/__internal/scheduler/classes.ts +++ b/packages/devextreme/js/__internal/scheduler/classes.ts @@ -43,9 +43,3 @@ export const GROUP_ROW_CLASS = 'dx-scheduler-group-row'; export const GROUP_HEADER_CONTENT_CLASS = 'dx-scheduler-group-header-content'; export const LAST_GROUP_CELL_CLASS = 'dx-scheduler-last-group-cell'; export const FIRST_GROUP_CELL_CLASS = 'dx-scheduler-first-group-cell'; - -export const VERTICAL_GROUP_COUNT_CLASSES = [ - 'dx-scheduler-group-column-count-one', - 'dx-scheduler-group-column-count-two', - 'dx-scheduler-group-column-count-three', -]; diff --git a/packages/devextreme/js/__internal/scheduler/r1/components/base/group_panel_vertical.tsx b/packages/devextreme/js/__internal/scheduler/r1/components/base/group_panel_vertical.tsx index 3ef844185a47..b5c2363d8d06 100644 --- a/packages/devextreme/js/__internal/scheduler/r1/components/base/group_panel_vertical.tsx +++ b/packages/devextreme/js/__internal/scheduler/r1/components/base/group_panel_vertical.tsx @@ -17,7 +17,7 @@ const renderGroupPanelContent = ( isHierarchical: boolean, groupByDate: boolean, ): JSX.Element | JSX.Element[] => { - if (isTimelineGroupTable) { + if (isTimelineGroupTable && !isHierarchical) { return getTimelineGroupPanelRows(groupPanelData, groupByDate) .map((group) => { } = this.props; const style = normalizeStyles(renderUtils.addHeightToStyle(height, styles)); const isTimelineGroupTable = className === TIMELINE_GROUP_TABLE_CLASS; - const isHierarchical = !isTimelineGroupTable && groupPanelData.maxDepth > 1; + const useResourceHierarchyLayout = groupPanelData.hasHierarchy && groupPanelData.maxDepth > 1; + const isHierarchical = isTimelineGroupTable + ? useResourceHierarchyLayout + : groupPanelData.maxDepth > 1; const flexContainerClassName = isHierarchical ? `dx-scheduler-group-flex-container ${HIERARCHICAL_GROUP_FLEX_CONTAINER_CLASS}` : 'dx-scheduler-group-flex-container'; diff --git a/packages/devextreme/js/__internal/scheduler/r1/components/base/group_panel_vertical_node.test.tsx b/packages/devextreme/js/__internal/scheduler/r1/components/base/group_panel_vertical_node.test.tsx index 10d323687336..e03cff1c4793 100644 --- a/packages/devextreme/js/__internal/scheduler/r1/components/base/group_panel_vertical_node.test.tsx +++ b/packages/devextreme/js/__internal/scheduler/r1/components/base/group_panel_vertical_node.test.tsx @@ -69,4 +69,34 @@ describe('GroupPanelVerticalNode', () => { expect(nestedContainer.className).toBe('dx-scheduler-group-flex-container'); expect(nestedContainer.children).toHaveLength(2); }); + + it('should not set inline width on header cells (width is defined in CSS)', () => { + const branch2Depth3: GroupPanelTreeNode = { + ...leafNode('building2', 'Building 2', 3), + children: [ + { + ...leafNode('floor1', 'Floor 1', 2), + children: [leafNode('room3', 'Room 3', 1), leafNode('room4', 'Room 4', 1)], + }, + leafNode('room5', 'Room 5', 1), + ], + }; + + const checkHeaderCell = (node: GroupPanelTreeNode) => { + const component = new GroupPanelVerticalNode({ node, index: 0 }); + const result = component.render() as VirtualNodeLike; + const children = result.children as VirtualNodeLike[]; + const headerCell = children[0]; + + expect(headerCell.props?.style).toBeUndefined(); + }; + + checkHeaderCell(leafNode('a', 'Room A', 1)); + checkHeaderCell({ + ...leafNode('parent', 'Building A', 2), + children: [leafNode('child1', 'Room A1', 1), leafNode('child2', 'Room A2', 1)], + }); + checkHeaderCell(branch2Depth3); + checkHeaderCell(branch2Depth3.children[0]); + }); }); diff --git a/packages/devextreme/js/__internal/scheduler/r1/utils/__tests__/base.test.ts b/packages/devextreme/js/__internal/scheduler/r1/utils/__tests__/base.test.ts index de77d84f4269..55ba533ff070 100644 --- a/packages/devextreme/js/__internal/scheduler/r1/utils/__tests__/base.test.ts +++ b/packages/devextreme/js/__internal/scheduler/r1/utils/__tests__/base.test.ts @@ -672,6 +672,26 @@ describe('base utils', () => { ]); expect(timelineRows).not.toEqual(groupPanelData.groupPanelItems); }); + + it('should keep a single stacked row when a single resource has multiple flat groups on timeline', () => { + const groups: GroupNode[] = [ + { + id: 1, resourceText: 'Group_1', resourceIndex: 'any', grouped: { any: 1 }, children: [], + }, + { + id: 2, resourceText: 'Group_2', resourceIndex: 'any', grouped: { any: 2 }, children: [], + }, + { + id: 3, resourceText: 'Group_3', resourceIndex: 'any', grouped: { any: 3 }, children: [], + }, + ]; + const groupPanelData = getGroupPanelData(groups, 1, false, 1, false); + const timelineRows = getTimelineGroupPanelRows(groupPanelData, false); + + expect(timelineRows).toEqual(groupPanelData.groupPanelItems); + expect(timelineRows).toHaveLength(1); + expect(timelineRows[0]).toHaveLength(3); + }); }); describe('getKeyByGroup', () => { diff --git a/packages/devextreme/js/__internal/scheduler/r1/utils/base.ts b/packages/devextreme/js/__internal/scheduler/r1/utils/base.ts index 4030bceddb9a..17bc0286d1d6 100644 --- a/packages/devextreme/js/__internal/scheduler/r1/utils/base.ts +++ b/packages/devextreme/js/__internal/scheduler/r1/utils/base.ts @@ -3,7 +3,6 @@ import dateUtils from '@js/core/utils/date'; import { isDefined } from '@js/core/utils/type'; import { dateUtilsTs } from '@ts/core/utils/date'; -import { VERTICAL_GROUP_COUNT_CLASSES } from '../../classes'; import { HORIZONTAL_GROUP_ORIENTATION, VERTICAL_GROUP_ORIENTATION, } from '../../constants'; @@ -99,19 +98,6 @@ export const getOverflowIndicatorColor = (color: string, colors: string[]): stri : undefined ); -export const getVerticalGroupCountClass = (groups: unknown[]): string | undefined => { - switch (groups?.length) { - case 1: - return VERTICAL_GROUP_COUNT_CLASSES[0]; - case 2: - return VERTICAL_GROUP_COUNT_CLASSES[1]; - case 3: - return VERTICAL_GROUP_COUNT_CLASSES[2]; - default: - return undefined; - } -}; - export const setOptionHour = (date: Date, optionHour: number): Date => { const nextDate = new Date(date); @@ -483,7 +469,11 @@ export const getTimelineGroupPanelRows = ( groupPanelData: GroupPanelData, groupByDate: boolean, ): GroupRenderItem[][] => { - let rows = groupPanelData.hasHierarchy + // Flat timeline keeps one stacked group-row (base CSS: column + flex:1 headers). + // Leaf rows are only for hierarchical resources rendered via this helper. + const shouldUseLeafRows = groupPanelData.hasHierarchy; + + let rows = shouldUseLeafRows ? flattenGroupPanelTreeToLeafRows(groupPanelData.groupTree, groupPanelData.baseColSpan) : groupPanelData.groupPanelItems; diff --git a/packages/devextreme/js/__internal/scheduler/r1/utils/index.ts b/packages/devextreme/js/__internal/scheduler/r1/utils/index.ts index c08e12029250..1856a323cfd2 100644 --- a/packages/devextreme/js/__internal/scheduler/r1/utils/index.ts +++ b/packages/devextreme/js/__internal/scheduler/r1/utils/index.ts @@ -62,7 +62,6 @@ export { getTotalCellCountByCompleteData, getTotalRowCountByCompleteData, getValidCellDateForLocalTimeFormat, - getVerticalGroupCountClass, getViewStartByOptions, isAppointmentTakesAllDay, isDateAndTimeView, diff --git a/packages/devextreme/js/__internal/scheduler/workspaces/agenda.ts b/packages/devextreme/js/__internal/scheduler/workspaces/agenda.ts index b007f58caa95..c7eac2219570 100644 --- a/packages/devextreme/js/__internal/scheduler/workspaces/agenda.ts +++ b/packages/devextreme/js/__internal/scheduler/workspaces/agenda.ts @@ -21,7 +21,7 @@ import { GROUP_ROW_CLASS, TIME_PANEL_CLASS, } from '../classes'; -import { agendaUtils, formatWeekday, getVerticalGroupCountClass } from '../r1/utils/index'; +import { agendaUtils, formatWeekday } from '../r1/utils/index'; import tableCreatorModule, { type GroupRows } from '../table_creator'; import type { ResourceId } from '../utils/loader/types'; import { VIEWS } from '../utils/options/constants_view'; @@ -102,7 +102,6 @@ class SchedulerAgenda extends WorkSpace { if (this.$groupTable) { this.$groupTable.remove(); this.$groupTable = null; - this.detachGroupCountClass(); } } else if (!this.$groupTable) { this.initGroupTable(); @@ -230,13 +229,6 @@ class SchedulerAgenda extends WorkSpace { return rows.every((groupRow) => groupRow.every((cell) => !cell)); } - protected override attachGroupCountClass(): void { - const className = getVerticalGroupCountClass(this.option().groups); - if (className) { - this.$element().addClass(className); - } - } - private removeEmptyRows(rows: number[][]): number[][] { const isEmpty = (data: number[]): boolean => !data.some((value) => value > 0); return rows.filter((row) => row.length && !isEmpty(row)); diff --git a/packages/devextreme/js/__internal/scheduler/workspaces/work_space.ts b/packages/devextreme/js/__internal/scheduler/workspaces/work_space.ts index 7655a5a89327..9e1e1a2d81b1 100644 --- a/packages/devextreme/js/__internal/scheduler/workspaces/work_space.ts +++ b/packages/devextreme/js/__internal/scheduler/workspaces/work_space.ts @@ -78,7 +78,6 @@ import { GROUP_HEADER_CONTENT_CLASS, GROUP_ROW_CLASS, TIME_PANEL_CLASS, - VERTICAL_GROUP_COUNT_CLASSES, VIRTUAL_CELL_CLASS, } from '../classes'; import { APPOINTMENT_SETTINGS_KEY } from '../constants'; @@ -2394,7 +2393,6 @@ class SchedulerWorkSpace extends Widget { }; if (this.option().groups?.length) { - this.attachGroupCountClass(); const $groupHeaderContainer = this.getGroupHeaderContainer(); if ($groupHeaderContainer) { this.renderRenovatedComponent( @@ -2404,8 +2402,6 @@ class SchedulerWorkSpace extends Widget { options, ); } - } else { - this.detachGroupCountClass(); } } @@ -2478,12 +2474,6 @@ class SchedulerWorkSpace extends Widget { } renderRHeaderPanel(isRenderDateHeader = true): void { - if (this.option().groups?.length) { - this.attachGroupCountClass(); - } else { - this.detachGroupCountClass(); - } - this.renderRenovatedComponent( this.$thead, this.renovatedHeaderPanelComponent, @@ -3221,20 +3211,6 @@ class SchedulerWorkSpace extends Widget { protected setIndicationUpdateInterval(): void { return noop(); } - protected detachGroupCountClass(): void { - VERTICAL_GROUP_COUNT_CLASSES.forEach((className) => { - this.$element().removeClass(className); - }); - } - - protected attachGroupCountClass(): void { - const className = this.groupedStrategy.getGroupCountClass(this.option().groups); - - if (className) { - this.$element().addClass(className); - } - } - protected getDateHeaderTemplate(): TemplateBase | null | undefined { return this.option().dateCellTemplate; } @@ -3353,12 +3329,9 @@ class SchedulerWorkSpace extends Widget { let cellTemplates: (() => dxElementWrapper)[] = []; if (groupCount && $container) { const groupRows = this.makeGroupRows(this.option().groups, this.option().groupByDate); - this.attachGroupCountClass(); const { elements } = groupRows; $container.append(Array.isArray(elements) ? elements : elements.toArray()); cellTemplates = groupRows.cellTemplates; - } else { - this.detachGroupCountClass(); } return cellTemplates; diff --git a/packages/devextreme/js/__internal/scheduler/workspaces/work_space_grouped_strategy_horizontal.ts b/packages/devextreme/js/__internal/scheduler/workspaces/work_space_grouped_strategy_horizontal.ts index 6c7c18e41408..5e852d38e91a 100644 --- a/packages/devextreme/js/__internal/scheduler/workspaces/work_space_grouped_strategy_horizontal.ts +++ b/packages/devextreme/js/__internal/scheduler/workspaces/work_space_grouped_strategy_horizontal.ts @@ -8,7 +8,6 @@ import type { import { WORK_SPACE_BORDER_PX } from '@ts/scheduler/workspaces/const'; import { FIRST_GROUP_CELL_CLASS, LAST_GROUP_CELL_CLASS } from '../classes'; -import type { ResourceLoader } from '../utils/loader/resource_loader'; import type { GroupedStrategyConfig } from './work_space_grouped_strategy_config'; class HorizontalGroupedStrategy { @@ -77,11 +76,6 @@ class HorizontalGroupedStrategy { return this.config.getAllDayHeight(); } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getGroupCountClass(groups: ResourceLoader[]): string | undefined { - return undefined; - } - getLeftOffset(): number { return this.config.getTimePanelWidth(); } diff --git a/packages/devextreme/js/__internal/scheduler/workspaces/work_space_grouped_strategy_vertical.test.ts b/packages/devextreme/js/__internal/scheduler/workspaces/work_space_grouped_strategy_vertical.test.ts index 2913d192235d..73eb05320668 100644 --- a/packages/devextreme/js/__internal/scheduler/workspaces/work_space_grouped_strategy_vertical.test.ts +++ b/packages/devextreme/js/__internal/scheduler/workspaces/work_space_grouped_strategy_vertical.test.ts @@ -8,12 +8,10 @@ import VerticalGroupedStrategy from './work_space_grouped_strategy_vertical'; jest.mock('@ts/scheduler/r1/utils/index', (): { calculateDayDuration: (startDayHour: number, endDayHour: number) => number; - getVerticalGroupCountClass: () => undefined; } => ({ calculateDayDuration: (startDayHour: number, endDayHour: number): number => ( endDayHour - startDayHour ), - getVerticalGroupCountClass: (): undefined => undefined, })); const createElement = ({ diff --git a/packages/devextreme/js/__internal/scheduler/workspaces/work_space_grouped_strategy_vertical.ts b/packages/devextreme/js/__internal/scheduler/workspaces/work_space_grouped_strategy_vertical.ts index 8018efecb51c..bf3146d9269d 100644 --- a/packages/devextreme/js/__internal/scheduler/workspaces/work_space_grouped_strategy_vertical.ts +++ b/packages/devextreme/js/__internal/scheduler/workspaces/work_space_grouped_strategy_vertical.ts @@ -1,12 +1,11 @@ import type { dxElementWrapper } from '@js/core/renderer'; import { getBoundingRect } from '@js/core/utils/position'; -import { calculateDayDuration, getVerticalGroupCountClass } from '@ts/scheduler/r1/utils/index'; +import { calculateDayDuration } from '@ts/scheduler/r1/utils/index'; import type { CellPositionData, GroupBoundsOffset } from '@ts/scheduler/types'; import { WORK_SPACE_BORDER_PX } from '@ts/scheduler/workspaces/const'; import { FIRST_GROUP_CELL_CLASS, LAST_GROUP_CELL_CLASS } from '../classes'; import { Cache } from '../global_cache'; -import type { ResourceLoader } from '../utils/loader/resource_loader'; import type { GroupedStrategyConfig } from './work_space_grouped_strategy_config'; class VerticalGroupedStrategy { @@ -77,10 +76,6 @@ class VerticalGroupedStrategy { return 0; } - getGroupCountClass(groups: ResourceLoader[]): string | undefined { - return getVerticalGroupCountClass(groups); - } - getLeftOffset(): number { return this.config.getTimePanelWidth() + this.config.getGroupTableWidth(); } diff --git a/packages/devextreme/playground/jquery.html b/packages/devextreme/playground/jquery.html index 2389ed7be937..69384d8c5c6f 100644 --- a/packages/devextreme/playground/jquery.html +++ b/packages/devextreme/playground/jquery.html @@ -44,21 +44,21 @@ -
-

Test header

+
+

Test header

- -
-
- -
+ }); + +
diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timeline.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timeline.markup.tests.js index 0f7affa43e3e..a010732318f0 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timeline.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timeline.markup.tests.js @@ -138,26 +138,6 @@ QUnit.module('Timeline markup', moduleConfig, () => { assert.equal($firstColumnCells.length, 2, 'Cell count is OK'); assert.equal($secondColumnCells.length, 4, 'Cell count is OK'); }); - - QUnit.test('Timeline should have correct group-count class depending on group count', async function(assert) { - const $element = this.instance.$element(); - - await applyWorkspaceGroups(this.instance, [{ - label: 'one', - fieldExpr: 'one', - dataSource: [{ id: 1, text: 'a' }, { id: 2, text: 'b' }] - }, { - label: 'two', - fieldExpr: 'two', - dataSource: [{ id: 1, text: '1' }, { id: 2, text: '2' }] - }]); - - assert.ok($element.hasClass('dx-scheduler-group-column-count-two'), 'Correct class'); - - await applyWorkspaceGroups(this.instance, []); - - assert.notOk($element.hasClass('dx-scheduler-group-column-count-two'), 'group-count class was not applied'); - }); }); let timelineDayModuleConfig = {