@vaadin/grid 25.1.0-beta1 → 25.1.0-beta2
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/custom-elements.json +11 -99
- package/package.json +12 -12
- package/src/vaadin-grid-column-mixin.js +0 -8
- package/src/vaadin-grid-column-reordering-mixin.js +20 -1
- package/src/vaadin-grid-column-resizing-mixin.js +22 -2
- package/src/vaadin-grid-data-provider-mixin.js +0 -2
- package/src/vaadin-grid-keyboard-navigation-mixin.js +0 -1
- package/src/vaadin-grid-mixin.js +4 -1
- package/src/vaadin-grid-selection-column-base-mixin.js +21 -5
- package/src/vaadin-grid-sort-mixin.js +0 -2
- package/src/vaadin-grid-tree-toggle-mixin.js +0 -3
- package/web-types.json +238 -82
- package/web-types.lit.json +4 -4
package/custom-elements.json
CHANGED
|
@@ -204,24 +204,6 @@
|
|
|
204
204
|
"kind": "javascript-module",
|
|
205
205
|
"path": "src/vaadin-grid-active-item-mixin.js",
|
|
206
206
|
"declarations": [
|
|
207
|
-
{
|
|
208
|
-
"kind": "function",
|
|
209
|
-
"name": "isFocusable",
|
|
210
|
-
"parameters": [
|
|
211
|
-
{
|
|
212
|
-
"name": "target",
|
|
213
|
-
"type": {
|
|
214
|
-
"text": "!Element"
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
],
|
|
218
|
-
"return": {
|
|
219
|
-
"type": {
|
|
220
|
-
"text": "boolean"
|
|
221
|
-
}
|
|
222
|
-
},
|
|
223
|
-
"privacy": "protected"
|
|
224
|
-
},
|
|
225
207
|
{
|
|
226
208
|
"kind": "mixin",
|
|
227
209
|
"description": "",
|
|
@@ -264,14 +246,6 @@
|
|
|
264
246
|
}
|
|
265
247
|
],
|
|
266
248
|
"exports": [
|
|
267
|
-
{
|
|
268
|
-
"kind": "js",
|
|
269
|
-
"name": "isFocusable",
|
|
270
|
-
"declaration": {
|
|
271
|
-
"name": "isFocusable",
|
|
272
|
-
"module": "src/vaadin-grid-active-item-mixin.js"
|
|
273
|
-
}
|
|
274
|
-
},
|
|
275
249
|
{
|
|
276
250
|
"kind": "js",
|
|
277
251
|
"name": "ActiveItemMixin",
|
|
@@ -372,7 +346,8 @@
|
|
|
372
346
|
"text": "number"
|
|
373
347
|
},
|
|
374
348
|
"description": "Flex grow ratio for the column group as the sum of the ratios of its child columns.",
|
|
375
|
-
"attribute": "flex-grow"
|
|
349
|
+
"attribute": "flex-grow",
|
|
350
|
+
"readonly": true
|
|
376
351
|
},
|
|
377
352
|
{
|
|
378
353
|
"kind": "field",
|
|
@@ -537,7 +512,8 @@
|
|
|
537
512
|
"text": "string"
|
|
538
513
|
},
|
|
539
514
|
"description": "Width of the column group as the sum of the widths of its child columns.",
|
|
540
|
-
"attribute": "width"
|
|
515
|
+
"attribute": "width",
|
|
516
|
+
"readonly": true
|
|
541
517
|
}
|
|
542
518
|
],
|
|
543
519
|
"attributes": [
|
|
@@ -733,6 +709,7 @@
|
|
|
733
709
|
},
|
|
734
710
|
"description": "Flex grow ratio for the column group as the sum of the ratios of its child columns.",
|
|
735
711
|
"attribute": "flex-grow",
|
|
712
|
+
"readonly": true,
|
|
736
713
|
"inheritedFrom": {
|
|
737
714
|
"name": "GridColumnGroupMixin",
|
|
738
715
|
"module": "src/vaadin-grid-column-group-mixin.js"
|
|
@@ -902,6 +879,7 @@
|
|
|
902
879
|
},
|
|
903
880
|
"description": "Width of the column group as the sum of the widths of its child columns.",
|
|
904
881
|
"attribute": "width",
|
|
882
|
+
"readonly": true,
|
|
905
883
|
"inheritedFrom": {
|
|
906
884
|
"name": "GridColumnGroupMixin",
|
|
907
885
|
"module": "src/vaadin-grid-column-group-mixin.js"
|
|
@@ -2410,7 +2388,8 @@
|
|
|
2410
2388
|
"text": "boolean"
|
|
2411
2389
|
},
|
|
2412
2390
|
"description": "`true` while data is being requested from the data provider.",
|
|
2413
|
-
"attribute": "loading"
|
|
2391
|
+
"attribute": "loading",
|
|
2392
|
+
"readonly": true
|
|
2414
2393
|
},
|
|
2415
2394
|
{
|
|
2416
2395
|
"kind": "field",
|
|
@@ -3840,16 +3819,7 @@
|
|
|
3840
3819
|
"name": "KeyboardNavigationMixin",
|
|
3841
3820
|
"members": [],
|
|
3842
3821
|
"events": [],
|
|
3843
|
-
"attributes": [
|
|
3844
|
-
{
|
|
3845
|
-
"name": "interacting",
|
|
3846
|
-
"type": {
|
|
3847
|
-
"text": "boolean"
|
|
3848
|
-
},
|
|
3849
|
-
"description": "Indicates whether the grid is currently in interaction mode.\nIn interaction mode the user is currently interacting with a control,\nsuch as an input or a select, within a cell.\nIn interaction mode keyboard navigation between cells is disabled.\nInteraction mode also prevents the focus target cell of that section of\nthe grid from receiving focus, allowing the user to switch focus to\ncontrols in adjacent cells, rather than focussing the outer cell\nitself.",
|
|
3850
|
-
"fieldName": "interacting"
|
|
3851
|
-
}
|
|
3852
|
-
],
|
|
3822
|
+
"attributes": [],
|
|
3853
3823
|
"parameters": [
|
|
3854
3824
|
{
|
|
3855
3825
|
"name": "superClass"
|
|
@@ -4246,6 +4216,7 @@
|
|
|
4246
4216
|
},
|
|
4247
4217
|
"description": "`true` while data is being requested from the data provider.",
|
|
4248
4218
|
"attribute": "loading",
|
|
4219
|
+
"readonly": true,
|
|
4249
4220
|
"inheritedFrom": {
|
|
4250
4221
|
"name": "DataProviderMixin",
|
|
4251
4222
|
"module": "src/vaadin-grid-data-provider-mixin.js"
|
|
@@ -4584,22 +4555,6 @@
|
|
|
4584
4555
|
"module": "src/vaadin-grid-drag-and-drop-mixin.js"
|
|
4585
4556
|
}
|
|
4586
4557
|
},
|
|
4587
|
-
{
|
|
4588
|
-
"name": "interacting",
|
|
4589
|
-
"type": {
|
|
4590
|
-
"text": "boolean"
|
|
4591
|
-
},
|
|
4592
|
-
"description": "Indicates whether the grid is currently in interaction mode.\nIn interaction mode the user is currently interacting with a control,\nsuch as an input or a select, within a cell.\nIn interaction mode keyboard navigation between cells is disabled.\nInteraction mode also prevents the focus target cell of that section of\nthe grid from receiving focus, allowing the user to switch focus to\ncontrols in adjacent cells, rather than focussing the outer cell\nitself.",
|
|
4593
|
-
"fieldName": "interacting",
|
|
4594
|
-
"inheritedFrom": {
|
|
4595
|
-
"name": "KeyboardNavigationMixin",
|
|
4596
|
-
"module": "src/vaadin-grid-keyboard-navigation-mixin.js"
|
|
4597
|
-
}
|
|
4598
|
-
},
|
|
4599
|
-
{
|
|
4600
|
-
"name": "is-attached",
|
|
4601
|
-
"fieldName": "isAttached"
|
|
4602
|
-
},
|
|
4603
4558
|
{
|
|
4604
4559
|
"name": "is-item-selectable",
|
|
4605
4560
|
"type": {
|
|
@@ -4731,18 +4686,6 @@
|
|
|
4731
4686
|
"name": "DataProviderMixin",
|
|
4732
4687
|
"module": "src/vaadin-grid-data-provider-mixin.js"
|
|
4733
4688
|
}
|
|
4734
|
-
},
|
|
4735
|
-
{
|
|
4736
|
-
"name": "tabindex",
|
|
4737
|
-
"type": {
|
|
4738
|
-
"text": "number"
|
|
4739
|
-
},
|
|
4740
|
-
"description": "Indicates whether the element can be focused and where it participates in sequential keyboard navigation.",
|
|
4741
|
-
"fieldName": "tabindex",
|
|
4742
|
-
"inheritedFrom": {
|
|
4743
|
-
"name": "TabindexMixin",
|
|
4744
|
-
"package": "@vaadin/a11y-base/src/tabindex-mixin.js"
|
|
4745
|
-
}
|
|
4746
4689
|
}
|
|
4747
4690
|
],
|
|
4748
4691
|
"mixins": [
|
|
@@ -8009,6 +7952,7 @@
|
|
|
8009
7952
|
},
|
|
8010
7953
|
"description": "`true` while data is being requested from the data provider.",
|
|
8011
7954
|
"attribute": "loading",
|
|
7955
|
+
"readonly": true,
|
|
8012
7956
|
"inheritedFrom": {
|
|
8013
7957
|
"name": "DataProviderMixin",
|
|
8014
7958
|
"module": "src/vaadin-grid-data-provider-mixin.js"
|
|
@@ -8495,26 +8439,6 @@
|
|
|
8495
8439
|
"module": "src/vaadin-grid-drag-and-drop-mixin.js"
|
|
8496
8440
|
}
|
|
8497
8441
|
},
|
|
8498
|
-
{
|
|
8499
|
-
"name": "interacting",
|
|
8500
|
-
"type": {
|
|
8501
|
-
"text": "boolean"
|
|
8502
|
-
},
|
|
8503
|
-
"description": "Indicates whether the grid is currently in interaction mode.\nIn interaction mode the user is currently interacting with a control,\nsuch as an input or a select, within a cell.\nIn interaction mode keyboard navigation between cells is disabled.\nInteraction mode also prevents the focus target cell of that section of\nthe grid from receiving focus, allowing the user to switch focus to\ncontrols in adjacent cells, rather than focussing the outer cell\nitself.",
|
|
8504
|
-
"fieldName": "interacting",
|
|
8505
|
-
"inheritedFrom": {
|
|
8506
|
-
"name": "KeyboardNavigationMixin",
|
|
8507
|
-
"module": "src/vaadin-grid-keyboard-navigation-mixin.js"
|
|
8508
|
-
}
|
|
8509
|
-
},
|
|
8510
|
-
{
|
|
8511
|
-
"name": "is-attached",
|
|
8512
|
-
"fieldName": "isAttached",
|
|
8513
|
-
"inheritedFrom": {
|
|
8514
|
-
"name": "GridMixin",
|
|
8515
|
-
"module": "src/vaadin-grid-mixin.js"
|
|
8516
|
-
}
|
|
8517
|
-
},
|
|
8518
8442
|
{
|
|
8519
8443
|
"name": "is-item-selectable",
|
|
8520
8444
|
"type": {
|
|
@@ -8646,18 +8570,6 @@
|
|
|
8646
8570
|
"name": "DataProviderMixin",
|
|
8647
8571
|
"module": "src/vaadin-grid-data-provider-mixin.js"
|
|
8648
8572
|
}
|
|
8649
|
-
},
|
|
8650
|
-
{
|
|
8651
|
-
"name": "tabindex",
|
|
8652
|
-
"type": {
|
|
8653
|
-
"text": "number"
|
|
8654
|
-
},
|
|
8655
|
-
"description": "Indicates whether the element can be focused and where it participates in sequential keyboard navigation.",
|
|
8656
|
-
"fieldName": "tabindex",
|
|
8657
|
-
"inheritedFrom": {
|
|
8658
|
-
"name": "TabindexMixin",
|
|
8659
|
-
"package": "@vaadin/a11y-base/src/tabindex-mixin.js"
|
|
8660
|
-
}
|
|
8661
8573
|
}
|
|
8662
8574
|
]
|
|
8663
8575
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaadin/grid",
|
|
3
|
-
"version": "25.1.0-
|
|
3
|
+
"version": "25.1.0-beta2",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -45,20 +45,20 @@
|
|
|
45
45
|
],
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@open-wc/dedupe-mixin": "^1.3.0",
|
|
48
|
-
"@vaadin/a11y-base": "25.1.0-
|
|
49
|
-
"@vaadin/checkbox": "25.1.0-
|
|
50
|
-
"@vaadin/component-base": "25.1.0-
|
|
51
|
-
"@vaadin/lit-renderer": "25.1.0-
|
|
52
|
-
"@vaadin/text-field": "25.1.0-
|
|
53
|
-
"@vaadin/vaadin-themable-mixin": "25.1.0-
|
|
48
|
+
"@vaadin/a11y-base": "25.1.0-beta2",
|
|
49
|
+
"@vaadin/checkbox": "25.1.0-beta2",
|
|
50
|
+
"@vaadin/component-base": "25.1.0-beta2",
|
|
51
|
+
"@vaadin/lit-renderer": "25.1.0-beta2",
|
|
52
|
+
"@vaadin/text-field": "25.1.0-beta2",
|
|
53
|
+
"@vaadin/vaadin-themable-mixin": "25.1.0-beta2",
|
|
54
54
|
"lit": "^3.0.0"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@vaadin/aura": "25.1.0-
|
|
58
|
-
"@vaadin/chai-plugins": "25.1.0-
|
|
59
|
-
"@vaadin/test-runner-commands": "25.1.0-
|
|
57
|
+
"@vaadin/aura": "25.1.0-beta2",
|
|
58
|
+
"@vaadin/chai-plugins": "25.1.0-beta2",
|
|
59
|
+
"@vaadin/test-runner-commands": "25.1.0-beta2",
|
|
60
60
|
"@vaadin/testing-helpers": "^2.0.0",
|
|
61
|
-
"@vaadin/vaadin-lumo-styles": "25.1.0-
|
|
61
|
+
"@vaadin/vaadin-lumo-styles": "25.1.0-beta2",
|
|
62
62
|
"sinon": "^21.0.0"
|
|
63
63
|
},
|
|
64
64
|
"customElements": "custom-elements.json",
|
|
@@ -66,5 +66,5 @@
|
|
|
66
66
|
"web-types.json",
|
|
67
67
|
"web-types.lit.json"
|
|
68
68
|
],
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "ffbedbae08a5160d13bcd1c6fcaa328df5103a05"
|
|
70
70
|
}
|
|
@@ -39,7 +39,6 @@ export const ColumnBaseMixin = (superClass) =>
|
|
|
39
39
|
/**
|
|
40
40
|
* When true, the column is frozen. When a column inside of a column group is frozen,
|
|
41
41
|
* all of the sibling columns inside the group will get frozen also.
|
|
42
|
-
* @type {boolean}
|
|
43
42
|
*/
|
|
44
43
|
frozen: {
|
|
45
44
|
type: Boolean,
|
|
@@ -55,7 +54,6 @@ export const ColumnBaseMixin = (superClass) =>
|
|
|
55
54
|
*
|
|
56
55
|
* Column can not be set as `frozen` and `frozenToEnd` at the same time.
|
|
57
56
|
* @attr {boolean} frozen-to-end
|
|
58
|
-
* @type {boolean}
|
|
59
57
|
*/
|
|
60
58
|
frozenToEnd: {
|
|
61
59
|
type: Boolean,
|
|
@@ -71,7 +69,6 @@ export const ColumnBaseMixin = (superClass) =>
|
|
|
71
69
|
* while navigating to help user identify the current row as uniquely as possible.
|
|
72
70
|
*
|
|
73
71
|
* @attr {boolean} row-header
|
|
74
|
-
* @type {boolean}
|
|
75
72
|
*/
|
|
76
73
|
rowHeader: {
|
|
77
74
|
type: Boolean,
|
|
@@ -128,7 +125,6 @@ export const ColumnBaseMixin = (superClass) =>
|
|
|
128
125
|
},
|
|
129
126
|
|
|
130
127
|
/**
|
|
131
|
-
* @type {boolean}
|
|
132
128
|
* @protected
|
|
133
129
|
*/
|
|
134
130
|
_lastFrozen: {
|
|
@@ -138,7 +134,6 @@ export const ColumnBaseMixin = (superClass) =>
|
|
|
138
134
|
},
|
|
139
135
|
|
|
140
136
|
/**
|
|
141
|
-
* @type {boolean}
|
|
142
137
|
* @protected
|
|
143
138
|
*/
|
|
144
139
|
_bodyContentHidden: {
|
|
@@ -148,7 +143,6 @@ export const ColumnBaseMixin = (superClass) =>
|
|
|
148
143
|
},
|
|
149
144
|
|
|
150
145
|
/**
|
|
151
|
-
* @type {boolean}
|
|
152
146
|
* @protected
|
|
153
147
|
*/
|
|
154
148
|
_firstFrozenToEnd: {
|
|
@@ -847,7 +841,6 @@ export const GridColumnMixin = (superClass) =>
|
|
|
847
841
|
/**
|
|
848
842
|
* Flex grow ratio for the cell widths. When set to 0, cell width is fixed.
|
|
849
843
|
* @attr {number} flex-grow
|
|
850
|
-
* @type {number}
|
|
851
844
|
*/
|
|
852
845
|
flexGrow: {
|
|
853
846
|
type: Number,
|
|
@@ -914,7 +907,6 @@ export const GridColumnMixin = (superClass) =>
|
|
|
914
907
|
*
|
|
915
908
|
* The column width may still grow larger when `flexGrow` is not 0.
|
|
916
909
|
* @attr {boolean} auto-width
|
|
917
|
-
* @type {boolean}
|
|
918
910
|
*/
|
|
919
911
|
autoWidth: {
|
|
920
912
|
type: Boolean,
|
|
@@ -17,7 +17,6 @@ export const ColumnReorderingMixin = (superClass) =>
|
|
|
17
17
|
/**
|
|
18
18
|
* Set to true to allow column reordering.
|
|
19
19
|
* @attr {boolean} column-reordering-allowed
|
|
20
|
-
* @type {boolean}
|
|
21
20
|
*/
|
|
22
21
|
columnReorderingAllowed: {
|
|
23
22
|
type: Boolean,
|
|
@@ -63,8 +62,24 @@ export const ColumnReorderingMixin = (superClass) =>
|
|
|
63
62
|
}
|
|
64
63
|
}
|
|
65
64
|
|
|
65
|
+
/** @private */
|
|
66
|
+
_cancelReorderForMultiTouch(e) {
|
|
67
|
+
if (e.touches.length > 1) {
|
|
68
|
+
clearTimeout(this._startTouchReorderTimeout);
|
|
69
|
+
if (this._draggedColumn) {
|
|
70
|
+
this._onTrackEnd();
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
|
|
66
77
|
/** @private */
|
|
67
78
|
_onTouchStart(e) {
|
|
79
|
+
if (this._cancelReorderForMultiTouch(e)) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
|
|
68
83
|
// Touch event, delay activation by 100ms
|
|
69
84
|
this._startTouchReorderTimeout = setTimeout(() => {
|
|
70
85
|
this._onTrackStart({
|
|
@@ -78,6 +93,10 @@ export const ColumnReorderingMixin = (superClass) =>
|
|
|
78
93
|
|
|
79
94
|
/** @private */
|
|
80
95
|
_onTouchMove(e) {
|
|
96
|
+
if (this._cancelReorderForMultiTouch(e)) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
81
100
|
if (this._draggedColumn) {
|
|
82
101
|
e.preventDefault();
|
|
83
102
|
}
|
|
@@ -16,8 +16,23 @@ export const ColumnResizingMixin = (superClass) =>
|
|
|
16
16
|
const scroller = this.$.scroller;
|
|
17
17
|
addListener(scroller, 'track', this._onHeaderTrack.bind(this));
|
|
18
18
|
|
|
19
|
-
//
|
|
20
|
-
scroller.addEventListener('
|
|
19
|
+
// Cancel resizing on multi-touch (e.g. pinch-zoom)
|
|
20
|
+
scroller.addEventListener('touchstart', (e) => {
|
|
21
|
+
if (e.touches.length > 1) {
|
|
22
|
+
scroller.removeAttribute('column-resizing');
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
// Disallow scrolling while resizing, but allow multi-touch gestures
|
|
27
|
+
scroller.addEventListener('touchmove', (e) => {
|
|
28
|
+
if (e.touches.length > 1) {
|
|
29
|
+
scroller.removeAttribute('column-resizing');
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (scroller.hasAttribute('column-resizing')) {
|
|
33
|
+
e.preventDefault();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
21
36
|
|
|
22
37
|
// Disable contextmenu on any resize separator.
|
|
23
38
|
scroller.addEventListener('contextmenu', (e) => e.target.part.contains('resize-handle') && e.preventDefault());
|
|
@@ -30,6 +45,11 @@ export const ColumnResizingMixin = (superClass) =>
|
|
|
30
45
|
_onHeaderTrack(e) {
|
|
31
46
|
const handle = e.target;
|
|
32
47
|
if (handle.part.contains('resize-handle')) {
|
|
48
|
+
// Ignore track events after multi-touch cancelled resizing
|
|
49
|
+
if (e.detail.state !== 'start' && !this.$.scroller.hasAttribute('column-resizing')) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
33
53
|
const cell = handle.parentElement;
|
|
34
54
|
let column = cell._column;
|
|
35
55
|
|
|
@@ -18,7 +18,6 @@ export const DataProviderMixin = (superClass) =>
|
|
|
18
18
|
/**
|
|
19
19
|
* The number of root-level items in the grid.
|
|
20
20
|
* @attr {number} size
|
|
21
|
-
* @type {number}
|
|
22
21
|
*/
|
|
23
22
|
size: {
|
|
24
23
|
type: Number,
|
|
@@ -38,7 +37,6 @@ export const DataProviderMixin = (superClass) =>
|
|
|
38
37
|
/**
|
|
39
38
|
* Number of items fetched at a time from the dataprovider.
|
|
40
39
|
* @attr {number} page-size
|
|
41
|
-
* @type {number}
|
|
42
40
|
*/
|
|
43
41
|
pageSize: {
|
|
44
42
|
type: Number,
|
|
@@ -82,7 +82,6 @@ export const KeyboardNavigationMixin = (superClass) =>
|
|
|
82
82
|
* the grid from receiving focus, allowing the user to switch focus to
|
|
83
83
|
* controls in adjacent cells, rather than focussing the outer cell
|
|
84
84
|
* itself.
|
|
85
|
-
* @type {boolean}
|
|
86
85
|
* @private
|
|
87
86
|
*/
|
|
88
87
|
interacting: {
|
package/src/vaadin-grid-mixin.js
CHANGED
|
@@ -8,6 +8,7 @@ import { animationFrame, microTask } from '@vaadin/component-base/src/async.js';
|
|
|
8
8
|
import { isAndroid, isChrome, isFirefox, isIOS, isSafari, isTouch } from '@vaadin/component-base/src/browser-utils.js';
|
|
9
9
|
import { Debouncer } from '@vaadin/component-base/src/debounce.js';
|
|
10
10
|
import { getClosestElement } from '@vaadin/component-base/src/dom-utils.js';
|
|
11
|
+
import { setTouchAction } from '@vaadin/component-base/src/gestures.js';
|
|
11
12
|
import { SlotObserver } from '@vaadin/component-base/src/slot-observer.js';
|
|
12
13
|
import { TooltipController } from '@vaadin/component-base/src/tooltip-controller.js';
|
|
13
14
|
import { Virtualizer } from '@vaadin/component-base/src/virtualizer.js';
|
|
@@ -133,7 +134,6 @@ export const GridMixin = (superClass) =>
|
|
|
133
134
|
* Effectively, this disables the grid's virtual scrolling so that all the rows are rendered in the DOM at once.
|
|
134
135
|
* If the grid has a large number of items, using the feature is discouraged to avoid performance issues.
|
|
135
136
|
* @attr {boolean} all-rows-visible
|
|
136
|
-
* @type {boolean}
|
|
137
137
|
*/
|
|
138
138
|
allRowsVisible: {
|
|
139
139
|
type: Boolean,
|
|
@@ -248,6 +248,9 @@ export const GridMixin = (superClass) =>
|
|
|
248
248
|
ready() {
|
|
249
249
|
super.ready();
|
|
250
250
|
|
|
251
|
+
setTouchAction(this, '');
|
|
252
|
+
setTouchAction(this.$.scroller, '');
|
|
253
|
+
|
|
251
254
|
this.__virtualizer = new Virtualizer({
|
|
252
255
|
createElements: this._createScrollerRows.bind(this),
|
|
253
256
|
updateElement: this._updateScrollerItem.bind(this),
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright (c) 2016 - 2026 Vaadin Ltd.
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
|
-
import { addListener } from '@vaadin/component-base/src/gestures.js';
|
|
6
|
+
import { addListener, setTouchAction } from '@vaadin/component-base/src/gestures.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* A mixin that provides basic functionality for the
|
|
@@ -42,7 +42,6 @@ export const GridSelectionColumnBaseMixin = (superClass) =>
|
|
|
42
42
|
/**
|
|
43
43
|
* Flex grow ratio for the cell widths. When set to 0, cell width is fixed.
|
|
44
44
|
* @attr {number} flex-grow
|
|
45
|
-
* @type {number}
|
|
46
45
|
*/
|
|
47
46
|
flexGrow: {
|
|
48
47
|
type: Number,
|
|
@@ -53,7 +52,6 @@ export const GridSelectionColumnBaseMixin = (superClass) =>
|
|
|
53
52
|
/**
|
|
54
53
|
* When true, all the items are selected.
|
|
55
54
|
* @attr {boolean} select-all
|
|
56
|
-
* @type {boolean}
|
|
57
55
|
*/
|
|
58
56
|
selectAll: {
|
|
59
57
|
type: Boolean,
|
|
@@ -65,7 +63,6 @@ export const GridSelectionColumnBaseMixin = (superClass) =>
|
|
|
65
63
|
/**
|
|
66
64
|
* When true, the active item gets automatically selected.
|
|
67
65
|
* @attr {boolean} auto-select
|
|
68
|
-
* @type {boolean}
|
|
69
66
|
*/
|
|
70
67
|
autoSelect: {
|
|
71
68
|
type: Boolean,
|
|
@@ -76,7 +73,6 @@ export const GridSelectionColumnBaseMixin = (superClass) =>
|
|
|
76
73
|
/**
|
|
77
74
|
* When true, rows can be selected by dragging over the selection column.
|
|
78
75
|
* @attr {boolean} drag-select
|
|
79
|
-
* @type {boolean}
|
|
80
76
|
*/
|
|
81
77
|
dragSelect: {
|
|
82
78
|
type: Boolean,
|
|
@@ -118,6 +114,7 @@ export const GridSelectionColumnBaseMixin = (superClass) =>
|
|
|
118
114
|
this.__onCellMouseDown = this.__onCellMouseDown.bind(this);
|
|
119
115
|
this.__onGridInteraction = this.__onGridInteraction.bind(this);
|
|
120
116
|
this.__onActiveItemChanged = this.__onActiveItemChanged.bind(this);
|
|
117
|
+
this.__onTouchStart = this.__onTouchStart.bind(this);
|
|
121
118
|
this.__onSelectRowCheckboxChange = this.__onSelectRowCheckboxChange.bind(this);
|
|
122
119
|
this.__onSelectAllCheckboxChange = this.__onSelectAllCheckboxChange.bind(this);
|
|
123
120
|
}
|
|
@@ -130,6 +127,7 @@ export const GridSelectionColumnBaseMixin = (superClass) =>
|
|
|
130
127
|
this._grid.addEventListener('keydown', this.__onGridInteraction, { capture: true });
|
|
131
128
|
this._grid.addEventListener('mousedown', this.__onGridInteraction);
|
|
132
129
|
this._grid.addEventListener('active-item-changed', this.__onActiveItemChanged);
|
|
130
|
+
this._grid.addEventListener('touchstart', this.__onTouchStart);
|
|
133
131
|
}
|
|
134
132
|
}
|
|
135
133
|
|
|
@@ -141,6 +139,7 @@ export const GridSelectionColumnBaseMixin = (superClass) =>
|
|
|
141
139
|
this._grid.removeEventListener('keydown', this.__onGridInteraction, { capture: true });
|
|
142
140
|
this._grid.removeEventListener('mousedown', this.__onGridInteraction);
|
|
143
141
|
this._grid.removeEventListener('active-item-changed', this.__onActiveItemChanged);
|
|
142
|
+
this._grid.removeEventListener('touchstart', this.__onTouchStart);
|
|
144
143
|
}
|
|
145
144
|
}
|
|
146
145
|
|
|
@@ -178,6 +177,7 @@ export const GridSelectionColumnBaseMixin = (superClass) =>
|
|
|
178
177
|
checkbox.addEventListener('change', this.__onSelectRowCheckboxChange);
|
|
179
178
|
root.appendChild(checkbox);
|
|
180
179
|
addListener(root, 'track', this.__onCellTrack);
|
|
180
|
+
setTouchAction(root, 'pinch-zoom');
|
|
181
181
|
root.addEventListener('mousedown', this.__onCellMouseDown);
|
|
182
182
|
root.addEventListener('click', this.__onCellClick);
|
|
183
183
|
}
|
|
@@ -234,6 +234,10 @@ export const GridSelectionColumnBaseMixin = (superClass) =>
|
|
|
234
234
|
this.__dragCurrentY = event.detail.y;
|
|
235
235
|
this.__dragDy = event.detail.dy;
|
|
236
236
|
if (event.detail.state === 'start') {
|
|
237
|
+
// Don't start drag-select during multi-touch (e.g. pinch-zoom)
|
|
238
|
+
if (this.__multiTouchActive) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
237
241
|
const renderedRows = this._grid._getRenderedRows();
|
|
238
242
|
// Get the row where the drag started
|
|
239
243
|
const dragStartRow = renderedRows.find((row) => row.contains(event.currentTarget.assignedSlot));
|
|
@@ -266,6 +270,18 @@ export const GridSelectionColumnBaseMixin = (superClass) =>
|
|
|
266
270
|
}
|
|
267
271
|
}
|
|
268
272
|
|
|
273
|
+
/** @private */
|
|
274
|
+
__onTouchStart(e) {
|
|
275
|
+
if (e.touches.length > 1) {
|
|
276
|
+
this.__multiTouchActive = true;
|
|
277
|
+
// Cancel in-progress drag-select on multi-touch (e.g. pinch-zoom)
|
|
278
|
+
this.__dragStartIndex = undefined;
|
|
279
|
+
this.__dragStartItem = undefined;
|
|
280
|
+
} else {
|
|
281
|
+
this.__multiTouchActive = false;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
269
285
|
/** @private */
|
|
270
286
|
__onCellClick(e) {
|
|
271
287
|
if (this.__dragStartIndex !== undefined) {
|
|
@@ -16,7 +16,6 @@ export const SortMixin = (superClass) =>
|
|
|
16
16
|
/**
|
|
17
17
|
* When `true`, all `<vaadin-grid-sorter>` are applied for sorting.
|
|
18
18
|
* @attr {boolean} multi-sort
|
|
19
|
-
* @type {boolean}
|
|
20
19
|
*/
|
|
21
20
|
multiSort: {
|
|
22
21
|
type: Boolean,
|
|
@@ -48,7 +47,6 @@ export const SortMixin = (superClass) =>
|
|
|
48
47
|
* `multiSort` property. If `multiSortOnShiftClick` is true, the multiSort property is effectively ignored.
|
|
49
48
|
*
|
|
50
49
|
* @attr {boolean} multi-sort-on-shift-click
|
|
51
|
-
* @type {boolean}
|
|
52
50
|
*/
|
|
53
51
|
multiSortOnShiftClick: {
|
|
54
52
|
type: Boolean,
|
|
@@ -15,7 +15,6 @@ export const GridTreeToggleMixin = (superClass) =>
|
|
|
15
15
|
/**
|
|
16
16
|
* Current level of the tree represented with a horizontal offset
|
|
17
17
|
* of the toggle button.
|
|
18
|
-
* @type {number}
|
|
19
18
|
*/
|
|
20
19
|
level: {
|
|
21
20
|
type: Number,
|
|
@@ -26,7 +25,6 @@ export const GridTreeToggleMixin = (superClass) =>
|
|
|
26
25
|
|
|
27
26
|
/**
|
|
28
27
|
* Hides the toggle icon and disables toggling a tree sublevel.
|
|
29
|
-
* @type {boolean}
|
|
30
28
|
*/
|
|
31
29
|
leaf: {
|
|
32
30
|
type: Boolean,
|
|
@@ -36,7 +34,6 @@ export const GridTreeToggleMixin = (superClass) =>
|
|
|
36
34
|
|
|
37
35
|
/**
|
|
38
36
|
* Sublevel toggle state.
|
|
39
|
-
* @type {boolean}
|
|
40
37
|
*/
|
|
41
38
|
expanded: {
|
|
42
39
|
type: Boolean,
|