@@ -5,7 +5,7 @@ import Callbacks from '@js/core/utils/callbacks';
5
5
// @ts -expect-error
6
6
import { grep } from '@js/core/utils/common' ;
7
7
import { each } from '@js/core/utils/iterator' ;
8
- import { isDefined , isFunction } from '@js/core/utils/type' ;
8
+ import { isFunction } from '@js/core/utils/type' ;
9
9
import { hasWindow } from '@js/core/utils/window' ;
10
10
import messageLocalization from '@js/localization/message' ;
11
11
import errors from '@js/ui/widget/ui.errors' ;
@@ -16,11 +16,11 @@ import type {
16
16
View as ViewType ,
17
17
ViewController as ViewControllerType ,
18
18
} from './m_types' ;
19
+ import type { ViewsWithBorder } from './views/utils/update_views_borders' ;
20
+ import { updateViewsBorders } from './views/utils/update_views_borders' ;
19
21
20
22
const WIDGET_WITH_LEGACY_CONTAINER_NAME = 'dxDataGrid' ;
21
23
22
- const BORDERED_VIEWS = [ 'columnHeadersView' , 'rowsView' , 'footerView' , 'filterPanelView' ] ;
23
-
24
24
const ModuleItem = Class . inherit ( {
25
25
_endUpdateCore ( ) { } ,
26
26
@@ -262,83 +262,13 @@ const View: ModuleType<ViewType> = ModuleItem.inherit({
262
262
return this . component . _views [ name ] ;
263
263
} ,
264
264
265
- getFirstVisibleViewElement ( ) {
266
- const columnHeaderView = this . getView ( 'columnHeadersView' ) ;
267
- if ( columnHeaderView && columnHeaderView . isVisible ( ) ) {
268
- return columnHeaderView . element ( ) ;
269
- }
270
-
271
- return this . getView ( 'rowsView' ) . element ( ) ;
272
- } ,
273
-
274
- getLastVisibleViewElement ( ) {
275
- const filterPanelView = this . getView ( 'filterPanelView' ) ;
276
- if ( filterPanelView && filterPanelView . isVisible ( ) ) {
277
- return filterPanelView . element ( ) ;
278
- }
279
-
280
- const footerView = this . getView ( 'footerView' ) ;
281
- if ( footerView && footerView . isVisible ( ) ) {
282
- return footerView . element ( ) ;
283
- }
284
-
285
- return this . getView ( 'rowsView' ) . element ( ) ;
286
- } ,
287
-
288
- getViewElementWithClass ( className ) {
289
- const borderedView = BORDERED_VIEWS . map ( ( viewName ) => this . getView ( viewName ) )
290
- . filter ( ( view ) => view && view . element ( ) )
291
- . find ( ( view ) => view . element ( ) . hasClass ( className ) ) ;
292
-
293
- return borderedView && borderedView . element ( ) ;
294
- } ,
295
-
296
- updateBorderedViews ( ) {
297
- const BORDERED_TOP_VIEW_CLASS = 'dx-bordered-top-view' ;
298
- const BORDERED_BOTTOM_VIEW_CLASS = 'dx-bordered-bottom-view' ;
299
-
300
- const oldFirstBorderedElement = this . getViewElementWithClass ( BORDERED_TOP_VIEW_CLASS ) ;
301
- const oldLastBorderedElement = this . getViewElementWithClass ( BORDERED_BOTTOM_VIEW_CLASS ) ;
302
- const newFirstBorderedElement = this . getFirstVisibleViewElement ( ) ;
303
- const newLastBorderedElement = this . getLastVisibleViewElement ( ) ;
304
-
305
- if ( oldFirstBorderedElement && ! oldFirstBorderedElement . is ( newFirstBorderedElement ) ) {
306
- oldFirstBorderedElement . removeClass ( BORDERED_TOP_VIEW_CLASS ) ;
307
- }
308
-
309
- if ( oldLastBorderedElement && ! oldLastBorderedElement . is ( newLastBorderedElement ) ) {
310
- oldLastBorderedElement . removeClass ( BORDERED_BOTTOM_VIEW_CLASS ) ;
311
- }
312
-
313
- if ( ! newFirstBorderedElement . hasClass ( BORDERED_TOP_VIEW_CLASS ) ) {
314
- newFirstBorderedElement . addClass ( BORDERED_TOP_VIEW_CLASS ) ;
315
- }
316
-
317
- if ( ! newLastBorderedElement . hasClass ( BORDERED_BOTTOM_VIEW_CLASS ) ) {
318
- newLastBorderedElement . addClass ( BORDERED_BOTTOM_VIEW_CLASS ) ;
319
- }
320
- } ,
321
-
322
- isViewsStateValid ( ) {
323
- if ( this . component . _views ) {
324
- if ( ! BORDERED_VIEWS . includes ( this . name ) ) {
325
- return false ;
326
- }
327
-
328
- const rowsView = this . getView ( 'rowsView' ) ;
329
- if ( ! ( rowsView && isDefined ( rowsView . element ?.( ) ) ) ) {
330
- return false ;
331
- }
332
-
333
- const optionalViews = [ 'columnHeadersView' , 'footerView' , 'filterPanelView' ]
334
- . map ( ( viewName ) => this . getView ( viewName ) )
335
- . filter ( ( view ) => view && view . isVisible ?.( ) ) ;
336
- const isOptionalViewsRendered = optionalViews . every ( ( view ) => view && isDefined ( view . element ( ) ) ) ;
337
-
338
- return isOptionalViewsRendered ;
339
- }
340
-
341
- return false ;
265
+ _getBorderedViews ( ) : ViewsWithBorder {
266
+ return {
267
+ columnHeadersView : this . component . _views . columnHeadersView ,
268
+ rowsView : this . component . _views . rowsView ,
269
+ filterPanelView : this . component . _views . filterPanelView ,
270
+ footerView : this . component . _views . footerView ,
271
+ } ;
342
272
} ,
343
273
344
274
render ( $parent , options ) {
@@ -356,8 +286,8 @@ const View: ModuleType<ViewType> = ModuleItem.inherit({
356
286
357
287
$element . toggleClass ( 'dx-hidden' , ! isVisible ) ;
358
288
359
- if ( this . isViewsStateValid ( ) ) {
360
- this . updateBorderedViews ( ) ;
289
+ if ( this . component . _views ) {
290
+ updateViewsBorders ( this . name , this . _getBorderedViews ( ) ) ;
361
291
}
362
292
363
293
if ( isVisible ) {
0 commit comments