@vaadin/grid
Advanced tools
Comparing version 24.5.6 to 24.5.7
{ | ||
"name": "@vaadin/grid", | ||
"version": "24.5.6", | ||
"version": "24.5.7", | ||
"publishConfig": { | ||
@@ -49,15 +49,15 @@ "access": "public" | ||
"@polymer/polymer": "^3.0.0", | ||
"@vaadin/a11y-base": "~24.5.6", | ||
"@vaadin/checkbox": "~24.5.6", | ||
"@vaadin/component-base": "~24.5.6", | ||
"@vaadin/lit-renderer": "~24.5.6", | ||
"@vaadin/text-field": "~24.5.6", | ||
"@vaadin/vaadin-lumo-styles": "~24.5.6", | ||
"@vaadin/vaadin-material-styles": "~24.5.6", | ||
"@vaadin/vaadin-themable-mixin": "~24.5.6", | ||
"@vaadin/a11y-base": "~24.5.7", | ||
"@vaadin/checkbox": "~24.5.7", | ||
"@vaadin/component-base": "~24.5.7", | ||
"@vaadin/lit-renderer": "~24.5.7", | ||
"@vaadin/text-field": "~24.5.7", | ||
"@vaadin/vaadin-lumo-styles": "~24.5.7", | ||
"@vaadin/vaadin-material-styles": "~24.5.7", | ||
"@vaadin/vaadin-themable-mixin": "~24.5.7", | ||
"lit": "^3.0.0" | ||
}, | ||
"devDependencies": { | ||
"@vaadin/chai-plugins": "~24.5.6", | ||
"@vaadin/testing-helpers": "^1.0.0", | ||
"@vaadin/chai-plugins": "~24.5.7", | ||
"@vaadin/testing-helpers": "^1.1.0", | ||
"sinon": "^18.0.0" | ||
@@ -69,3 +69,3 @@ }, | ||
], | ||
"gitHead": "2c20ec16149e8016e0733a80e349231da13660bc" | ||
"gitHead": "f04f4777d633ebf85368eb36545105b0e5b93731" | ||
} |
@@ -142,6 +142,2 @@ /** | ||
super.connectedCallback(); | ||
// Chromium based browsers cannot properly generate drag images for elements | ||
// that have children with massive heights. This workaround prevents crashes | ||
// and performance issues by excluding the items from the drag image. | ||
// https://github.com/vaadin/web-components/issues/7985 | ||
document.addEventListener('dragstart', this.__onDocumentDragStart, { capture: true }); | ||
@@ -316,21 +312,20 @@ } | ||
/** @private */ | ||
/** | ||
* Webkit-based browsers have issues with generating drag images | ||
* for elements that have children with massive heights. Chromium | ||
* browsers crash, while Safari experiences significant performance | ||
* issues. To mitigate these issues, we hide the scroller element | ||
* when drag starts to remove it from the drag image. | ||
* | ||
* Related issues: | ||
* - https://github.com/vaadin/web-components/issues/7985 | ||
* - https://issues.chromium.org/issues/383356871 | ||
* | ||
* @private | ||
*/ | ||
__onDocumentDragStart(e) { | ||
// The dragged element can be the element itself or a parent of the element | ||
if (!e.target.contains(this)) { | ||
return; | ||
} | ||
// The threshold value 20000 provides a buffer to both | ||
// - avoid the crash and the performance issues | ||
// - unnecessarily avoid excluding items from the drag image | ||
if (this.$.items.offsetHeight > 20000) { | ||
const initialItemsMaxHeight = this.$.items.style.maxHeight; | ||
const initialTableOverflow = this.$.table.style.overflow; | ||
// Momentarily hides the items until the browser starts generating the | ||
// drag image. | ||
this.$.items.style.maxHeight = '0'; | ||
this.$.table.style.overflow = 'hidden'; | ||
if (e.target.contains(this) && this.$.table.scrollHeight > 20000) { | ||
this.$.scroller.style.display = 'none'; | ||
requestAnimationFrame(() => { | ||
this.$.items.style.maxHeight = initialItemsMaxHeight; | ||
this.$.table.style.overflow = initialTableOverflow; | ||
this.$.scroller.style.display = ''; | ||
}); | ||
@@ -337,0 +332,0 @@ } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
678799
16301