Skip to content

Commit 3ddb25f

Browse files
Fix T1259705 - DevExtreme - "t.getClientRects is not a function"
1 parent deafbfc commit 3ddb25f

File tree

5 files changed

+31
-7
lines changed

5 files changed

+31
-7
lines changed

packages/devextreme/js/core/renderer_base.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ const isVisible = function(_, element) {
465465
element = element.host ?? element;
466466

467467
if(!element.nodeType) return true;
468-
return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length);
468+
return !!(element.offsetWidth || element.offsetHeight || element.getClientRects?.().length);
469469
};
470470

471471
initRender.prototype.filter = function(selector) {

packages/devextreme/js/core/utils/position.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const getBoundingRect = (element) => {
1515
};
1616
}
1717

18-
return element.getBoundingClientRect();
18+
return element.getBoundingClientRect?.();
1919
};
2020

2121
export {

packages/devextreme/js/core/utils/shadow_dom.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export function addShadowDomStyles($element) {
6565
}
6666

6767
function isPositionInElementRectangle(element, x, y) {
68-
const rect = element.getBoundingClientRect();
68+
const rect = element.getBoundingClientRect?.();
6969

7070
return rect && x >= rect.left && x < rect.right && y >= rect.top && y < rect.bottom;
7171
}

packages/devextreme/js/core/utils/size.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,9 +188,9 @@ export const getVerticalOffsets = function(element, withMargins) {
188188

189189
export const getVisibleHeight = function(element) {
190190
if(element) {
191-
const boundingClientRect = element.getBoundingClientRect();
191+
const boundingClientRect = element.getBoundingClientRect?.();
192192

193-
if(boundingClientRect.height) {
193+
if(boundingClientRect?.height) {
194194
return boundingClientRect.height;
195195
}
196196
}
@@ -304,7 +304,7 @@ export const getWindowByElement = (el) => {
304304
};
305305

306306
export const getOffset = (el) => {
307-
if(!el.getClientRects().length) {
307+
if(!el.getClientRects?.().length) {
308308
return {
309309
top: 0,
310310
left: 0
Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,25 @@
1-
require('../DevExpress.ui/widget.markup.tests.js');
1+
import '../DevExpress.ui/widget.markup.tests.js';
2+
import $ from 'jquery';
3+
import Widget from 'ui/widget/ui.widget';
4+
import registerComponent from 'core/component_registrator';
5+
6+
const DxWidget = Widget.inherit({});
7+
registerComponent('dxWidget', DxWidget);
8+
9+
QUnit.module('Widgets in SSR mode', {}, () => {
10+
QUnit.test('checking visibility in SSR mode not throw errors (T1259705)', function(assert) {
11+
const TestWidget = Widget.inherit({});
12+
13+
const $element = $('#widget').dxWidget({ width: 0, height: 0 });
14+
15+
const component = new TestWidget($element, { visible: true });
16+
17+
// act
18+
component._isVisible();
19+
20+
// assert
21+
assert.ok(true);
22+
});
23+
});
24+
25+

0 commit comments

Comments
 (0)