UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

95 lines (94 loc) 2.8 kB
/** * DevExtreme (esm/__internal/ui/scroll_view/utils/get_relative_offset.test.js) * Version: 25.2.7 * Build date: Tue May 05 2026 * * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import { describe, expect, it } from "@jest/globals"; import { getRelativeOffset } from "./get_relative_offset"; describe("getRelativeOffset(targetElementClass, sourceElement)", () => { it("should return correct relative offset", () => { const targetElement = { getBoundingClientRect: () => ({ left: -70, top: 20 }), classList: { contains: elementClass => "dx-scrollable-content" === elementClass } }; const sourceEl = { getBoundingClientRect: () => ({ left: 35, top: 125 }), offsetParent: targetElement, classList: { contains: () => false } }; expect(getRelativeOffset(targetElement, sourceEl)).toEqual({ left: 105, top: 105 }) }); it("should not cause any errors if element not have offsetParent", () => { const sourceEl = { getBoundingClientRect: () => ({ left: 35, top: 125 }), classList: { contains: () => false } }; expect(getRelativeOffset.bind([({}, sourceEl)])).not.toThrow(); expect(getRelativeOffset("", sourceEl)).toEqual({ top: 0, left: 0 }) }); it("should return correct relative offset with intermediate element", () => { const targetElement = { getBoundingClientRect: () => ({ left: 8, top: 326 }), classList: { contains: () => true } }; const intermediateElement = { getBoundingClientRect: () => ({ left: 8, top: 376 }), offsetParent: targetElement, classList: { contains: () => false } }; const sourceEl = { getBoundingClientRect: () => ({ left: 8, top: 376 }), offsetParent: intermediateElement, classList: { contains: () => false } }; expect(getRelativeOffset(targetElement, sourceEl)).toEqual({ left: 0, top: 50 }) }) });