@vaadin/grid 23.1.7 → 23.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +10 -10
- package/src/vaadin-grid-column-reordering-mixin.js +22 -7
- package/src/vaadin-grid-drag-and-drop-mixin.js +6 -1
- package/src/vaadin-grid.js +3 -1
- package/theme/lumo/vaadin-grid-styles.js +1 -5
- package/theme/lumo/vaadin-grid-tree-toggle-styles.js +1 -1
- package/theme/material/vaadin-grid-styles.js +2 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaadin/grid",
|
|
3
|
-
"version": "23.1.
|
|
3
|
+
"version": "23.1.9",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -43,20 +43,20 @@
|
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@open-wc/dedupe-mixin": "^1.3.0",
|
|
45
45
|
"@polymer/polymer": "^3.0.0",
|
|
46
|
-
"@vaadin/checkbox": "~23.1.
|
|
47
|
-
"@vaadin/component-base": "~23.1.
|
|
48
|
-
"@vaadin/lit-renderer": "~23.1.
|
|
49
|
-
"@vaadin/text-field": "~23.1.
|
|
50
|
-
"@vaadin/vaadin-lumo-styles": "~23.1.
|
|
51
|
-
"@vaadin/vaadin-material-styles": "~23.1.
|
|
52
|
-
"@vaadin/vaadin-themable-mixin": "~23.1.
|
|
46
|
+
"@vaadin/checkbox": "~23.1.9",
|
|
47
|
+
"@vaadin/component-base": "~23.1.9",
|
|
48
|
+
"@vaadin/lit-renderer": "~23.1.9",
|
|
49
|
+
"@vaadin/text-field": "~23.1.9",
|
|
50
|
+
"@vaadin/vaadin-lumo-styles": "~23.1.9",
|
|
51
|
+
"@vaadin/vaadin-material-styles": "~23.1.9",
|
|
52
|
+
"@vaadin/vaadin-themable-mixin": "~23.1.9"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@esm-bundle/chai": "^4.3.4",
|
|
56
|
-
"@vaadin/polymer-legacy-adapter": "~23.1.
|
|
56
|
+
"@vaadin/polymer-legacy-adapter": "~23.1.9",
|
|
57
57
|
"@vaadin/testing-helpers": "^0.3.2",
|
|
58
58
|
"lit": "^2.0.0",
|
|
59
59
|
"sinon": "^13.0.2"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "ad8461e09f049c3f04f50278d38d0f5a98604904"
|
|
62
62
|
}
|
|
@@ -161,7 +161,23 @@ export const ColumnReorderingMixin = (superClass) =>
|
|
|
161
161
|
this._isSwapAllowed(this._draggedColumn, targetColumn) &&
|
|
162
162
|
this._isSwappableByPosition(targetColumn, e.detail.x)
|
|
163
163
|
) {
|
|
164
|
-
|
|
164
|
+
// Get the column header level of the target column (and the dragged column)
|
|
165
|
+
const columnTreeLevel = this._columnTree.findIndex((level) => level.includes(targetColumn));
|
|
166
|
+
// Get the columns on that level in visual order
|
|
167
|
+
const levelColumnsInOrder = this._getColumnsInOrder(columnTreeLevel);
|
|
168
|
+
|
|
169
|
+
// Index of the column being dragged
|
|
170
|
+
const startIndex = levelColumnsInOrder.indexOf(this._draggedColumn);
|
|
171
|
+
// Index of the column being dragged over
|
|
172
|
+
const endIndex = levelColumnsInOrder.indexOf(targetColumn);
|
|
173
|
+
|
|
174
|
+
// Direction of iteration
|
|
175
|
+
const direction = startIndex < endIndex ? 1 : -1;
|
|
176
|
+
|
|
177
|
+
// Iteratively swap all the columns from the dragged column to the target column
|
|
178
|
+
for (let i = startIndex; i !== endIndex; i += direction) {
|
|
179
|
+
this._swapColumnOrders(this._draggedColumn, levelColumnsInOrder[i + direction]);
|
|
180
|
+
}
|
|
165
181
|
}
|
|
166
182
|
|
|
167
183
|
this._updateGhostPosition(e.detail.x, this._touchDevice ? e.detail.y - 50 : e.detail.y);
|
|
@@ -192,15 +208,14 @@ export const ColumnReorderingMixin = (superClass) =>
|
|
|
192
208
|
}
|
|
193
209
|
|
|
194
210
|
/**
|
|
211
|
+
* Returns the columns (or column groups) on the specified header level in visual order.
|
|
212
|
+
* By default, the bottom level is used.
|
|
213
|
+
*
|
|
195
214
|
* @return {!Array<!GridColumn>}
|
|
196
215
|
* @protected
|
|
197
216
|
*/
|
|
198
|
-
_getColumnsInOrder() {
|
|
199
|
-
return this._columnTree
|
|
200
|
-
.slice(0)
|
|
201
|
-
.pop()
|
|
202
|
-
.filter((c) => !c.hidden)
|
|
203
|
-
.sort((b, a) => b._order - a._order);
|
|
217
|
+
_getColumnsInOrder(headerLevel = this._columnTree.length - 1) {
|
|
218
|
+
return this._columnTree[headerLevel].filter((c) => !c.hidden).sort((b, a) => b._order - a._order);
|
|
204
219
|
}
|
|
205
220
|
|
|
206
221
|
/**
|
|
@@ -17,6 +17,9 @@ const DropLocation = {
|
|
|
17
17
|
EMPTY: 'empty',
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
+
// Detects if the browser doesn't support HTML5 Drag & Drop API (and falls back to the @vaadin/vaadin-mobile-drag-drop polyfill)
|
|
21
|
+
const usesDnDPolyfill = !('draggable' in document.createElement('div'));
|
|
22
|
+
|
|
20
23
|
/**
|
|
21
24
|
* @polymerMixin
|
|
22
25
|
*/
|
|
@@ -133,9 +136,11 @@ export const DragAndDropMixin = (superClass) =>
|
|
|
133
136
|
|
|
134
137
|
const rowRect = row.getBoundingClientRect();
|
|
135
138
|
|
|
136
|
-
if (
|
|
139
|
+
if (usesDnDPolyfill) {
|
|
140
|
+
// The polyfill drag image is automatically centered so there is no need to adjust the position
|
|
137
141
|
e.dataTransfer.setDragImage(row);
|
|
138
142
|
} else {
|
|
143
|
+
// The native drag image needs to be shifted manually to compensate for the touch position offset
|
|
139
144
|
e.dataTransfer.setDragImage(row, e.clientX - rowRect.left, e.clientY - rowRect.top);
|
|
140
145
|
}
|
|
141
146
|
|
package/src/vaadin-grid.js
CHANGED
|
@@ -998,7 +998,9 @@ class Grid extends ElementMixin(
|
|
|
998
998
|
// Header and footer renderers
|
|
999
999
|
this._columnTree.forEach((level) => {
|
|
1000
1000
|
level.forEach((column) => {
|
|
1001
|
-
column._renderHeaderAndFooter
|
|
1001
|
+
if (column._renderHeaderAndFooter) {
|
|
1002
|
+
column._renderHeaderAndFooter();
|
|
1003
|
+
}
|
|
1002
1004
|
});
|
|
1003
1005
|
});
|
|
1004
1006
|
|
|
@@ -170,11 +170,7 @@ registerStyles(
|
|
|
170
170
|
border-radius: var(--lumo-border-radius-s) 0 0 var(--lumo-border-radius-s);
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
|
|
174
|
-
background: var(--lumo-primary-color-50pct);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
#scroller:not([ios]) [part~='row'][dragstart]:not([dragstart=''])::after {
|
|
173
|
+
#scroller [part~='row'][dragstart]:not([dragstart=''])::after {
|
|
178
174
|
display: block;
|
|
179
175
|
position: absolute;
|
|
180
176
|
left: var(--_grid-drag-start-x);
|
|
@@ -10,7 +10,7 @@ registerStyles(
|
|
|
10
10
|
--vaadin-grid-tree-toggle-level-offset: 2em;
|
|
11
11
|
align-items: center;
|
|
12
12
|
vertical-align: middle;
|
|
13
|
-
|
|
13
|
+
transform: translateX(calc(var(--lumo-space-s) * -1));
|
|
14
14
|
-webkit-tap-highlight-color: transparent;
|
|
15
15
|
}
|
|
16
16
|
|
|
@@ -221,11 +221,7 @@ registerStyles(
|
|
|
221
221
|
box-shadow: none !important;
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
-
|
|
225
|
-
background: var(--material-primary-color);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
#scroller:not([ios]) [part~='row'][dragstart]:not([dragstart=''])::after {
|
|
224
|
+
#scroller [part~='row'][dragstart]:not([dragstart=''])::after {
|
|
229
225
|
display: block;
|
|
230
226
|
position: absolute;
|
|
231
227
|
left: var(--_grid-drag-start-x);
|
|
@@ -262,7 +258,7 @@ registerStyles(
|
|
|
262
258
|
border-left: 1px solid var(--material-divider-color);
|
|
263
259
|
}
|
|
264
260
|
|
|
265
|
-
:host([dir='rtl']) #scroller
|
|
261
|
+
:host([dir='rtl']) #scroller [part~='row'][dragstart]:not([dragstart=''])::after {
|
|
266
262
|
left: auto;
|
|
267
263
|
right: var(--_grid-drag-start-x);
|
|
268
264
|
}
|