Skip to content

Commit eac514b

Browse files
authored
fix(ui5-dialog): Texts are no longer blurred in Chromium-based browsers (#2417)
1 parent cd5fad2 commit eac514b

File tree

3 files changed

+49
-34
lines changed

3 files changed

+49
-34
lines changed

packages/main/src/Dialog.js

+48-30
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { isPhone, isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
2+
import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
23
import Popup from "./Popup.js";
34
import "@ui5/webcomponents-icons/dist/resize-corner.js";
45
import Icon from "./Icon.js";
@@ -152,6 +153,18 @@ const metadata = {
152153
* @public
153154
*/
154155
class Dialog extends Popup {
156+
constructor() {
157+
super();
158+
159+
this._screenResizeHandler = this._center.bind(this);
160+
161+
this._dragMouseMoveHandler = this._onDragMouseMove.bind(this);
162+
this._dragMouseUpHandler = this._onDragMouseUp.bind(this);
163+
164+
this._resizeMouseMoveHandler = this._onResizeMouseMove.bind(this);
165+
this._resizeMouseUpHandler = this._onResizeMouseUp.bind(this);
166+
}
167+
155168
static get metadata() {
156169
return metadata;
157170
}
@@ -197,6 +210,11 @@ class Dialog extends Popup {
197210
};
198211
}
199212

213+
show() {
214+
super.show();
215+
this._center();
216+
}
217+
200218
_clamp(val, min, max) {
201219
return Math.min(Math.max(val, min), max);
202220
}
@@ -208,16 +226,33 @@ class Dialog extends Popup {
208226
}
209227

210228
onEnterDOM() {
211-
this._dragMouseMoveHandler = this._onDragMouseMove.bind(this);
212-
this._dragMouseUpHandler = this._onDragMouseUp.bind(this);
213-
214-
this._resizeMouseMoveHandler = this._onResizeMouseMove.bind(this);
215-
this._resizeMouseUpHandler = this._onResizeMouseUp.bind(this);
229+
ResizeHandler.register(this, this._screenResizeHandler);
230+
ResizeHandler.register(document.body, this._screenResizeHandler);
216231
}
217232

218233
onExitDOM() {
219-
this._dragMouseMoveHandler = null;
220-
this._dragMouseUpHandler = null;
234+
ResizeHandler.deregister(this, this._screenResizeHandler);
235+
ResizeHandler.deregister(document.body, this._screenResizeHandler);
236+
}
237+
238+
_center() {
239+
const height = window.innerHeight - this.offsetHeight,
240+
width = window.innerWidth - this.offsetWidth;
241+
242+
Object.assign(this.style, {
243+
top: `${Math.round(height / 2)}px`,
244+
left: `${Math.round(width / 2)}px`,
245+
});
246+
}
247+
248+
_revertSize() {
249+
Object.assign(this.style, {
250+
top: "",
251+
left: "",
252+
width: "",
253+
height: "",
254+
});
255+
this.removeEventListener("ui5-before-close", this._revertSize);
221256
}
222257

223258
/**
@@ -246,7 +281,6 @@ class Dialog extends Popup {
246281
} = window.getComputedStyle(this);
247282

248283
Object.assign(this.style, {
249-
transform: "none",
250284
top: `${top}px`,
251285
left: `${left}px`,
252286
width: `${Math.round(Number.parseFloat(width) * 100) / 100}px`,
@@ -286,25 +320,18 @@ class Dialog extends Popup {
286320
}
287321

288322
_attachDragHandlers() {
323+
ResizeHandler.deregister(this, this._screenResizeHandler);
324+
ResizeHandler.deregister(document.body, this._screenResizeHandler);
325+
289326
window.addEventListener("mousemove", this._dragMouseMoveHandler);
290327
window.addEventListener("mouseup", this._dragMouseUpHandler);
291-
this.addEventListener("ui5-before-close", this._recenter);
292328
}
293329

294330
_detachDragHandlers() {
295331
window.removeEventListener("mousemove", this._dragMouseMoveHandler);
296332
window.removeEventListener("mouseup", this._dragMouseUpHandler);
297333
}
298334

299-
_recenter() {
300-
Object.assign(this.style, {
301-
top: "",
302-
left: "",
303-
transform: "",
304-
});
305-
this.removeEventListener("ui5-before-close", this._recenter);
306-
}
307-
308335
_onResizeMouseDown(event) {
309336
if (!(this.resizable && this.onDesktop)) {
310337
return;
@@ -333,7 +360,6 @@ class Dialog extends Popup {
333360
this._minHeight = Number.parseFloat(minHeight);
334361

335362
Object.assign(this.style, {
336-
transform: "none",
337363
top: `${top}px`,
338364
left: `${left}px`,
339365
});
@@ -394,6 +420,9 @@ class Dialog extends Popup {
394420
}
395421

396422
_attachResizeHandlers() {
423+
ResizeHandler.deregister(this, this._screenResizeHandler);
424+
ResizeHandler.deregister(document.body, this._screenResizeHandler);
425+
397426
window.addEventListener("mousemove", this._resizeMouseMoveHandler);
398427
window.addEventListener("mouseup", this._resizeMouseUpHandler);
399428
this.addEventListener("ui5-before-close", this._revertSize);
@@ -403,17 +432,6 @@ class Dialog extends Popup {
403432
window.removeEventListener("mousemove", this._resizeMouseMoveHandler);
404433
window.removeEventListener("mouseup", this._resizeMouseUpHandler);
405434
}
406-
407-
_revertSize() {
408-
Object.assign(this.style, {
409-
top: "",
410-
left: "",
411-
width: "",
412-
height: "",
413-
transform: "",
414-
});
415-
this.removeEventListener("ui5-before-close", this._revertSize);
416-
}
417435
}
418436

419437
Dialog.define();

packages/main/src/themes/Dialog.css

-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
:host {
2-
top: 50%;
3-
left: 50%;
4-
transform: translate(-50%, -50%);
52
min-width: 20rem;
63
min-height: 6rem;
74
box-shadow: var(--sapContent_Shadow3);

packages/main/test/pages/DialogLifecycle.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
<template id="dt">
3232
<ui5-dialog id="hello-dialog" header-text="Dialogs are easy!">
33-
<div stype="padding: 2rem; display:flex; justify-content: center;">
33+
<div style="padding: 2rem; display:flex; justify-content: center;">
3434
Hello World!
3535
<ui5-button id="closeDialogButton">Dismiss</ui5-button>
3636
</div>

0 commit comments

Comments
 (0)