UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

95 lines (94 loc) 2.81 kB
/** * DevExtreme (esm/__internal/ui/scroll_view/utils/get_relative_offset.test.js) * Version: 24.2.6 * Build date: Mon Mar 17 2025 * * Copyright (c) 2012 - 2025 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 }) })) }));