From 62affe91629a4cf174bf507fdcd980e6b95b7333 Mon Sep 17 00:00:00 2001 From: Alyar Date: Wed, 25 Dec 2024 19:08:07 +0400 Subject: [PATCH] Scheduler: Fix appointment rendering when virtual scrolling is enabled (T1263428) (#28611) Co-authored-by: Alyar <> --- .../virtualScrolling/appointments.ts | 46 ++++++++++++++++++ ...8-virtual-scrolling-render-appointment.png | Bin 0 -> 19504 bytes .../m_strategy_vertical.ts | 4 +- 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 e2e/testcafe-devextreme/tests/scheduler/virtualScrolling/etalons/T1263428-virtual-scrolling-render-appointment.png diff --git a/e2e/testcafe-devextreme/tests/scheduler/virtualScrolling/appointments.ts b/e2e/testcafe-devextreme/tests/scheduler/virtualScrolling/appointments.ts index 7f38bce43cc3..e4dbae824a5b 100644 --- a/e2e/testcafe-devextreme/tests/scheduler/virtualScrolling/appointments.ts +++ b/e2e/testcafe-devextreme/tests/scheduler/virtualScrolling/appointments.ts @@ -1,4 +1,5 @@ import Scheduler from 'devextreme-testcafe-models/scheduler'; +import { createScreenshotsComparer } from 'devextreme-screenshot-comparer'; import { getStyleAttribute, setStyleAttribute } from '../../../helpers/domUtils'; import { createWidget } from '../../../helpers/createWidget'; import url from '../../../helpers/getPageUrl'; @@ -39,3 +40,48 @@ test.skip('Appointment should not repaint after scrolling if present on viewport }], }); }); + +test('The appointment should render correctly when scrolling vertically (T1263428)', async (t) => { + const scheduler = new Scheduler('#container'); + const { takeScreenshot, compareResults } = createScreenshotsComparer(t); + + await scrollTo(new Date('2024-11-12T09:00:00+0100')); + + await takeScreenshot('T1263428-virtual-scrolling-render-appointment.png', scheduler.element); + + await t + .expect(compareResults.isValid()) + .ok(compareResults.errorMessages()); +}).before(async () => { + await createWidget('dxScheduler', { + height: 500, + width: 900, + timeZone: 'Europe/Vienna', + dateSerializationFormat: 'yyyy-MM-ddTHH:mm:ssxx', + currentDate: new Date(2024, 10, 11, 20, 54, 23, 361), + cellDuration: 20, + firstDayOfWeek: 1, + startDayHour: 12.0, + endDayHour: 18.0, + allDayPanelMode: 'hidden', + scrolling: { + mode: 'virtual', + }, + crossScrollingEnabled: true, + currentView: 'week', + textExpr: 'Subject', + startDateExpr: 'StartDate', + endDateExpr: 'EndDate', + views: [{ + type: 'week', + groupByDate: true, + startDayHour: 6.0, + endDayHour: 22.0, + }], + dataSource: [{ + Subject: 'Website Re-Design Plan', + StartDate: new Date('2024-11-11T12:10:00+0100'), + EndDate: new Date('2024-11-12T21:00:00+0100'), + }], + }); +}); diff --git a/e2e/testcafe-devextreme/tests/scheduler/virtualScrolling/etalons/T1263428-virtual-scrolling-render-appointment.png b/e2e/testcafe-devextreme/tests/scheduler/virtualScrolling/etalons/T1263428-virtual-scrolling-render-appointment.png new file mode 100644 index 0000000000000000000000000000000000000000..d5178062bb8cd745014497628bf4f08569b147d2 GIT binary patch literal 19504 zcmeHv2UL~Uwl123iIu2eL4_!y0%D2-tjsDN}3X@Y>UcN8fC(xh*iA{_x^ zX9FT#K){AH0cq0VeiL)vNzTZ5_vDQG?tA0DlVKG0-u(Z+)|zY1ugt{-H5IwJv$$um zv9ZmS-?vADjqRJ$Y;4o|zng(qO#9wfu(62+$?w^vb_i@IJ)$jY@HMNZC|J$oU2{b1V$qx=Jpeg0y z!`)n*oa^}bWK2!tF5~K2cMr-=%bL(i+^>#{O=n}vYW&dL93L0APemQ$!Jz&8B18l? zZ16v@WV-$M<~cGndivPVxaaV==e9FV-2qMAI=V~oA{*O}J}c>;6MX;4wa+Q{}@mv#WBPtZI9EdmTqRGdnb5l!IfguGr2@bMMa6S-NzoTT6(G7FL;k`8J0= z-cloR&fSf|vATI~>D7t4d_}2R3EINrJ>FiGhAs{K`Ueg~e0&j-&{>};Br2*|61=qr z&&b8a#a|yNdRWY=dc8-_lf@XiMtz3Oz=s>Eg6r2S@#B4q2PdY@nmMzqJX+By$rYaw zw|=$BW27yXd%JU@(eWPHV>@^-4R2cN3%m;G4#RydLI{m%DfuHzJZ?YKLp&nm!ZJP28j~qFocju>{cgx5)CH?5wdTqv>CE;;#>kL^D zGUvp8dccP0h+kh`Q8DoO5r+^0?CgQK)hRUzSC(zHeE;-HUDlDvEw-=YYK+{KBO)R! z>(b)$Rn^t6FA~;Uy-z>Ww(2DNY_Wrnze_UA)o#djsWG1DUF^|UvNcs$KSL?krMo)K zq9Veptv+YDdTAxvOze_-h?z`fzC|W2c^8(2HB!BC&$Z z9f*)X2`AW5RHU!QXOFhLU^qKxRHqoHl#7Upio0|fm>xcCH9j&h zvbnalmRrpHnuJSNqEkn8d|GR(xu2LRi&L`qIp4*rSE~n?;$4h7$|%pR?PIWAb@Ydi zA1xd2AFIng8k>6WURC(6Z>}ugrh$2@mf?_$s<+Km_Llr|bNZt7`@=m(zgP_SHjjL% zw-Z0~bk2$$u4USschohHWz6QX7>-q3pY8IR_)r% z?eijJdu(%2K!ROUK5hJDab&%++p?F$OrC#l(|BL^mtTJ2-fDZxU_$`1fc@}&qZHem zwlymx9QP&ZrTcXDw^bk$Y2&FKhdv*uic^=#cyx|K2-y_Tn`+aL!{GJkzy2ajI_3QN z?*=+*RF#9b_z7>^sG6XYQav#~>gVSd?KaTfc3qAK$<0?G*Z%FvHOfIzLqo1k?UnKc zoH9DU6bFj>-Mkrh^X3v^y|jJv=g-ff*xWmpTkPeaMMcaNtbTYZ(8LLl{3x>bNm zh(xsX*jtW~mFbpM<==4Z2*>B*v$FOFh#+!2hMNQQavbBg*wjVMn9FUBsAiRvFk)3g z(hfbF=SP1zb=ENux^C|-tkt?_rfl;%OZ~!y3kve`Ww^6RpX-j)^@_T>x_a3T(ME1< z{7L)o?(WVT3^no?VC0Q|si&Eg8vd}5eKkLSq1e=qV@FnCTGQMIZEMX+LzCV=^R{|& zk!u8d7i%p#msiRFH$qmYto=dj4EZN$IkNhDLvb zOH;ghDUOv@@}o1c!6 zI^J2ZaH06ok4jV7$*MXra2~Hz;tATDp5r4q!ykj`dQ-_0d&2+O`?63;_cYIOx4A1M zv@R{)sNIzBA%6J9^603j=NXn&f+5?E?p?T6r4k8+bMfNXrJ`nWm}>rJloRajoX(8; z%6QGS<34l7A1>Np5LcC;QzWLG*UJ*Z?p!pHNeSxIjJZCzkM~j$lk<4^g9mRb^o@?| zW!i?!;NVGYuSyX5@yGo#=jJio+;YBjH>F^K+a6z7C~@@TW$U%7p}2l*<=sPaD}J=! z8LJvr{oY$T8GG~0xpP7*SMCblYNx$x*U#4M?Cg|gttkYPG-FkIU3biyJC~8?HsCnY zZ^3^0%$cc_j+b(sJNtv1#`cCC@4bK}Njvap#@wYMdtxkD9Rq^6Vtjo3NQ?Aj{0ZBJ zoOt|CWq_k+bUX;@D`<-i6WONq-IGhHXU?37kNW)CJ~}!&KFw>q!ykZm_gU-aw*V6Vrh2Hbt)3hj6-!D>90^_?B5@!DmA$yispUlohNP~G@NIjYeYCwS@*Haw_H^Xl zE9IDLry4_-_^7^?QXy>Qt*`A*O&4S^qfnaYQElqd)R7Ko7Y%eb8PoQ+%^T3B@Eq)F zK=IVV>}u&LC|tDm6J%&$51973<)tzbw3Vmr+O>;SRHV5RNwwJ_oAdjH3;DuI*A}Jv zqWZsmbS@$7!v_;_n>wuwy>!dAXM|VEqvU&sj|XkF3-vq?*i+Q3Ay2?Xv~)-0;m~7y zGaKC!tWh9>wjGV3v=ScvgWtCs0u-kKeND~r!Gi}mmoAOR^dcr#NV;iJVzjJ`BOrNW zttt~0Ee9zHiz=v(N2a;Qc1(!EfLnn>1lO&5d3mX*R*y8WmQ`3-h9Dkzb;!GIpvG7S>z%x|V6>sTzgpi;;6cX#Gcm)qf%&Dg zzUX~VT%v^Yr#RFS3WUK1moU~UX=&pOAO_24S68$*6%=IHH6@RB<*IH$wP*PWSz*LE zz6j{TW`}sOfTHN`_dvNpH64EVL&ceCT#&C&R8(}MADg}nXq+eb{@dojQ*jL5xnYq`ZOr%FEJ=kDFF)rU(^ORd0jyfXXfVLyL= z|26e}rP3*=TnTAF(6v-8Xn{jq8p|I1{LO%(s3X^oflAHxhTKe_8#ktAF}FLvVj#+) znRW5fB~1f^TYwxUOU|+$0;C{#Eo+iPJedHd<`pr@632(`OkcHX73cEhiAYoHegISw z5D>U{<;qkRkZ}DRes%e_+jy%rIk(G4c*_=TU`W)GThkpJ930<1WH(I4E(& zTY6&uJ+qQ>6oSear5>4tUV^GD3#FrMhfY=+fj7`;5n32`~cj z6A)M*wFX-#nN$UOvZ=A3x3j2tnBun7eF?(&CLqmFcU6g_Whk zR2OeBxK@(7e)zZ)Q7Kxnu+mtdkmqK){>P=l9F87!62LCQPQ;&7WV^zaJ^@Kd!)bVK zBpXdYg?`PdWJCS&(ZL$4l)M-=L@D5yMQy4n9tX9JfbJ?jzN%DH#oF7Ek*HXFC83h~ zluY*TziEvJ(n9hPL(#(31%L=Q=Joqb^ad2PI^e1J*Q{ZJQn?RyRRK~tB0Uv4qaIrp z`tXkc@o6CqW;S{1dksC}^$iS+Pj&4`%JlX3kNM@)w?$LK!Zl1yOrAS8c??aTwgf9Y-mmPxwz_S)qQ_&2(B2ve!p z+TeJDz7C9uw~|HCI?KU36+~7w$-jY9reci)Ski1QD`(A7xm>BIA+O|y>5lBEn{K&gKfW<-&kOxp1at0gS z)2(YoFtXNw4`qylOU{P6cWtA(jEvz17ME^bwuAGG9SagY zeD&n1Q{oOE_D$vg)2IJ}fp(P1@iI`^2>`OsUbGJ6>e#VkBb&V@N1Fz~6xZQ``~z(j za;nnfX+V0U1xWT4i&8pH%4}rH-&j-l<;h}WBKz3k3=1$kO>A2Qr2UI0PoCslu_DPz zR$JSj$7}3}2Ot^2ag>qOk2XQEI3ctapoA8h(#P4k%LE^YDPuMTLFG{+bawWAEUAiB z~*4B0rDS>hxh)``;{-`Z>Qu~?3Mrxp+NLNXO)sa@Ta5sha^5{$XL+@ti^*mk1 zEp|+#|s<5vlx{{3yEgj0BB~UFKjZgRBBWyNk6k1)rkE~?9y!xQBtFyMAL2R zwK2aMYHHU!lc|saWRpe^dTYCj%C>FW9DJ@_`<{_vWGMX+Kt;sS50|q5cc;ubW8U(0 zY|;$`O`JRH=v82#1qA=M?HJ*5%`++q6qRG!pn7SMaOG{;*+@ui(&tv<@Bdt6_*IdJ z5E1#RTG)>ZeAO{XzQ{7zkZrJG+nJ(fAJlQ(rGk9WPd?$RnYro;iK`IX<*=SQ|3Qty{}Oq`i#%gme}`Z5oI{sQ}3LOM;9- z$_rmW5kIbuP-G+<=+af#zx_4=5Sh}Ir6m*Fnmzou=o}g75xD;Knhq|y%+pS1-~?=_ zbwECUz0TJvjOR;8+%Yl}3<-Z|Hp1`Q=QhmZ;8;Ad@lPpRfA?YUi4H8$*O|N2QUJha zZ*yn8VvNPC=3rCZ)W8@4Ut@pMLbIS4HBViC{$Pus-NUB3{?_z?fZu$e*+D==L}Ojk z`l5eQ5&Bc|(ZBfN39GT89)iuEJ4QdOVFC>CyX!2Js8{v;SGhU z3JH?-QZ(?pGV*BEuR7590+I!gKRQrNvArH?X+WkUrm?l@xF)KUR!4Qx8O80+pKgu} zbi{U7pvDmU$SI$SO^teF<=8jp6UlkjAQQyc~FN02o&7lBcQ&Y3kb>&EP;c2HLB7Ikb@6Gs)$(L)px_2=j3wL&86GOkac?ILc+7%H-dtghr>Ly<>lq6e(d1!p8oFr zd#A3~+x#lit#p(FMP!HCUW7^}Jh`;ks=G07q${_ZgvWH-20ef|Es#XkyUxreZM+A0 zGOGI?_#dGg!pF#UF+M7{evDXbd|dq;2d_3TW>tZg*Z5lwukTrFHg8t%zTbCs0@;bS zNxD@{_4r^@3L(}4UywKpEcwOr=U+lNkb8Xz-X$3RVl{CNX3F}^>zhSH&mtK&+&ThCnQ0GK~aT3sQ~o`q!b@8tk1O5 z!TiY+6@nD$_T^Lj3B1dMT*uUk_eqZG?|0;1y*dts5a}%X3a_*gQUVcVsK!QK<4&Y1 z1#htdvzpt50a^)2sNj-q0vSiz(2zd-v|sVadpFkIv2| zQ2enpY-5F3bKkI-*TnHFOE&MO*m-T6>A4T8H2^|%S3|DQx^?>kL;xI!#fw{2Ygs_o zprS)HN;!0gF2NDSjd@YpNqWfDDnkdBZLxm&srH_@=a_4QLy<6a@VY$rOcFd9kgP#M zEBwA7nk<3sh9SW*>P1liWcau zoYx?WVWKSnN?0#mXhR?nqvCJ-dOx0Tq@mlBbcR+Gc`fV{qMsnH9Z#3pRYr@MzuZZ3 z1c?CU(D%g6U;co=*F_ds=(!&S@!+9DTyLCnNfLYYYCpSDhy;TuqKN6m=>)=OE?g4_ z*$>sC>ejZSX;w8GqGMwdfE9u^9XJUL6R&s#8YqZ-b+Tasl+%Q$dxuMzNFbCftg(01 zfUX7rE8<+b8y`+qXV~Zq8|G*sMT;rd`uO-%=DE8d*p(40V4@k&y&H~}N~U^1$`0Cm z=qzyt(0ixWm%Ae6yeX8dDcSWl7x`Vk9?>*8G1xmgJ|cxD{+;THO5JvKdlv~r)*O=k z*NDp#Lzj@y8=3?aY%JM_|&Zp=bTQ?waF^hg8PY5u^v7IbF06fsFYyWP!R2^cHPQ!0`1_O)h9B?vJ23 z#kcMCnJEfI#l@8n73dyQRQlb!gXH2s(jh&_lLyoSh5=+LU8YV-sP%yZ2i&@{TS!j; za*aRum9C(oW)Jw87_hZA@LaKjSUr46CLREszXD#LXRjDudsBO^`J zERcEN-3o#yHT32iKe{~WoQQ>K(73Atj6LI{6$3!Gl`Zk;d#`XuzkY21BcZm@y<1Xv z|DBzXA#>iIUDnSMN@*SKM^yqq3DC%MbD|K>a{I^9Vva8e7iHK0(9hWf+WB?;qamuk zowO{Ex*({NoG9u3<+-+jK_X_f4NT#BQ+EwmuCTs?Ln?{%88-Dy2z#nKdQQ_efHo+I zR1f3@btK68nKy3@hC>DsMK>55ig|9o2Np3I5z#Ta^vc#4lTY;2p*dq!ZH7PaCpb=BrE^jIb78PVvx`!M2kgzN)EJ%?bK$>Afej8ay zJP|3vQ2@+6l@wSK`Y3~y+}fszt@2QHF{&boHk2{;?mau5$w-KC@5+_~=Jv%n!FvWs z@dE>>xX2}xX4fP|lnz40%T&`MllmN|1Oy?Ep~B?Ecyo`dqrm83w+`%wfnw3pIKy1$ z98|Xf;E(T2kG{XMwViiz=$zE#*ipaAd=GbIRVCB6J+5gs^;^KWb|+{jl?$cZzl~eB zcBB+kNB6f^DZYLCR`3$PqCfFXT90J$vnP0ufTuE%&vCN=;k9e!!aPUfDN@f?!WwnI5L+n_ukF48|@qSm64@b`C)ty~3XXjkE2jnwA!n!n^?~3D#e#Ext2&%gs+uIEA$OT5Dkx|`y@K3AxO?qdd-K%M!wf;<+>)gVZh&jqDD=YG%ON zty^{Y_Fh&4h+t&e8aB9fBuO0Wjq;oc;eqsx0SKA13lhQINVO;{DKE(n4?rsGAG3lIe36vbDVkjYpt%6=O*(W{8 zS3h^_>+t8#_l=J>O;(p4f$)-tpm6IilXDX8MWs7?pcU0GkM_N|U84c;s2Ug|BS}x3 z{T7%Cm@92;PPKRqe#lI1D26%B{`w}O%9_(iFGI<;@4UBO5k#8Gvw|WVx6->X=#mVw zHD)hbuLf1Z-U2d5E|3Ko%P1^xKNL`7AitDDEh5hlXfht#GnJ}6R0E=W3Is?nc&MHc zK0sZOVI8muuAAyYgYzS(2YZO*_n|ggW^AJqkPKmBcLZ#LI@sVfIZo0i;*G}uCJ@JPksJer!B5vUuofP9;by5CNlp(V^KnVc>v zu(k!`&UyXiitrpM=lcum$DlG4ZJGn_pMdz!Suo~VK*74b`@SXw)Eo-{pSld2;3-Uf z2juPwGB;kU$oCjc^P2P&HqJMIQI={}d@}-9W3GoxrsY%9!7wrk^}LFG8i%Wr+LJ8H zGtKmSUfvWro@09u0t8Vi$&aB9fazcaYMwCLYeDp^v70rJ2%MsofR2elAYX7oxISJ$ zMq;Vt;H`;)6fa~+c|fBZN!Z?Q@Spqw0%FNqgddlBEYFBYDBxyI^oN#~BB(dy^3!Y5 za@N*~z$;`CrQ0^y#dc{8?Or>!5Q_1H6L|8X)|4GON>+<$UT} z4#JfvBlA7?L#ZJzva=yq2TrI4ZfuGYarNQDhiSGA5+Lbukg-#7by8%2bu@RXs9fD( zko5y7vV{AWM1_%3uZhT_>!3;~jpQfI+B8Q7x&pRLR}7ads0^Q<5?R4#B~L zx;Zl5?Ue%J*cx$;$0rG>uP)W}(&vgjd-kjYI!1K=DoA6|oT5Djs&vSNQ;<0F?lhu? zjD;~Va+P9K!;;Hwv)<15RWOpfx?COLtMcAqRjT&n?Fco;1lyKh=abVahrI>)bMD)7 z)OOJOp|B1e1quM(R47D5L`-0yP%nx+7;DwWwxOQ)WQ>7a#9H~u?OaM3tLNR590-QZ zFa}6mK|W3cA0jOc(4?B2J8W#)5-9M}vVc(#;Wz3-TLXXwf%pKpj1NGJA?@Rbud49M zl`Bao`&>cFE~PU}FDOVq_I?~v@T@G-A597u5S=9-7Tp=KFc~bdA<1{M@HZt(7V8Zc z|g`hsJJEa?=C2ry(%i~fRU6Hmu}nN))`|}v^`Mw3eaOM^V)K9s8gaK*HBl zm+}Oez@V_RrIj&cl6$Fjh@dUR@&UNO7LZ9WeQL-;r1t{?bf5-O$_=*5j|X-{FAeMC zfSc)dr*>cDg9MDwkMwX7Y_-+Y!m*?fzft9B+=w4?o(C}d@qp`ypa80x*y!I$7en8| zy-9vvsJbHpg@M)S+yRA`a2p(}b^6%pXzGf?CxoyS+`oJ(BU|?Vv7?6b&~pP^33CTp z!t<8CLP*5|nf1c;h;E?27?@Zcdd>6I_J(YC0q(z7nWVqfko6DMWAK2s*dMW_NY6O| z0%C>9LACLRuT7l-Xsi+X>2=nTRJ^RXaE;RUo;m0z=xof>ho6!OE2t8(?32fj<1n6# ze<&pfl;cxWqr#EZQ>g`jS8so_k9V~~3U_26h-JJuc zNGFbFGC<)1g7my!#hx_RGt* zs$?K5SpaGfD&P)AhhrG0g*GDJQ?CwgokR^5(7M5JV6s+5@0c9xqYjtp zZvCw*>k$-Hm{gQ}fgg}%w?G!?aXoEZO2!)|T`(LQFO}#%@%Q`3`oz#DL7hQ>r6hXq zy}V@Qm?PD0WHeGzNZNoyq-Aa%M>aKp>pBoifHTs?c#eITPjV`HN`k~JdV- zOc7(EzcylePeA4V`+3M%^nS~1ou~PWbJ{KM{%>aDcT)w|@IUE0{1=7ef8K2PV`t*n z>4b-=>;2AH1YuRPr1tys8|eC*wpspuV*WN)J03C)1jVrMGbFg%eHGm8P2uk)Jo$rg z_}wJ@HC`y7z9VPg&Azkr58Ks$fBR3&2G95`D48kXdU0vgD`w|48mv$R4-a{Y`V7&o zJJs+)ZWt;;kv{+(`n}pf4Asue;vxz@4x&qqOoPMlH2tn!3y1RAk=+uiDG%seg=T^T z_-gG)x?3t5(wB-oK?ZbZ4J4mNHH$2jY6Ie4_d@;~$qo1o@a<7&hdPzx1_^!mB>hPjDK#K|5g$)%The(aI@)1ITGDvt6K+dz>Vk# z$nk}VuoHw2TGOo@m+s`jCNJY?V7yl9&IH5YvPTaBs*(yhF6?w)nuS`h9Ww1v%GvkG z$x&w)`dS5r(F{O~80js=1Ti(d@2U>gqAm~oMV$z38jW6)9!`|-@$>BoDf!e6$?!pg z^zq~OiHx&bgO?iSI9{*sgjLAK=Ie6S(^N=1kvdd9^tkpPqE-w!UJosFAHL-C-f_G8 z{ottS(QE_3P9PKs&#|l==T1R=WPdQBXiTbKHCoYViI7<`;AY1GKTwuC(eblf!79j` z)T>F4?7a;?Od$b!3b}6=we!^gA#0W6FOvklbhwcyhG+?P8|+FtK@9*Q(uq5FHW9J-wH<(TMH0Bsok7~30x5Ekst9HQF~>!b z#E9*w1D?kq(}g;Ksfij4t*RMHk?Dco74@uCrHaa`gMVO?{-KWw7Tw#bL(Mdxlgu=b zR$<-LJurj(>pQEVHm|D3)N7SP|D-lVa@U~XR=~R90!JVX3acw947C)=K@*For3VHk zX8&d<|Jt<)tFdxWomvr_L~N!4zGn76KqLRNs__4t*x*k+)xUwn|2aG}c4BnbRyMZ9 z>U2t};LDpWY3+Rz?}ygbY`euM?$7#A{z`lM#gkvmf(>og>*=giKDkzNws3IT<^6nZ zk85pgEuDU{yM0=u)mKn<@#y0ukz2PO>{E)nqH%;H=0~T-E53r2Vuf49)cLM%QJk1; zI`v@Xt5veao<`j@v)NAku#Ng!*iL?!s>0v-Or2W#VV?@U_@~~~&^Q#8p3b25aH;Wr z&FBgX27}So9AK<15?E<|>eML`EbHp)#W!sV=N)_VEuGs~qZ*pH&(1D|o12@O5u!B& zB**(J^m3h(dO53s`L!yy zUINt(yp-V}2FXlF(A*MS_4)H1+h)8>ZEp;H{RHao$1F#powWV=b-tV<@6S45ba82E zS~ULeT~rQ*gFEY_7%|-4bMwb~6+LhNy?Jh93%O8%R(>WXShjw2FMU7`N6|PgeVREv{b!zFljzt#K z!Nhub6==l!u2H%fZU9$XE2^Ntm}AH16ML;JEj8BMP>;e7Qlo;L+&NOU=RbP%h?$&B z%Ym8Vf>EY!Y8t)Z!fCqu4_&vOK7bXPNG2wG zZ~pPexS$~J6==kO>dL|>sTF`C_C{fAu!v~GyzabWrL3(t1MLq726k-`UHGoF`1Fvd z=*o#=rSsDGc4PeJ&y||0bm#(&iXKtqO6w#Wl;PM5H3!M&;)*Zs|v-gU)pyp9NJlHC6x*fSN({DcB@Nk?HB_0@wGML)%q|)?hKz)gxkJ z)-bfR*44mYXBZo&eEH%mzGX{$aBpLW^Uc8fgS+ns2Ciy!fBOP2*lre;#Vg0BURjx6 ztTewn?|WmjnDc{1=QoOKK6c;uI51S)omt#2-JESh`VNogUg+-RL+A zH8)^MNs~b`NW)o)hWp1f>G%!lh!%T1Jo1oMv@|s%(J0dvcsR5Sy$s@d*u-cX@KuNw ztHUt_di%u-m1c$23z&(Cl>~ydv{qBlX6bww=Sxj!p@1vhKgW@cgGlNE%kBUEFMM|bt#KnKm$mP->tkDp%$=~9!u~_NP zm)ie9GyG?U!Y{rTX?Oq~B5m-%8K@ZyhM$q=uqpoyd5;j{+SIZI@`mQ(nEystF(R?m z_Vr72jX0vMUZ4gRDh?CJ64XF@Up4x*sDGoq!{nYW)f1e1;9j!irFom9UP(y_cT!T4 zGMt3PlmZ@yR4mDI?YWJVp8nG>(=jZ`vCoeL1q8~FCpd9<@-j@fs)mLngY7O|FdX{& zAbgJEVSL2NW9aQUW>QiW@wU1;W*M4)>F8TS z))AR(Jv}`wJv~9X|M~5)o7Lc7plgMhmuG0~IUG%=`&LMM8bCbOF@YmTcJ)(l-jw+* zrC~Ktx6^Pgu35rs;yxYdMj4t<$B;)xN2_XU2Qsy$Wn1}af>t*AvigT zot>TBM}~V%ot&K7F02jxeroiF8i(GXO4pF11JSyjbS)F=u46JaOjy1GDD)NQ(HB-g z(v4@&C1Z1#1}vw6b_R9%WK;jsKA;G4e6Lgkpa3`SLxj*NB4DhNo110$&YnBRFf>g1 z_|c4^qa##aUVfX!Qs7@OlQ8hk*W0fAOea@T^1cL-l?y+-9aNi6ArM$>VA0WGKt?Kz z&T}|8gnY2fWz<}X%L6$GXkY@$%QZ~z>0Z$`GD;>7znIg)#)h%x#(Wy#>)Afs-zY09 zldVC0yU*dNMA$gFsWwXe&|!SfdBE>Uy2cOi9rJ zFy>yiY(V)~x6}4wrAGIaNWuUG_J{F8=1l?)e+(0Tt+*w{zLiVX2?7|)p2malwk4{3oU5Wi;0O*Hv!*nhWyX!0Vym&t}H1t4s-sgf}{#I;+H14;B+aF%u zq!FF__qFC%>| zGO~OF3+R4I49Lvvz}BVCIqGai6SiP^eSN~&vok_=9Mg!`QlL{*^p1&0e2T-n$1|yz zBIVP8)?~DCw?pnEEd$qxHOR}$qn%3!r@%m_T$Fb#i#Y~R=h3HALBH^$0DVzZe3#kX zk064rJ@NURbSrgE(!sg$HdU{3m;AmJH#OhW-)YX9djtm}&E;oJZODE$d3>F7K)m>3!wj^J#HV_P|Y$d5;MQ*SDrjl%i0c(8TwVX);KKfK%l zM@I{}4oD}ax?1~+ww@jnYJDrL4^|awDr(^WDyT&KF{j!02S-5ll76c|T*mEJs5k#bPy#?|ov?5f91y3mp(C<{kO&`+kB?tef@lrcfj*)d^KZWSrVjc# zb#6oMQH5$!g)HrB1?&A{|KMPUc2H0d)DBLl7GzaamX$>q{7rb+n+D+}HB|#?`meJe z4&eZ7b)~ z+bQLEI;EKqg~W~5zPV*B=~bD>6gde|qd z0mwyUg+HR`zm{YO6hLKUj!{~`c~^7ve^3KVASY>+7dEVKLPW$aNRotO{{I9LQBf19s*^x&q)Dw3E*OijKYa5K dg{kgIw(4m84n-@D6562hvMPI$cmH(qKL97hP&EJm literal 0 HcmV?d00001 diff --git a/packages/devextreme/js/__internal/scheduler/appointments/rendering_strategies/m_strategy_vertical.ts b/packages/devextreme/js/__internal/scheduler/appointments/rendering_strategies/m_strategy_vertical.ts index 127723415116..461f9c290386 100644 --- a/packages/devextreme/js/__internal/scheduler/appointments/rendering_strategies/m_strategy_vertical.ts +++ b/packages/devextreme/js/__internal/scheduler/appointments/rendering_strategies/m_strategy_vertical.ts @@ -207,8 +207,8 @@ class VerticalRenderingStrategy extends BaseAppointmentsStrategy { vMax, vMin, } = appointmentSettings; - - const maxHeight = this.isVirtualScrolling ? vMax : vMax - vMin; + const { bottomVirtualRowHeight = 0 } = this.viewDataProvider.getViewOptions(); + const maxHeight = this.isVirtualScrolling ? vMax + bottomVirtualRowHeight : vMax - vMin; const hasTailPart = this.options.endViewDate > appointmentSettings.info.appointment.endDate; let left = Math.round(appointmentSettings.left + offset);