Skip to content

Commit 64ab684

Browse files
feat(ui5-popover): rename property and add test
1 parent 23c8047 commit 64ab684

File tree

3 files changed

+30
-11
lines changed

3 files changed

+30
-11
lines changed

packages/main/src/Popover.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -198,13 +198,13 @@ class Popover extends Popup {
198198
* close automatically when the opener is moved on the page.
199199
*
200200
* @type {boolean}
201-
* @name sap.ui.webc.main.Popover.prototype.autoCloseOnScroll
201+
* @name sap.ui.webc.main.Popover.prototype.closeOnScroll
202202
* @defaultvalue false
203203
* @public
204204
* @since 1.18.0
205205
*/
206206
@property({ type: Boolean })
207-
autoCloseOnScroll!: boolean;
207+
closeOnScroll!: boolean;
208208

209209
/**
210210
* Defines the ID or DOM Reference of the element that the popover is shown at
@@ -423,18 +423,19 @@ class Popover extends Popup {
423423
_show() {
424424
let placement;
425425
const popoverSize = this.getPopoverSize();
426+
const prevOpenerRect = this._openerRect!;
426427
const openerRect = this._opener!.getBoundingClientRect();
427428

428429
if (popoverSize.width === 0 || popoverSize.height === 0) {
429430
// size can not be determined properly at this point, popover will be shown with the next reposition
430431
return;
431432
}
432433

433-
if (this.autoCloseOnScroll) {
434-
if (Math.abs(this._openerRect!.left - openerRect.left) > followOfTolerance
435-
|| Math.abs(this._openerRect!.top - openerRect.top) > followOfTolerance
436-
|| Math.abs(this._openerRect!.right - openerRect.right) > followOfTolerance
437-
|| Math.abs(this._openerRect!.bottom - openerRect.bottom) > followOfTolerance) {
434+
if (this.closeOnScroll) {
435+
if (Math.abs(prevOpenerRect.left - openerRect.left) > followOfTolerance
436+
|| Math.abs(prevOpenerRect.top - openerRect.top) > followOfTolerance
437+
|| Math.abs(prevOpenerRect.right - openerRect.right) > followOfTolerance
438+
|| Math.abs(prevOpenerRect.bottom - openerRect.bottom) > followOfTolerance) {
438439
return this.close();
439440
}
440441
}

packages/main/test/pages/Popover.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@
124124
Open Big Popover
125125
</ui5-button>
126126

127-
<ui5-popover placement-type="Bottom" _prevent-reposition-and-close id="big-popover" header-text="hello world">
127+
<ui5-popover placement-type="Bottom" id="big-popover" header-text="hello world">
128128
<ui5-list id="bigList"></ui5-list>
129129
</ui5-popover>
130130

@@ -188,7 +188,7 @@
188188

189189
<ui5-button id="btnPopAutoCloseOnScroll">Auto close on scroll</ui5-button>
190190

191-
<ui5-popover id="popAutoCloseOnScroll" auto-close-on-scroll>
191+
<ui5-popover id="popAutoCloseOnScroll" close-on-scroll>
192192
Auto close on scroll
193193
</ui5-popover>
194194

packages/main/test/specs/Popover.spec.js

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,24 @@ describe("Popover general interaction", () => {
7777
// await browser.$("#btn").scrollIntoView();
7878
// });
7979

80+
it("tests if popover auto closes on scroll", async () => {
81+
const btnOpenPopover = await browser.$("#btnPopAutoCloseOnScroll");
82+
83+
await btnOpenPopover.click();
84+
85+
const popover = await browser.$("#popAutoCloseOnScroll");
86+
assert.ok(await popover.isDisplayedInViewport(), "Popover is opened.");
87+
88+
const top = await browser.$("html").getProperty("scrollTop");
89+
await browser.$("html").setProperty("scrollTop", top + 40);
90+
91+
await browser.pause(500);
92+
93+
assert.notOk(await popover.isDisplayedInViewport(), "Popover is closed.");
94+
95+
await browser.$("html").setProperty("scrollTop", top);
96+
});
97+
8098
it("tests popover does not close with opener", async () => {
8199
const popover = await browser.$("#quickViewCard");
82100
const btnOpenPopover = await browser.$("#btnQuickViewCardOpener");
@@ -474,7 +492,7 @@ describe("Horizontal Alignment", () => {
474492
await browser.$("#horizontalAlignBtn").click();
475493
const popover = await browser.$("#popoverHorizontalAlign");
476494
const opener = await browser.$("#targetOpener");
477-
495+
478496
assert.ok(await isHorizontallyCentered(popover, opener), `Popover should be centered`);
479497
});
480498

@@ -492,7 +510,7 @@ describe("Horizontal Alignment", () => {
492510
await browser.$("#horizontalAlignBtn").click();
493511
const popover = await browser.$("#popoverHorizontalAlign");
494512
const opener = await browser.$("#targetOpener");
495-
513+
496514
assert.ok(await isHorizontallyRightAligned(popover, opener), `Popover should be right aligned`);
497515
});
498516

0 commit comments

Comments
 (0)